<?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>228984</bug_id>
          
          <creation_ts>2021-08-10 23:01:45 -0700</creation_ts>
          <short_desc>PCM: Support ephemeral measurement with non-persistent WebCore::PrivateClickMeasurement</short_desc>
          <delta_ts>2021-08-23 17:33:42 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783397</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-10 23:01:45 -0700</bug_when>
    <thetext>We should support ephemeral measurement with non-persistent WebCore::PrivateClickMeasurement for direct response advertising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783398</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-10 23:02:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/81778213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783401</commentid>
    <comment_count>2</comment_count>
      <attachid>435325</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-10 23:17:19 -0700</bug_when>
    <thetext>Created attachment 435325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783791</commentid>
    <comment_count>3</comment_count>
      <attachid>435325</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-12 04:52:04 -0700</bug_when>
    <thetext>Comment on attachment 435325
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1521
&gt; +void WebResourceLoadStatisticsStore::attributePrivateClickMeasurement(const PrivateClickMeasurement::SourceSite&amp; sourceSite, const PrivateClickMeasurement::AttributionDestinationSite&amp; destinationSite, PrivateClickMeasurement::AttributionTriggerData&amp;&amp; attributionTriggerData, std::optional&lt;PrivateClickMeasurement&gt; ephemeralMeasurement, CompletionHandler&lt;void(std::optional&lt;WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData&gt;)&gt;&amp;&amp; completionHandler)

Should probably be optional&lt;&gt;&amp;&amp; since that could otherwise trigger ref/unref

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1530
&gt; +    postTask([this, sourceSite, destinationSite, attributionTriggerData = WTFMove(attributionTriggerData), ephemeralMeasurement, completionHandler = WTFMove(completionHandler)]() mutable {

postTask probably means going to a background thread.
In that case we should isolate copy ephemeralMeasurement which has some strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783863</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-12 10:05:50 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 435325 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435325&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1521
&gt; &gt; +void WebResourceLoadStatisticsStore::attributePrivateClickMeasurement(const PrivateClickMeasurement::SourceSite&amp; sourceSite, const PrivateClickMeasurement::AttributionDestinationSite&amp; destinationSite, PrivateClickMeasurement::AttributionTriggerData&amp;&amp; attributionTriggerData, std::optional&lt;PrivateClickMeasurement&gt; ephemeralMeasurement, CompletionHandler&lt;void(std::optional&lt;WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData&gt;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Should probably be optional&lt;&gt;&amp;&amp; since that could otherwise trigger ref/unref
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1530
&gt; &gt; +    postTask([this, sourceSite, destinationSite, attributionTriggerData = WTFMove(attributionTriggerData), ephemeralMeasurement, completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; postTask probably means going to a background thread.
&gt; In that case we should isolate copy ephemeralMeasurement which has some
&gt; strings.

Thanks, Youenn! Will fix in the patch that also has the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783981</commentid>
    <comment_count>5</comment_count>
      <attachid>435456</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-12 16:27:19 -0700</bug_when>
    <thetext>Created attachment 435456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785204</commentid>
    <comment_count>6</comment_count>
      <attachid>435456</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-08-18 13:27:35 -0700</bug_when>
    <thetext>Comment on attachment 435456
Patch

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

Needs to be rebased to fix some data races but otherwise LGTM.

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:50
&gt; +enum class PrivateClickMeasurementAttributionPersistent : bool { Yes, No };

I think we usually use { No, Yes }.

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:392
&gt; +    PrivateClickMeasurementAttributionPersistent m_isPersistent;

You may need to set the default value to be ::Yes, I think enums default to 0 which will be ::No if you change the ordering above.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:248
&gt; +        m_ephemeralMeasurement = measurement;

m_ephemeralMeasurement = WTFMove(measurement) I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786546</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-23 14:05:51 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #6)
&gt; Comment on attachment 435456 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435456&amp;action=review
&gt; 
&gt; Needs to be rebased to fix some data races but otherwise LGTM.

I saw that. Will fix.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:50
&gt; &gt; +enum class PrivateClickMeasurementAttributionPersistent : bool { Yes, No };
&gt; 
&gt; I think we usually use { No, Yes }.

Will fix.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:392
&gt; &gt; +    PrivateClickMeasurementAttributionPersistent m_isPersistent;
&gt; 
&gt; You may need to set the default value to be ::Yes, I think enums default to
&gt; 0 which will be ::No if you change the ordering above.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:248
&gt; &gt; +        m_ephemeralMeasurement = measurement;
&gt; 
&gt; m_ephemeralMeasurement = WTFMove(measurement) I think.

Good catch. Will fix.

Thanks for the review, Kate!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786549</commentid>
    <comment_count>8</comment_count>
      <attachid>435456</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-23 14:09:30 -0700</bug_when>
    <thetext>Comment on attachment 435456
Patch

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

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:300
&gt; +        resourceLoadStatistics-&gt;attributePrivateClickMeasurement(sourceSite, destinationSite, WTFMove(attributionTriggerData), WTFMove(m_ephemeralMeasurement), [this, weakThis = makeWeakPtr(*this)] (auto attributionSecondsUntilSendData) {

Please use std::exchange() instead of WTFMove() for m_ephemeralMeasurement for avoid use-after-move bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786606</commentid>
    <comment_count>9</comment_count>
      <attachid>436248</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-23 16:45:57 -0700</bug_when>
    <thetext>Created attachment 436248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786610</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-08-23 16:49:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 435456 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435456&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:300
&gt; &gt; +        resourceLoadStatistics-&gt;attributePrivateClickMeasurement(sourceSite, destinationSite, WTFMove(attributionTriggerData), WTFMove(m_ephemeralMeasurement), [this, weakThis = makeWeakPtr(*this)] (auto attributionSecondsUntilSendData) {
&gt; 
&gt; Please use std::exchange() instead of WTFMove() for m_ephemeralMeasurement
&gt; for avoid use-after-move bugs.

I made this change. Thanks, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786632</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-23 17:33:40 -0700</bug_when>
    <thetext>Committed r281480 (240858@main): &lt;https://commits.webkit.org/240858@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436248.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435325</attachid>
            <date>2021-08-10 23:17:19 -0700</date>
            <delta_ts>2021-08-12 16:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228984-20210810231718.patch</filename>
            <type>text/plain</type>
            <size>22297</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBlNDExNjY0ODIxZjY1
YzQ1M2MyYjYyNjVjYTdjM2UwNmE5YjlhYS4uYmJmMjg2YmNhNTJiNTM2YzllYzQ5MjlkMDQ4Zjdi
ZGZhNmZlYjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA4LTEwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogU3VwcG9ydCBl
cGhlbWVyYWwgbWVhc3VyZW1lbnQgd2l0aCBub24tcGVyc2lzdGVudCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4OTg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTc3ODIxMz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgc3Vw
cG9ydCBlcGhlbWVyYWwgbWVhc3VyZW1lbnQgd2l0aCBub24tcGVyc2lzdGVudAorICAgICAgICBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmb3IgZGlyZWN0IHJlc3BvbnNlIGFkdmVy
dGlzaW5nLgorICAgICAgICBUaGlzIG1lYW5zIHRoZXJlIGlzIG9ubHkgb25lIHBlbmRpbmcgY2xp
Y2ssIGhlbGQgaW4gbWVtb3J5LCBhbmQKKyAgICAgICAgb25seSBzdG9yZWQgcmlnaHQgYmVmb3Jl
IHRoZSB0cmlnZ2VyaW5nIGV2ZW50IGNhdXNlcyBhdHRyaWJ1dGlvbgorICAgICAgICByZXBvcnRz
IHRvIGJlIHNjaGVkdWxlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoZSBwbGFuIGlzIHRv
IGFkZCBhIHRlc3QgYmVmb3JlIGxhbmRpbmcuCisKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAgTm93IHRha2VzIGFuIG9wdGlv
bmFsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25QZXJzaXN0ZW50CisgICAgICAg
ICAgICBwYXJhbWV0ZXIsIHNldCB0byBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
UGVyc2lzdGVudDo6WWVzCisgICAgICAgICAgICBieSBkZWZhdWx0LgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmlzUGVyc2lzdGVudCBjb25zdCk6CisKIDIwMjEt
MDgtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQ3Jv
c3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgc3VwcG9ydCBmb3IgQmxvYiBVUkxzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDYzODAwYjVhZGQyYjhkOTlmYTE2M2RiZWYwZWRmOTZhODg3MTg1ZmQuLjFmZmY0Y2I2OTdmYTIz
NjZiYzE4ZjY0ZjdjODA2NjYwODA4N2I4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MjEtMDgtMTAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UENNOiBTdXBwb3J0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRoIG5vbi1wZXJzaXN0ZW50IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgx
Nzc4MjEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHNob3VsZCBzdXBwb3J0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRoIG5vbi1wZXJzaXN0
ZW50CisgICAgICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGZvciBkaXJlY3Qg
cmVzcG9uc2UgYWR2ZXJ0aXNpbmcuCisgICAgICAgIFRoaXMgbWVhbnMgdGhlcmUgaXMgb25seSBv
bmUgcGVuZGluZyBjbGljaywgaGVsZCBpbiBtZW1vcnksIGFuZAorICAgICAgICBvbmx5IHN0b3Jl
ZCByaWdodCBiZWZvcmUgdGhlIHRyaWdnZXJpbmcgZXZlbnQgY2F1c2VzIGF0dHJpYnV0aW9uCisg
ICAgICAgIHJlcG9ydHMgdG8gYmUgc2NoZWR1bGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgICAgIE5vdyB0YWtlcyBhbiBvcHRpb25hbCBl
cGhlbWVyYWwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgcGFyYW1ldGVyCisgICAgICAgICAgICBh
bmQgc3RvcmVzIGl0IHJpZ2h0IGJlZm9yZSBtb3Zpbmcgb24gd2l0aCBhdHRyaWJ1dGlvbi4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAgICAgTm93IHVzZXMgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
LgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNp
Z25lZFVubGlua2FibGVUb2tlbik6CisgICAgICAgICAgICBOb3cgdXNlcyBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuCisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9u
LiBPbmx5IHN0b3JlcyBpbiBtZW1vcnkgaWYgdGhlCisgICAgICAgICAgICBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBwYXJhbWV0ZXIgaXMgbm90IG1hcmtlZCBhcyBwZXJzaXN0ZW50LgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSk6Cisg
ICAgICAgICAgICBDaGVja3MgdGhhdCB0aGUgdHJpZ2dlcmluZyBldmVudCBtYXRjaGVzIHRoZSBl
cGhlbWVyYWwgbWVhc3VyZW1lbnQgaWYKKyAgICAgICAgICAgIGl0IGV4aXN0cywgYW5kIGlmIHNv
LCBmb3J3YXJkcyBpdC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuaDoKKwogMjAyMS0wOC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBzdXBwb3J0
IGZvciBCbG9iIFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmgKaW5kZXggMmMwY2E4MmQzNmQyZWY0YWI3YThmYTAzY2FkZmViYzUyNWRhN2Nj
ZS4uOGZiODkyYzEzZTk5NTY0NTY0NTIxYjBkNjQxOTg0ZDYxYThkOWY5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTQ3LDYgKzQ3
LDggQEAgT0JKQ19DTEFTUyBSU0FCU1NBVG9rZW5CbGluZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblBlcnNp
c3RlbnQgOiBib29sIHsgWWVzLCBObyB9OworCiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUHJpb3JpdHlWYWx1ZSA9IHVpbnQzMl90OwpAQCAtODgs
NiArOTAsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWlu
ID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFNvdXJjZVNpdGUmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gcmVnaXN0cmFibGVEb21haW4gIT0gb3RoZXIucmVnaXN0cmFibGVEb21h
aW47CisgICAgICAgIH0KKwogICAgICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWdpc3RyYWJsZURvbWFpbi5tYXRj
aGVzKHVybCk7CkBAIC0xMjcsNiArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biByZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsKICAgICAgICAg
fQogCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWdpc3Ry
YWJsZURvbWFpbiAhPSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAgfQorCiAgICAg
ICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluID09IFJlZ2lzdHJhYmxlRG9tYWluIHsgdXJs
IH07CkBAIC0yOTYsMTMgKzMwOCwxNCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFByaXZhdGVD
bGlja01lYXN1cmVtZW50KCkgPSBkZWZhdWx0OwotICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBTdHJpbmcmJiBzb3Vy
Y2VEZXNjcmlwdGlvbiA9IHsgfSwgU3RyaW5nJiYgcHVyY2hhc2VyID0geyB9LCBXYWxsVGltZSB0
aW1lT2ZBZENsaWNrID0gV2FsbFRpbWU6Om5vdygpKQorICAgIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25z
dCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBTdHJpbmcmJiBz
b3VyY2VEZXNjcmlwdGlvbiA9IHsgfSwgU3RyaW5nJiYgcHVyY2hhc2VyID0geyB9LCBXYWxsVGlt
ZSB0aW1lT2ZBZENsaWNrID0gV2FsbFRpbWU6Om5vdygpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uUGVyc2lzdGVudCBpc1BlcnNpc3RlbnQgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUGVyc2lzdGVudDo6WWVzKQogICAgICAgICA6IG1fc291cmNlSUQgeyBz
b3VyY2VJRCB9CiAgICAgICAgICwgbV9zb3VyY2VTaXRlIHsgc291cmNlU2l0ZSB9CiAgICAgICAg
ICwgbV9kZXN0aW5hdGlvblNpdGUgeyBkZXN0aW5hdGlvblNpdGUgfQogICAgICAgICAsIG1fc291
cmNlRGVzY3JpcHRpb24geyBXVEZNb3ZlKHNvdXJjZURlc2NyaXB0aW9uKSB9CiAgICAgICAgICwg
bV9wdXJjaGFzZXIgeyBXVEZNb3ZlKHB1cmNoYXNlcikgfQogICAgICAgICAsIG1fdGltZU9mQWRD
bGljayB7IHRpbWVPZkFkQ2xpY2sgfQorICAgICAgICAsIG1faXNQZXJzaXN0ZW50IHsgaXNQZXJz
aXN0ZW50IH0KICAgICB7CiAgICAgfQogCkBAIC0zMjUsNiArMzM4LDcgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgU3RyaW5nJiBzb3VyY2VEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlRGVzY3JpcHRpb247IH0KICAgICBjb25zdCBTdHJpbmcmIHB1cmNoYXNlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcHVyY2hhc2VyOyB9CisgICAgYm9vbCBpc1BlcnNpc3RlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2lzUGVyc2lzdGVudCA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
UGVyc2lzdGVudDo6WWVzOyB9CiAKICAgICAvLyBNQVJLOiAtIEZyYXVkIFByZXZlbnRpb24KICAg
ICBXRUJDT1JFX0VYUE9SVCBVUkwgdG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdDsKQEAgLTM3NCw2
ICszODgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZURlc2NyaXB0aW9uOwogICAg
IFN0cmluZyBtX3B1cmNoYXNlcjsKICAgICBXYWxsVGltZSBtX3RpbWVPZkFkQ2xpY2s7CisgICAg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblBlcnNpc3RlbnQgbV9pc1BlcnNpc3Rl
bnQ7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IG1fYXR0cmli
dXRpb25UcmlnZ2VyRGF0YTsKICAgICBBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIG1fdGltZXNU
b1NlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CmluZGV4IDRmODA3NTFkZjAwMzBmNmNmMjk4ZDA0ZGQ3MDBkOTdlM2ZiMjllMWUuLmNlZjBmZDgy
NmU1NjUzNTk0MjU5MGYxMmYwMDRiNjk1NzQxYzgyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNTE4LDcgKzE1MTgsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRp
b25TaXRlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYm
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3Rp
bmF0aW9uU2l0ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50KGNvbnN0IFByaXYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvc3RUYXNrKFt0
aGlzLCBzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEg
PSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlz
LCBzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBX
VEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBlcGhlbWVyYWxNZWFzdXJlbWVudCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tS
ZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwpAQCAtMTUzNSw2ICsxNTM1LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBQcml2CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBJbnNlcnQgZXBoZW1lcmFsIG1l
YXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRyaWJ1dGlvbi4KKyAgICAgICAgaWYgKGVwaGVtZXJh
bE1lYXN1cmVtZW50KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXBoZW1lcmFsTWVh
c3VyZW1lbnQtPmlzUGVyc2lzdGVudCgpKTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3Jl
LT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCplcGhlbWVyYWxNZWFzdXJl
bWVudCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0
ZWQpOworICAgICAgICB9CisKICAgICAgICAgYXV0byBzZWNvbmRzID0gbV9zdGF0aXN0aWNzU3Rv
cmUtPmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0
aW9uU2l0ZSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CiAgICAgICAgIHBvc3RU
YXNrUmVwbHkoW3NlY29uZHMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZWNv
bmRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRl
eCAwYjI2MTA0ZmUyMGU5OTZmY2JlZTQxZGY3ZGEyNjlhMDU2YjA5NDM4Li5kYmNmZGQ5ODBmNGZm
NDQwMDgxMzA5NjViMjNjZmQ4ZmZiNTczNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgIC8v
IFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCiAgICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CiAgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0gICAgdm9p
ZCBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmKTsKKyAgICB2b2lkIGF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmKTsKICAgICB2b2lk
IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYpOwogICAg
IHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwogICAgIHZvaWQgY2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKaW5kZXggMjEz
Y2E3YzZjMzVjMDQ2NDBjZjE0MTY0YWRjZThlNTU4MmEzNWVmOS4uYmNjNGIyMDA1ZDJiZWM4NDgx
YzRmZjNlM2ZiZDJjMjM4ZjdhY2NmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcApA
QCAtNjcsMTcgKzY3LDE3IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgc3RhcnRUaW1l
cig1X3MpOwogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmVV
bmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbikKK3ZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50KQogewogICAgIGlmICghZmVhdHVyZUVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXJFeHBpcmVkKCk7CiAKLSAgICBpZiAo
YXR0cmlidXRpb24uZXBoZW1lcmFsU291cmNlTm9uY2UoKSkgewotICAgICAgICBhdXRvIGF0dHJp
YnV0aW9uQ29weSA9IGF0dHJpYnV0aW9uOworICAgIGlmIChtZWFzdXJlbWVudC5lcGhlbWVyYWxT
b3VyY2VOb25jZSgpKSB7CisgICAgICAgIGF1dG8gbWVhc3VyZW1lbnRDb3B5ID0gbWVhc3VyZW1l
bnQ7CiAgICAgICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBjbG9zZSBpbiB0aW1lIHRv
IHRoZSBuYXZpZ2F0aW9uYWwgY2xpY2sgd2hpY2ggbWFrZXMgaXQgbGlrZWx5IHRvIGJlIHBlcnNv
bmFsbHkgaWRlbnRpZmlhYmxlLgotICAgICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZNb3ZlKGF0
dHJpYnV0aW9uQ29weSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9y
dEVuZHBvaW50OjpTb3VyY2UsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCB0aGlzXSAoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3QgU3Ry
aW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpIHsKKyAgICAgICAgZ2V0VG9rZW5QdWJsaWNLZXkoV1RG
TW92ZShtZWFzdXJlbWVudENvcHkpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludDo6U291cmNlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0
YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGUsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpc10gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1lbnQsIGNv
bnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtODUsMTAgKzg1LDEwIEBAIHZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQotICAgICAgICAgICAgICAg
IGF0dHJpYnV0aW9uLnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKG1fZnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5saW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAgICAgICBt
ZWFzdXJlbWVudC5zZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmctPnVubGlua2FibGVUb2tlbik7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3Nh
Z2UgPSBhdHRyaWJ1dGlvbi5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9rZW4o
cHVibGljS2V5QmFzZTY0VVJMKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGVycm9yTWVz
c2FnZSA9IG1lYXN1cmVtZW50LmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tl
bihwdWJsaWNLZXlCYXNlNjRVUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBp
biBjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9rZW4oKTogJyV7cHVibGljfXMi
LCBlcnJvck1lc3NhZ2UtPnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2Fn
ZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1h
a2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsICplcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTYsMTcgKzk2LDE0IEBAIHZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICAgICAg
Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFdURk1vdmUoYXR0cmlidXRpb24pKTsKKyAgICAgICAg
ICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbihXVEZNb3ZlKG1lYXN1cmVtZW50KSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gU3RvcmluZyBhIGNsaWNrLiJfcyk7CiAKLSNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZN
b3ZlKGF0dHJpYnV0aW9uKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6
OlVuYXR0cmlidXRlZCk7Ci0jZW5kaWYKKyAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXVEZNb3ZlKG1lYXN1cmVtZW50KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGU6OlVuYXR0cmlidXRlZCk7CiB9CiAKIHN0YXRpYyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMg
Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMoVVJMJiYgdXJsLCBjb25zdCBTdHJpbmcmIGh0
dHBNZXRob2QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQsIGJvb2wgaXNEZWJ1
Z01vZGVFbmFibGVkKQpAQCAtMTgyLDE0ICsxNzksMTQgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYKIAogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVk
VW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24pCit2
b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1lbnQpCiB7CiAgICAgaWYgKCFm
ZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGd1YXJh
bnRlZWQgdG8gYmUgY2xvc2UgaW4gdGltZSB0byB0aGUgbmF2aWdhdGlvbmFsIGNsaWNrIHdoaWNo
IG1ha2VzIGl0IGxpa2VseSB0byBiZSBwZXJzb25hbGx5IGlkZW50aWZpYWJsZS4KICAgICBhdXRv
IHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVk
OjpQZXJzb25hbGx5SWRlbnRpZmlhYmxlOwotICAgIGF1dG8gdG9rZW5TaWduYXR1cmVVUkwgPSBh
dHRyaWJ1dGlvbi50b2tlblNpZ25hdHVyZVVSTCgpOworICAgIGF1dG8gdG9rZW5TaWduYXR1cmVV
UkwgPSBtZWFzdXJlbWVudC50b2tlblNpZ25hdHVyZVVSTCgpOwogICAgIGlmIChtX3Rva2VuU2ln
bmF0dXJlVVJMRm9yVGVzdGluZykgewogICAgICAgICB0b2tlblNpZ25hdHVyZVVSTCA9ICptX3Rv
a2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1MzY0KQpAQCAt
MTk5LDEyICsxOTYsMTIgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omdl
dFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXIKICAgICBpZiAodG9rZW5T
aWduYXR1cmVVUkwuaXNFbXB0eSgpIHx8ICF0b2tlblNpZ25hdHVyZVVSTC5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0ZU5ldHdv
cmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwpLCBh
dHRyaWJ1dGlvbi50b2tlblNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIGRlYnVnTW9k
ZUVuYWJsZWQoKSk7CisgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya0xv
YWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVSTCksIG1lYXN1
cmVtZW50LnRva2VuU2lnbmF0dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCwgZGVidWdNb2RlRW5h
YmxlZCgpKTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICJBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIik7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQs
IE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6Okxv
ZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJs
ZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKTsKIAotICAgIG1fbmV0d29ya0xvYWRGdW5jdGlv
bihXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCB0aGlzLCBhdHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pXSAoYXV0byYgZXJyb3Is
IGF1dG8mIHJlc3BvbnNlLCBhdXRvJiBqc29uT2JqZWN0KSBtdXRhYmxlIHsKKyAgICBtX25ldHdv
cmtMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgdGhpcywgbWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVtZW50KV0g
KGF1dG8mIGVycm9yLCBhdXRvJiByZXNwb25zZSwgYXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIyNSwx
MCArMjIyLDEwIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWdu
ZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAgICAgICAgIH0KICAgICAgICAg
Ly8gRklYIE5PVyEKICAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
ZykKLSAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgbV9mcmF1
ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5zZWNyZXRUb2tlbiwgbV9mcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nLT5zaWduYXR1cmUsIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9y
VGVzdGluZy0+a2V5SUQgfSk7CisgICAgICAgICAgICBtZWFzdXJlbWVudC5zZXRTb3VyY2VTZWNy
ZXRUb2tlbih7IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2VjcmV0VG9rZW4s
IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2lnbmF0dXJlLCBtX2ZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmctPmtleUlEIH0pOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVycm9yTWVzc2FnZSA9IGF0dHJp
YnV0aW9uLmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKHNpZ25hdHVyZUJhc2U2
NFVSTCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yTWVzc2FnZSA9IG1lYXN1cmVtZW50
LmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKHNpZ25hdHVyZUJhc2U2NFVSTCkp
IHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNl
U2VjcmV0VG9rZW4oKTogJyV7cHVibGljfXMiLCBlcnJvck1lc3NhZ2UtPnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNz
YWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdICJfcywgKmVycm9yTWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIz
OCwxMiArMjM1LDIxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRT
aWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAKICAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VT
b3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTdG9yaW5nIGEgc2VjcmV0IHRva2VuLiJfcyk7CiAKKyAg
ICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVudCks
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwor
ICAgIH0pOworCit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNl
cnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1
cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSB0eXBlKQorewor
ICAgIGlmICghbWVhc3VyZW1lbnQuaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgICAgbV9lcGhlbWVy
YWxNZWFzdXJlbWVudCA9IG1lYXN1cmVtZW50OworICAgICAgICByZXR1cm47CisgICAgfQogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlvbiksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOworICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSht
ZWFzdXJlbWVudCksIHR5cGUpOwogI2VuZGlmCi0gICAgfSk7Ci0KIH0KIAogdm9pZCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkws
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQpAQCAtMjgw
LDExICsyODYsMjEgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJp
YnV0ZShjb25zdCBTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb24KICAgICBpZiAoIWZlYXR1cmVF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2VwaGVtZXJhbE1lYXN1cmVt
ZW50KSB7CisgICAgICAgIC8vIEVwaGVtZXJhbCBtZWFzdXJlbWVudCBjYW4gb25seSBoYXZlIG9u
ZSBwZW5kaW5nIGNsaWNrLgorICAgICAgICBpZiAobV9lcGhlbWVyYWxNZWFzdXJlbWVudC0+c291
cmNlU2l0ZSgpICE9IHNvdXJjZVNpdGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChtX2VwaGVtZXJhbE1lYXN1cmVtZW50LT5kZXN0aW5hdGlvblNpdGUoKSAhPSBkZXN0aW5hdGlv
blNpdGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hdHRyaWJ1
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdU
Rk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSkgeworICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSksIG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSkgewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBzdGQ6Om51bGxv
cHQ7CisKICAgICAgICAgICAgIGlmICghYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4
IDM5MWRmNjNhNjIwNTk1NDlmMGM5ODU1NDNjMGNmNGQ3YjNlNGY4MDYuLmY1YTVmMjhkMTU2MjJi
MzBiMmY2NTAwYjc2ZTZmNjQ1Y2IwMWFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApA
QCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZ2V0VG9rZW5QdWJs
aWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZCwgRnVuY3Rpb248dm9pZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJp
YnV0aW9uLCBjb25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCk+JiYpOwogICAgIHZvaWQg
Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpOworICAg
IHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwogICAgIHZvaWQg
Y2xlYXJTZW50QXR0cmlidXRpb24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwogICAgIHZvaWQgYXR0
cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmLCBjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZSYsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJik7CiAgICAgdm9pZCBmaXJlQ29udmVyc2lvblJl
cXVlc3QoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CkBAIC04MCw2ICs4MSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBmZWF0dXJlRW5hYmxlZCgpIGNvbnN0OwogICAgIGJvb2wgZGVidWdNb2Rl
RW5hYmxlZCgpIGNvbnN0OwogCisgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4gbV9lcGhlbWVyYWxNZWFzdXJlbWVudDsKICAgICBXZWJDb3JlOjpUaW1lciBtX2ZpcmVQ
ZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyOwogICAgIGJvb2wgbV9pc1J1bm5pbmdUZXN0
IHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gbV90b2tlblB1YmxpY0tleVVSTEZv
clRlc3Rpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435456</attachid>
            <date>2021-08-12 16:27:19 -0700</date>
            <delta_ts>2021-08-23 16:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228984-20210812162718.patch</filename>
            <type>text/plain</type>
            <size>48717</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBlNDExNjY0ODIxZjY1
YzQ1M2MyYjYyNjVjYTdjM2UwNmE5YjlhYS4uNDQ4MjNlMWEwNmY0ZTFiYmU3MGRjYzBkMDIwMzAw
M2RkOGYzN2RiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA4LTEyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogU3VwcG9ydCBl
cGhlbWVyYWwgbWVhc3VyZW1lbnQgd2l0aCBub24tcGVyc2lzdGVudCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4OTg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTc3ODIxMz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgc3VwcG9ydCBmb3IgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHdpdGggbm9uLXBlcnNpc3RlbnQK
KyAgICAgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZm9yIGRpcmVjdCByZXNw
b25zZSBhZHZlcnRpc2luZy4KKyAgICAgICAgU3VjaCBhZHZlcnRpc2luZyBtZWFucyB0aGVyZSBp
cyBvbmx5IG9uZSBwZW5kaW5nIGNsaWNrLCBoZWxkIGluIG1lbW9yeSwKKyAgICAgICAgYW5kIG9u
bHkgc3RvcmVkIHJpZ2h0IGJlZm9yZSB0aGUgdHJpZ2dlcmluZyBldmVudCBjYXVzZXMgYXR0cmli
dXRpb24KKyAgICAgICAgcmVwb3J0cyB0byBiZSBzY2hlZHVsZWQuCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9u
LXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLmh0bWwKKworICAgICAgICAqIGxvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgICAgICBOb3cgdGFr
ZXMgYW4gb3B0aW9uYWwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblBlcnNpc3Rl
bnQKKyAgICAgICAgICAgIHBhcmFtZXRlciwgc2V0IHRvIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25QZXJzaXN0ZW50OjpZZXMKKyAgICAgICAgICAgIGJ5IGRlZmF1bHQuCisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNQZXJzaXN0ZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpzZXRQZXJzaXN0
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29k
ZSk6CisKIDIwMjEtMDgtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgc3VwcG9ydCBmb3IgQmxvYiBVUkxz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDYzODAwYjVhZGQyYjhkOTlmYTE2M2RiZWYwZWRmOTZhODg3MTg1ZmQuLmMw
MjI1Y2E2NDgyM2EyYTE2M2RjOTkxMmM3NmE4YzY2MjE0MWM4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTQgQEAKKzIwMjEtMDgtMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUENNOiBTdXBwb3J0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRoIG5vbi1w
ZXJzaXN0ZW50IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5ODQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgxNzc4MjEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlcGhlbWVyYWwgbWVhc3Vy
ZW1lbnQgd2l0aCBub24tcGVyc2lzdGVudAorICAgICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBmb3IgZGlyZWN0IHJlc3BvbnNlIGFkdmVydGlzaW5nLgorICAgICAgICBTdWNo
IGFkdmVydGlzaW5nIG1lYW5zIHRoZXJlIGlzIG9ubHkgb25lIHBlbmRpbmcgY2xpY2ssIGhlbGQg
aW4gbWVtb3J5LAorICAgICAgICBhbmQgb25seSBzdG9yZWQgcmlnaHQgYmVmb3JlIHRoZSB0cmln
Z2VyaW5nIGV2ZW50IGNhdXNlcyBhdHRyaWJ1dGlvbgorICAgICAgICByZXBvcnRzIHRvIGJlIHNj
aGVkdWxlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6Cisg
ICAgICAgICAgICBOb3cgdGFrZXMgYW4gb3B0aW9uYWwgZXBoZW1lcmFsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50IHBhcmFtZXRlcgorICAgICAgICAgICAgYW5kIHN0b3JlcyBpdCByaWdodCBiZWZv
cmUgbW92aW5nIG9uIHdpdGggYXR0cmlidXRpb24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50
Rm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgor
ICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAgICAgTm93IHVz
ZXMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpLgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6CisgICAgICAgICAgICBOb3cgdXNlcyBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkuCisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNl
IGZ1bmN0aW9uLiBPbmx5IHN0b3JlcyBpbiBtZW1vcnkgaWYgdGhlCisgICAgICAgICAgICBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBwYXJhbWV0ZXIgaXMgbm90IG1hcmtlZCBhcyBwZXJzaXN0ZW50
LgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJp
YnV0ZSk6CisgICAgICAgICAgICBDaGVja3MgdGhhdCB0aGUgdHJpZ2dlcmluZyBldmVudCBtYXRj
aGVzIHRoZSBlcGhlbWVyYWwgbWVhc3VyZW1lbnQgaWYKKyAgICAgICAgICAgIGl0IGV4aXN0cywg
YW5kIGlmIHNvLCBmb3J3YXJkcyBpdC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgor
ICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFz
dHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50
Rm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAyMS0wOC0xMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSBzdXBwb3J0IGZvciBCbG9iIFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggMmMwY2E4MmQzNmQyZWY0YWI3YThmYTAzY2FkZmVi
YzUyNWRhN2NjZS4uZTVhYmQ4N2FlNzRmYTYyNWQ0ZTBiOTVkZTQ3YWEyYzU1YzFhMmUyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAg
LTQ3LDYgKzQ3LDggQEAgT0JKQ19DTEFTUyBSU0FCU1NBVG9rZW5CbGluZGVyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblBlcnNpc3RlbnQgOiBib29sIHsgWWVzLCBObyB9OworCiBjbGFzcyBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUHJpb3JpdHlWYWx1ZSA9IHVpbnQzMl90
OwpAQCAtODgsNiArOTAsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJh
YmxlRG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwogICAgICAgICB9CiAKKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvdXJjZVNpdGUmIG90aGVyKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gcmVnaXN0cmFibGVEb21haW4gIT0gb3RoZXIucmVnaXN0
cmFibGVEb21haW47CisgICAgICAgIH0KKwogICAgICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWdpc3RyYWJsZURv
bWFpbi5tYXRjaGVzKHVybCk7CkBAIC0xMjcsNiArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiByZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsK
ICAgICAgICAgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biByZWdpc3RyYWJsZURvbWFpbiAhPSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAg
fQorCiAgICAgICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluID09IFJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH07CkBAIC0yOTYsMTMgKzMwOCwxNCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAg
IFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgPSBkZWZhdWx0OwotICAgIFByaXZhdGVDbGlja01l
YXN1cmVtZW50KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTb3VyY2VTaXRlJiBzb3VyY2VTaXRl
LCBjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBTdHJp
bmcmJiBzb3VyY2VEZXNjcmlwdGlvbiA9IHsgfSwgU3RyaW5nJiYgcHVyY2hhc2VyID0geyB9LCBX
YWxsVGltZSB0aW1lT2ZBZENsaWNrID0gV2FsbFRpbWU6Om5vdygpKQorICAgIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTb3VyY2VTaXRlJiBzb3VyY2VT
aXRlLCBjb25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBT
dHJpbmcmJiBzb3VyY2VEZXNjcmlwdGlvbiA9IHsgfSwgU3RyaW5nJiYgcHVyY2hhc2VyID0geyB9
LCBXYWxsVGltZSB0aW1lT2ZBZENsaWNrID0gV2FsbFRpbWU6Om5vdygpLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uUGVyc2lzdGVudCBpc1BlcnNpc3RlbnQgPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUGVyc2lzdGVudDo6WWVzKQogICAgICAgICA6IG1fc291
cmNlSUQgeyBzb3VyY2VJRCB9CiAgICAgICAgICwgbV9zb3VyY2VTaXRlIHsgc291cmNlU2l0ZSB9
CiAgICAgICAgICwgbV9kZXN0aW5hdGlvblNpdGUgeyBkZXN0aW5hdGlvblNpdGUgfQogICAgICAg
ICAsIG1fc291cmNlRGVzY3JpcHRpb24geyBXVEZNb3ZlKHNvdXJjZURlc2NyaXB0aW9uKSB9CiAg
ICAgICAgICwgbV9wdXJjaGFzZXIgeyBXVEZNb3ZlKHB1cmNoYXNlcikgfQogICAgICAgICAsIG1f
dGltZU9mQWRDbGljayB7IHRpbWVPZkFkQ2xpY2sgfQorICAgICAgICAsIG1faXNQZXJzaXN0ZW50
IHsgaXNQZXJzaXN0ZW50IH0KICAgICB7CiAgICAgfQogCkBAIC0zMjUsNiArMzM4LDggQEAgcHVi
bGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlRGVzY3JpcHRpb247IH0KICAgICBjb25zdCBTdHJpbmcmIHB1cmNoYXNlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcHVyY2hhc2VyOyB9CisgICAgYm9vbCBpc1BlcnNpc3RlbnQoKSBj
b25zdCB7IHJldHVybiBtX2lzUGVyc2lzdGVudCA9PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uUGVyc2lzdGVudDo6WWVzOyB9CisgICAgdm9pZCBzZXRQZXJzaXN0ZW50KFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25QZXJzaXN0ZW50IGlzUGVyc2lzdGVudCkgeyBt
X2lzUGVyc2lzdGVudCA9IGlzUGVyc2lzdGVudDsgfQogCiAgICAgLy8gTUFSSzogLSBGcmF1ZCBQ
cmV2ZW50aW9uCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHRva2VuUHVibGljS2V5VVJMKCkgY29u
c3Q7CkBAIC0zNzQsNiArMzg5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2VEZXNj
cmlwdGlvbjsKICAgICBTdHJpbmcgbV9wdXJjaGFzZXI7CiAgICAgV2FsbFRpbWUgbV90aW1lT2ZB
ZENsaWNrOworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25QZXJzaXN0ZW50
IG1faXNQZXJzaXN0ZW50OwogCiAgICAgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhPiBtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgQXR0cmlidXRpb25UaW1lVG9TZW5k
RGF0YSBtX3RpbWVzVG9TZW5kOwpAQCAtNDAyLDYgKzQxOCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICA8PCBt
X3B1cmNoYXNlcgogICAgICAgICA8PCBtX3RpbWVPZkFkQ2xpY2sKICAgICAgICAgPDwgbV9lcGhl
bWVyYWxTb3VyY2VOb25jZQorICAgICAgICA8PCBtX2lzUGVyc2lzdGVudAogICAgICAgICA8PCBt
X2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEKICAgICAgICAgPDwgbV90aW1lc1RvU2VuZDsKIH0KQEAg
LTQ0NCw2ICs0NjEsMTEgQEAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZXBoZW1l
cmFsU291cmNlTm9uY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25QZXJzaXN0ZW50PiBp
c1BlcnNpc3RlbnQ7CisgICAgZGVjb2RlciA+PiBpc1BlcnNpc3RlbnQ7CisgICAgaWYgKCFpc1Bl
cnNpc3RlbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4+IGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGE7CiAgICAgZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlm
ICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKQEAgLTQ2MCw3ICs0ODIsOCBAQCBzdGQ6Om9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZGVj
b2RlKERlY29kZXImCiAgICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIHsgV1RGTW92
ZSgqZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFpbikgfSwKICAgICAgICAgV1RGTW92ZSgqc291
cmNlRGVzY3JpcHRpb24pLAogICAgICAgICBXVEZNb3ZlKCpwdXJjaGFzZXIpLAotICAgICAgICBX
VEZNb3ZlKCp0aW1lT2ZBZENsaWNrKQorICAgICAgICBXVEZNb3ZlKCp0aW1lT2ZBZENsaWNrKSwK
KyAgICAgICAgV1RGTW92ZSgqaXNQZXJzaXN0ZW50KQogICAgIH07CiAgICAgYXR0cmlidXRpb24u
bV9lcGhlbWVyYWxTb3VyY2VOb25jZSA9IFdURk1vdmUoKmVwaGVtZXJhbFNvdXJjZU5vbmNlKTsK
ICAgICBhdHRyaWJ1dGlvbi5tX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKCphdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggNGY4MDc1MWRmMDAzMGY2Y2YyOThkMDRkZDcwMGQ5N2UzZmIy
OWUxZS4uMmFiM2Y5MzMzM2Y5YjQ4Yjk2ZTI1OTBkMjU4NGJiNTMxYTlkYWUzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE1MTgsNyAr
MTUxOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJrQWxsVW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0
ZSwgY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiBkZXN0aW5hdGlvblNpdGUsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJj
ZVNpdGUsIGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0
aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE1MjcsNyArMTUy
Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBQcml2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBwb3N0VGFzayhbdGhpcywgc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgZXBoZW1lcmFs
TWVhc3VyZW1lbnQgPSBXVEZNb3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwpAQCAtMTUz
NSw2ICsxNTM1LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphdHRy
aWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBQcml2CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBJbnNlcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50
IHJpZ2h0IGJlZm9yZSBhdHRyaWJ1dGlvbi4KKyAgICAgICAgaWYgKGVwaGVtZXJhbE1lYXN1cmVt
ZW50KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXBoZW1lcmFsTWVhc3VyZW1lbnQt
PmlzUGVyc2lzdGVudCgpKTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5pbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKCplcGhlbWVyYWxNZWFzdXJlbWVudCksIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOworICAg
ICAgICB9CisKICAgICAgICAgYXV0byBzZWNvbmRzID0gbV9zdGF0aXN0aWNzU3RvcmUtPmF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSwg
V1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHko
W3NlY29uZHMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZWNvbmRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAwYjI2MTA0
ZmUyMGU5OTZmY2JlZTQxZGY3ZGEyNjlhMDU2YjA5NDM4Li42NDI3OTk1YTZjOGE2Zjg5YzM3M2M4
YzU1ZTA1NDczOTg0MTBhOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgIC8vIFByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnQuCiAgICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSk7CiAgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0gICAgdm9pZCBhdHRyaWJ1
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmKTsKKyAgICB2b2lkIGF0dHJpYnV0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYpOwogICAgIHZvaWQgYWxsQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJik7CiAgICAgdm9pZCBj
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAgICAgdm9pZCBjbGVhclByaXZhdGVDbGlj
a01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggYTM4YjJlMjdmMzk4MjFmMDRiMDc1NGQxODBiY2Y0NmNhYzE5NzU5ZS4u
NWQ2ODI5YjI4ODAyNTRiZDAxMTMxMGE5ZmQyOWQ3ODVlZGI2ZTA1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2MTEsNiArMjYx
MSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoUAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBo
ZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9v
bCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgc2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJl
bWVudEZvclRlc3RpbmcodmFsdWUpOworICAgIAorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9
CisKKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blB1YmxpY0tleVVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwmJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggOGE3MDg0YmNh
YWM1MGEwYjkyNzU4MDJhOGY0YjViZTRkYWI1MDY0Yi4uZWE5MWVkNTk0MDNlNDlmZTI3ZGE2ODE5
MzE2NzFlOTZmZjdiZjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMzQyLDYgKzM0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhl
bWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzaW11bGF0ZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5Q
dWJsaWNLZXlVUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBVUkwmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9r
ZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBVUkwmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDJmYzcxOWUzNDdmYTAwNTA2
NmFlMzk4NzEzMmZkZTgyOTI3OTJlMWMuLmQ3OTk3NDUxYzQ1NDBjYzNkNzU2NTM0OGM3NmEyMzQ0
OTEzODJmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTY0LDYgKzE2NCw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMKICAgICBNYXJrQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Ym9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMKICAgICBTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXNzaW9uUmVzdGFydChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBBc3luYwogICAgIFNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNGUzMDE2M2E3YmJjMTY2
Yzc3NTU0MzUzNTVhYTFiOTFjZGI0MGE1YS4uMzM0ODhlNjllZmViZDcxYjZkMzBiZDJiYzdjOGZj
NTJhNzI4MzI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKQEAgLTM2MSw2ICszNjEsMTEgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bWFy
a1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQogICAgIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KCkubWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3Rp
bmcoKTsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkKK3sKKyAgICBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnNldEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyh2
YWx1ZSk7Cit9CisKIC8vIEZJWE1FOiBTd2l0Y2ggdG8gbm9uLW1vY2tlZCB0ZXN0IGRhdGEgb25j
ZSB0aGUgcmlnaHQgY3J5cHRvZ3JhcGh5IGxpYnJhcnkgaXMgYXZhaWxhYmxlIGluIG9wZW4gc291
cmNlLgogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9y
VGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBT
dHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDdkYTk1ZTk3MGJlOTUzY2ZiZWVk
ZGJiNzlkMTQ5NjQzZTNhMmU4OGIuLmE0OTcxOGRlZmRhMjM5NDg0NmFlODVjNGM3ODUyYWRhMTU2
NDEzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmco
VVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7CiAgICAgdm9pZCBtYXJrUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHZvaWQgc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9v
bCk7CiAgICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmlu
ZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25h
dHVyZSwgU3RyaW5nJiYga2V5SUQpOwogICAgIHZvaWQgZmlyZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50VGltZXJJbW1lZGlhdGVseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKaW5k
ZXggMjEzY2E3YzZjMzVjMDQ2NDBjZjE0MTY0YWRjZThlNTU4MmEzNWVmOS4uYjJjNWIyZjVjMGZl
MmMwZGUyNWQ4ZWM0MTY2NzI5NjQ0YjIxZGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmNwcApAQCAtNjcsMTcgKzY3LDE3IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgc3Rh
cnRUaW1lcig1X3MpOwogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbikK
K3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50KQogewogICAgIGlmICghZmVhdHVy
ZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXJFeHBpcmVkKCk7CiAKLSAg
ICBpZiAoYXR0cmlidXRpb24uZXBoZW1lcmFsU291cmNlTm9uY2UoKSkgewotICAgICAgICBhdXRv
IGF0dHJpYnV0aW9uQ29weSA9IGF0dHJpYnV0aW9uOworICAgIGlmIChtZWFzdXJlbWVudC5lcGhl
bWVyYWxTb3VyY2VOb25jZSgpKSB7CisgICAgICAgIGF1dG8gbWVhc3VyZW1lbnRDb3B5ID0gbWVh
c3VyZW1lbnQ7CiAgICAgICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBjbG9zZSBpbiB0
aW1lIHRvIHRoZSBuYXZpZ2F0aW9uYWwgY2xpY2sgd2hpY2ggbWFrZXMgaXQgbGlrZWx5IHRvIGJl
IHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgotICAgICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZN
b3ZlKGF0dHJpYnV0aW9uQ29weSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50OjpTb3VyY2UsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRh
Q2FycmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCB0aGlzXSAoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29u
c3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpIHsKKyAgICAgICAgZ2V0VG9rZW5QdWJsaWNL
ZXkoV1RGTW92ZShtZWFzdXJlbWVudENvcHkpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludDo6U291cmNlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGUsIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgdGhpc10gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1l
bnQsIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CiAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtODUsMTAgKzg1LDEwIEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQotICAgICAgICAg
ICAgICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKG1fZnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5saW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAg
ICAgICBtZWFzdXJlbWVudC5zZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnVubGlua2FibGVUb2tlbik7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJv
ck1lc3NhZ2UgPSBhdHRyaWJ1dGlvbi5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxl
VG9rZW4ocHVibGljS2V5QmFzZTY0VVJMKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGVy
cm9yTWVzc2FnZSA9IG1lYXN1cmVtZW50LmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2Fi
bGVUb2tlbihwdWJsaWNLZXlCYXNlNjRVUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBl
cnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9rZW4oKTogJyV7cHVi
bGljfXMiLCBlcnJvck1lc3NhZ2UtPnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwg
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsICplcnJvck1l
c3NhZ2UpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTYsMTcgKzk2LDE0IEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAgICAg
ICAgICAgZ2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFdURk1vdmUoYXR0cmlidXRpb24pKTsKKyAg
ICAgICAgICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbihXVEZNb3ZlKG1lYXN1cmVtZW50KSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291
cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gU3RvcmluZyBhIGNsaWNrLiJfcyk7CiAKLSNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGU6OlVuYXR0cmlidXRlZCk7Ci0jZW5kaWYKKyAgICBpbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGU6OlVuYXR0cmlidXRlZCk7CiB9CiAKIHN0YXRpYyBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMgZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMoVVJMJiYgdXJsLCBjb25zdCBTdHJp
bmcmIGh0dHBNZXRob2QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQsIGJvb2wg
aXNEZWJ1Z01vZGVFbmFibGVkKQpAQCAtMTgyLDE0ICsxNzksMTQgQEAgdm9pZCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYKIAogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0
U2lnbmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRp
b24pCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5r
YWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1lbnQpCiB7CiAgICAg
aWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlz
IGd1YXJhbnRlZWQgdG8gYmUgY2xvc2UgaW4gdGltZSB0byB0aGUgbmF2aWdhdGlvbmFsIGNsaWNr
IHdoaWNoIG1ha2VzIGl0IGxpa2VseSB0byBiZSBwZXJzb25hbGx5IGlkZW50aWZpYWJsZS4KICAg
ICBhdXRvIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFD
YXJyaWVkOjpQZXJzb25hbGx5SWRlbnRpZmlhYmxlOwotICAgIGF1dG8gdG9rZW5TaWduYXR1cmVV
UkwgPSBhdHRyaWJ1dGlvbi50b2tlblNpZ25hdHVyZVVSTCgpOworICAgIGF1dG8gdG9rZW5TaWdu
YXR1cmVVUkwgPSBtZWFzdXJlbWVudC50b2tlblNpZ25hdHVyZVVSTCgpOwogICAgIGlmIChtX3Rv
a2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZykgewogICAgICAgICB0b2tlblNpZ25hdHVyZVVSTCA9
ICptX3Rva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1MzY0
KQpAQCAtMTk5LDEyICsxOTYsMTIgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXIKICAgICBpZiAo
dG9rZW5TaWduYXR1cmVVUkwuaXNFbXB0eSgpIHx8ICF0b2tlblNpZ25hdHVyZVVSTC5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0
ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVV
UkwpLCBhdHRyaWJ1dGlvbi50b2tlblNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIGRl
YnVnTW9kZUVuYWJsZWQoKSk7CisgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0
d29ya0xvYWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVSTCks
IG1lYXN1cmVtZW50LnRva2VuU2lnbmF0dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCwgZGVidWdN
b2RlRW5hYmxlZCgpKTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3Qu
Iik7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNz
aW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2
ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5s
aW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKTsKIAotICAgIG1fbmV0d29ya0xvYWRG
dW5jdGlvbihXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCB0aGlzLCBhdHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pXSAoYXV0byYg
ZXJyb3IsIGF1dG8mIHJlc3BvbnNlLCBhdXRvJiBqc29uT2JqZWN0KSBtdXRhYmxlIHsKKyAgICBt
X25ldHdvcmtMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgbWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVt
ZW50KV0gKGF1dG8mIGVycm9yLCBhdXRvJiByZXNwb25zZSwgYXV0byYganNvbk9iamVjdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTIyNSwxMCArMjIyLDEwIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpn
ZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAgICAgICAgIH0KICAg
ICAgICAgLy8gRklYIE5PVyEKICAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9y
VGVzdGluZykKLSAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsg
bV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5zZWNyZXRUb2tlbiwgbV9mcmF1ZFBy
ZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5zaWduYXR1cmUsIG1fZnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZy0+a2V5SUQgfSk7CisgICAgICAgICAgICBtZWFzdXJlbWVudC5zZXRTb3Vy
Y2VTZWNyZXRUb2tlbih7IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2VjcmV0
VG9rZW4sIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2lnbmF0dXJlLCBtX2Zy
YXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPmtleUlEIH0pOwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVycm9yTWVzc2FnZSA9
IGF0dHJpYnV0aW9uLmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKHNpZ25hdHVy
ZUJhc2U2NFVSTCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yTWVzc2FnZSA9IG1lYXN1
cmVtZW50LmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKHNpZ25hdHVyZUJhc2U2
NFVSTCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRl
U291cmNlU2VjcmV0VG9rZW4oKTogJyV7cHVibGljfXMiLCBlcnJvck1lc3NhZ2UtPnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdICJfcywgKmVycm9yTWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTIzOCwxMiArMjM1LDIzIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAKICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1l
c3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywg
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTdG9yaW5nIGEgc2VjcmV0IHRva2VuLiJfcyk7
CiAKKyAgICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFzdXJl
bWVudCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0
ZWQpOworICAgIH0pOworCit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
IG1lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSB0eXBl
KQoreworICAgIGlmIChtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCkKKyAgICAg
ICAgbWVhc3VyZW1lbnQuc2V0UGVyc2lzdGVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uUGVyc2lzdGVudDo6Tm8pOworICAgIGlmICghbWVhc3VyZW1lbnQuaXNQZXJzaXN0ZW50
KCkpIHsKKyAgICAgICAgbV9lcGhlbWVyYWxNZWFzdXJlbWVudCA9IG1lYXN1cmVtZW50OworICAg
ICAgICByZXR1cm47CisgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1
dGlvbiksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0
ZWQpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUpOwogI2VuZGlmCi0gICAg
fSk7Ci0KIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0
dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0KQpAQCAtMjgwLDggKzI4OCwxNiBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUs
IGNvbgogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQpIHsKKyAgICAgICAgLy8gRXBoZW1lcmFsIG1lYXN1
cmVtZW50IGNhbiBvbmx5IGhhdmUgb25lIHBlbmRpbmcgY2xpY2suCisgICAgICAgIGlmIChtX2Vw
aGVtZXJhbE1lYXN1cmVtZW50LT5zb3VyY2VTaXRlKCkgIT0gc291cmNlU2l0ZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQtPmRlc3RpbmF0
aW9uU2l0ZSgpICE9IGRlc3RpbmF0aW9uU2l0ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgICAgIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNp
dGUsIGRlc3RpbmF0aW9uU2l0ZSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byBhdHRyaWJ1dGlvblNlY29u
ZHNVbnRpbFNlbmREYXRhKSB7CisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSwg
V1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgV1RGTW92ZShtX2VwaGVtZXJhbE1lYXN1
cmVtZW50KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byBhdHRy
aWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtMzA4LDYgKzMyNCw3
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUoY29uc3Qg
U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwog
ICAgIH0KKyAgICBtX2VwaGVtZXJhbE1lYXN1cmVtZW50ID0gc3RkOjpudWxsb3B0OwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IDM5MWRmNjNhNjIwNTk1NDlmMGM5
ODU1NDNjMGNmNGQ3YjNlNGY4MDYuLmNkNzJmMjUxYWVlYmExZGZjY2UwYTY3MDNhMmU1ZDg0MzM5
ZWRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNjUsMTIgKzY1LDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYg
c291cmNlVVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7CiAgICAgdm9pZCBtYXJrQWxsVW5hdHRy
aWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmco
Ym9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCA9IHZhbHVl
OyB9CiAgICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmlu
ZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25h
dHVyZSwgU3RyaW5nJiYga2V5SUQpOwogICAgIHZvaWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsIEZ1bmN0aW9uPHZvaWQo
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3QgU3RyaW5nJiBwdWJs
aWNLZXlCYXNlNjRVUkwpPiYmKTsKICAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVUb2tlbihQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKKyAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01l
YXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UeXBlKTsKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50KTsKICAgICB2b2lkIGF0dHJpYnV0ZShjb25zdCBTb3VyY2VTaXRlJiwg
Y29uc3QgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
JiYpOwogICAgIHZvaWQgZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZhdGVDbGlja01l
YXN1cmVtZW50JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQpOwpAQCAtODAsOCArODIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGZlYXR1cmVFbmFi
bGVkKCkgY29uc3Q7CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3Q7CiAKKyAgICBz
dGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBtX2VwaGVtZXJhbE1lYXN1cmVt
ZW50OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3Rz
VGltZXI7CiAgICAgYm9vbCBtX2lzUnVubmluZ1Rlc3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzsKICAgICBzdGQ6Om9wdGlv
bmFsPFVSTD4gbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc7CiAgICAgV2Vha1B0cjxOZXR3
b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCmluZGV4IDcwMmVmYjI5OWE0MWIwMTNjODU2OTA1ZTllNmI4MDI2Mjc3MGFm
ZTEuLmUwNGNhYzBjZjA1ZTY5MmIyZDI3NzcyMzkwY2E0OTEzOGMxYzI5MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMzA3MCw2ICszMDcwLDE0IEBAIHZv
aWQgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKFdLUGFnZVJlZiBwCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoV0tQYWdlUmVm
IHBhZ2VSZWYsIGJvb2wgdmFsdWUsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBo
ZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxi
YWNrQ29udGV4dCkKK3sKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVz
dGluZyh2YWx1ZSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICAgICAgY2Fs
bGJhY2soY2FsbGJhY2tDb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBXS1BhZ2VTaW11bGF0
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewogICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaApp
bmRleCBhMDcwYWVmZjNkNzExMTEzM2JlZWI5NjM4NzUyZjRlZGU1MDU4YWM4Li5jOGU2MjY3OTc4
NDcyODllY2Q3NzlkZjUyNTg3NTRkZjk3Njg4YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBAIC0xNzcsNiArMTc3LDggQEAgdHlwZWRlZiB2
b2lkICgqV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVz
dGluZ0Z1bmN0aW9uKSgKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgdmFsdWUs
IFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmdG
dW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYgdm9pZCAo
KldLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQg
V0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JU
ZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tDb250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2
YWx1ZSwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVu
dEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25S
ZXN0YXJ0RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VS
ZWYgcGFnZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3Rh
cnRGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JU
ZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiYWY1NjJjNTE5ODNhNGU0N2ZkZGQyOTI4NGM5
ODkwZjc1N2Q2M2NjLi5jOWIxNTc1YTE4YzRiOGUyYzUxYTQxMzA5NzJiZjk4OGEwZDM4MWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzcxLDYgKzEw
MzcxLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tCiAgICAgd2Vic2l0ZURhdGFTdG9yZSgp
Lm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JU
ZXN0aW5nKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sIHZhbHVlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2Vic2l0ZURh
dGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJl
bWVudEZvclRlc3RpbmcobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdmFsdWUpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzaW11
bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vic2l0ZURhdGFTdG9yZSgp
Lm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQobV93ZWJz
aXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWZlOWUzNTk2YWJkN2I5
NDJjYTIyOWFiYjM3YWRhZjUyNDliY2RlMC4uMWQ3MGQ2Y2UxMzEwNjE3MmI4YTczZDk0ZWU2ZjEw
NDUyMTg2MjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3
NTgsNiArMTc1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFz
dXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBlYTgyMmM4NDg5NTQ0NDhiODIyZTgyZDlkNDNjN2EwZTcwNjY2MTZmLi5jNGMw
MzI5NTliNmZiNjQ2NmFjMjY4ZGRlMDEwYmI5YmE5ZjRmYzZkIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDgt
MTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBT
dXBwb3J0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRoIG5vbi1wZXJzaXN0ZW50IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjg5ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxNzc4MjEz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlcGhlbWVyYWwgbWVhc3VyZW1lbnQgd2l0aCBub24tcGVy
c2lzdGVudAorICAgICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmb3IgZGly
ZWN0IHJlc3BvbnNlIGFkdmVydGlzaW5nLgorICAgICAgICBTdWNoIGFkdmVydGlzaW5nIG1lYW5z
IHRoZXJlIGlzIG9ubHkgb25lIHBlbmRpbmcgY2xpY2ssIGhlbGQgaW4gbWVtb3J5LAorICAgICAg
ICBhbmQgb25seSBzdG9yZWQgcmlnaHQgYmVmb3JlIHRoZSB0cmlnZ2VyaW5nIGV2ZW50IGNhdXNl
cyBhdHRyaWJ1dGlvbgorICAgICAgICByZXBvcnRzIHRvIGJlIHNjaGVkdWxlZC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmcp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorCiAyMDIxLTA4LTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbd2Via2l0cHldIFN0b3AgcmVseWluZyBvbiBkZXZpY2UucGxpc3QgZm9yIHNp
bXVsYXRlZCBkZXZpY2Ugc3RhdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDlhOTA3
ZGVmMmQ1ZWY5ZjVjODhhMDhjODkxZTVkODMyNWFmNGNhOWMuLmMyM2YyYTY5ZDMyYmQ3OWZmMjEy
MmU0MGMyMDRmMjkwMjE3ZWI2M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDEx
LDYgKzQxMSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgY2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiAgICAg
dW5kZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHVuZGVmaW5lZCBzZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29s
ZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2Vzc2lvblJlc3RhcnQoKTsKICAgICB1bmRlZmluZWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5kZWZp
bmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5n
KERPTVN0cmluZyB1cmwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTQ4Yzg2ODRlYWM3Njk4NmY1Yjc4NTk2OTNh
MmM0ZDgwMjRhMDViYy4uMjgwMDI4ZWI3MzM5OTNkYzk3MWE0OTg2ZGNmODIzMTE1OGU2OTJlYiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC0yMDcwLDYgKzIwNzAsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjptYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQogICAg
IHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmciKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhi
b29sIHZhbHVlKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJTZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyIsIHZhbHVlKTsK
K30KKwogdm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNz
aW9uUmVzdGFydCgpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIlNpbXVsYXRl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0Iik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGMyZDYyMWU1
Zjk5YzllNzlhMWY0NWVlOTUyNjNjNzQ0NWIwZWY0YWUuLjRjMmFlYTg5MzZmZTc2OWYzODIxOWIy
MjQwOWI2YzA2NmYwMjNmNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MzQsNiArNTM0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JU
ZXN0aW5nKEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25VUkwp
OwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZygpOworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRF
cGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoSlNT
dHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBKU1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgSlNTdHJp
bmdSZWYgc2lnbmF0dXJlLCBKU1N0cmluZ1JlZiBrZXlJRCk7CiAgICAgdm9pZCBzaW11bGF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCgpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDQwNzE3MWZhY2JhNmFhZDZjZjBiNGI0YTY0
MTc0ODg0YzMzZjUxODkuLjA4YzMwZjQ1MDQ4ZjIzZTI2YjNhYTY3OWRlNDY0OGU5YzlhZjY0MTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjQ0LDYg
KzM2NDQsMTMgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAgICBydW5VbnRpbChjYWxsYmFj
a0NvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9v
bCB2YWx1ZSkKK3sKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxsYmFja0NvbnRl
eHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKKyAgICBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhtX21haW5XZWJWaWV3LT5wYWdl
KCksIHZhbHVlLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxsYmFjaywgJmNhbGxiYWNr
Q29udGV4dCk7CisgICAgcnVuVW50aWwoY2FsbGJhY2tDb250ZXh0LmRvbmUsIG5vVGltZW91dCk7
Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Nlc3Npb25SZXN0YXJ0KCkKIHsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxs
YmFja0NvbnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAppbmRleCA5Njc3ZWE0ZjVkZTE3YjY0MTIzY2ZlNWVmNDA2NWE0MjI5
Njg3ZjY3Li5kZDM2MGE0Njk0YzZiY2ZkMGEwOGI2MGQ5ZGI0NzRlM2Q4YTQ0NWU5IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNDUsNiArMzQ1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNUaHJvdWdoV2Vic2l0
ZURhdGFSZW1vdmFsKCk7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgdm9pZCBz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhi
b29sIHZhbHVlKTsKICAgICB2b2lkIHNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Np
b25SZXN0YXJ0KCk7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZyhXS1VSTFJlZik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhXS1VSTFJlZik7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGFjMDUxOWJkNjc5ZGEzMjg3
NjIxYjk4MjRmYTAyNjM1NWE3N2I1NTcuLmM1MzllMWM1NTMyMDcwNmRlZmExOGQ5NjJlODg0MzU0
YmQ0MzZlMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBA
IC0xMzYwLDYgKzEzNjAsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxN
ZWFzdXJlbWVudEZvclRlc3RpbmciKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRl
c3RpbmcoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0Iikp
IHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDk4YmI5MTBiOTJkMzE0MWMwMGI1NTA1YjdlYTE4MWMxYzMzMGE3ODMuLjM3MGNmNTE4
YmU4MGU2Nzk2YzZiNjMzMGNiNjE3M2YyOGE0MjY0YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMS0wOC0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBQQ006IFN1cHBvcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHdpdGggbm9uLXBlcnNpc3RlbnQg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODk4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODE3NzgyMTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRo
IG5vbi1wZXJzaXN0ZW50CisgICAgICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
IGZvciBkaXJlY3QgcmVzcG9uc2UgYWR2ZXJ0aXNpbmcuCisgICAgICAgIFN1Y2ggYWR2ZXJ0aXNp
bmcgbWVhbnMgdGhlcmUgaXMgb25seSBvbmUgcGVuZGluZyBjbGljaywgaGVsZCBpbiBtZW1vcnks
CisgICAgICAgIGFuZCBvbmx5IHN0b3JlZCByaWdodCBiZWZvcmUgdGhlIHRyaWdnZXJpbmcgZXZl
bnQgY2F1c2VzIGF0dHJpYnV0aW9uCisgICAgICAgIHJlcG9ydHMgdG8gYmUgc2NoZWR1bGVkLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlv
bi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9h
dHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cmVzb3VyY2VzL3V0aWwuanM6CisgICAgICAgICh0ZWFyRG93bkFuZEZpbmlzaCk6CisgICAgICAg
ICAgICBSZXNldHMgdGhlIG5ldyB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKCkuCisKIDIwMjEtMDgtMTAgIExhdXJvIE1v
dXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gR2FyZGVuIG5ldyBjc3Mt
Y291bnRlciBpbWFnZW9ubHkgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJv
dWdoLWltYWdlLXJlZGlyZWN0LWVwaGVtZXJhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24t
dGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1lcGhlbWVyYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZkNjlkNTM5YzJkMGY3ZWEyZWFlMDJjOWMyZTY0YjA0NTE0YzBjZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1lcGhlbWVyYWwtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHRyaWdnZXJpbmcgb2YgZXBoZW1lcmFsIHBy
aXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgYXR0cmlidXRpb25zLgorCisKK0F0dHJpYnV0ZWQgUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudHM6CitXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCAxCitTb3VyY2Ugc2l0ZTogMTI3LjAuMC4xCitBdHRyaWJ1dGUgb24gc2l0ZTogbG9jYWxob3N0
CitTb3VyY2UgSUQ6IDMKK0F0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogMTIKK0F0dHJpYnV0aW9u
IHByaW9yaXR5OiAwCitBdHRyaWJ1dGlvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6IFdpdGhpbiAy
NC00OCBob3VycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJl
Y3QtZXBoZW1lcmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1l
cGhlbWVyYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWQ1MTU5NmQyMDE5YjNiNjNlNjUzOTUwNGVmNDQy
YjY5ZTE4ZTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2Ut
cmVkaXJlY3QtZXBoZW1lcmFsLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+
Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cisg
ICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5p
dGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGlt
ZW91dChydW5UZXN0LCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdHJpZ2dlcmlu
ZyBvZiBlcGhlbWVyYWwgcHJpdmF0ZSBjbGljayBtZWFzdXJlbWVudCBhdHRyaWJ1dGlvbnMuPC9k
aXY+Cis8YSBpZD0idGFyZ2V0TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1y
ZWRpcmVjdC1lcGhlbWVyYWwuaHRtbD9zdGVwVHdvIiBhdHRyaWJ1dGlvbnNvdXJjZWlkPTMgYXR0
cmlidXRpb25kZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxicj4K
KzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIHByZXBhcmVUZXN0KCk7CisK
KyAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFy
IGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsK
KyAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZ
KS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAg
ICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9
PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIGxldCBpbWFnZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQu
c3JjID0gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVz
b3VyY2VzL3JlZGlyZWN0VG9Db252ZXJzaW9uLnB5P2NvbnZlcnNpb25EYXRhPTEyIjsKKyAgICAg
ICAgICAgICAgICBpbWFnZUVsZW1lbnQuaWQgPSAicGl4ZWwiOworICAgICAgICAgICAgICAgIGlt
YWdlRWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldExpbmsiKSk7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOworICAgICAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKHRydWUpOworICAgICAgICAgICAg
ICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIp
LmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKKyAgICAgICAgfQorICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3V0aWwuanMK
aW5kZXggMzMyYjk0ZTcwMGUyYzNlZGZjMWQ5Y2ZkZDkzMWJlOGZmZTBlMjY0OC4uZTdjM2NkODhj
NDI4NjAyZTYxMzgwM2ZjNDkyMzZmODZmMTdmYWRkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvdXRpbC5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNl
cy91dGlsLmpzCkBAIC0xMSw2ICsxMSw3IEBAIGZ1bmN0aW9uIHRlYXJEb3duQW5kRmluaXNoKCkg
ewogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICB0ZXN0UnVubmVyLnNldEFs
bG93c0FueVNTTENlcnRpZmljYXRlKGZhbHNlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVt
ZW50Rm9yVGVzdGluZyhmYWxzZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKCIiLCAiIik7CiAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVS
TEZvclRlc3RpbmcoIiIpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKCIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436248</attachid>
            <date>2021-08-23 16:45:57 -0700</date>
            <delta_ts>2021-08-23 17:33:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-228984-20210823164556.patch</filename>
            <type>text/plain</type>
            <size>49343</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I3NmFhNWQzYzc1Njg5
MjU4M2E2YzI5ZTkzMzI5YzFlODA4ZWQ4Yi4uYTk3MGM2YjQwMzlkMmNmMzQ1NzRmM2Q3ZTgxMTY0
YjQ4NDU0MDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA4LTIzICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogU3VwcG9ydCBl
cGhlbWVyYWwgbWVhc3VyZW1lbnQgd2l0aCBub24tcGVyc2lzdGVudCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4OTg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTc3ODIxMz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLYXRlIENoZW5leS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
c3VwcG9ydCBmb3IgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHdpdGggbm9uLXBlcnNpc3RlbnQKKyAg
ICAgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgZm9yIGRpcmVjdCByZXNwb25z
ZSBhZHZlcnRpc2luZy4KKyAgICAgICAgU3VjaCBhZHZlcnRpc2luZyBtZWFucyB0aGVyZSBpcyBv
bmx5IG9uZSBwZW5kaW5nIGNsaWNrLCBoZWxkIGluIG1lbW9yeSwKKyAgICAgICAgYW5kIG9ubHkg
c3RvcmVkIHJpZ2h0IGJlZm9yZSB0aGUgdHJpZ2dlcmluZyBldmVudCBjYXVzZXMgYXR0cmlidXRp
b24KKyAgICAgICAgcmVwb3J0cyB0byBiZSBzY2hlZHVsZWQuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRo
cm91Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLmh0bWwKKworICAgICAgICAqIGxvYWRlci9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRl
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgICAgICBOb3cgdGFrZXMg
YW4gb3B0aW9uYWwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbkVwaGVtZXJhbAor
ICAgICAgICAgICAgcGFyYW1ldGVyLCBzZXQgdG8gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvbkVwaGVtZXJhbDo6Tm8KKyAgICAgICAgICAgIGJ5IGRlZmF1bHQuCisgICAgICAgIChX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNFcGhlbWVyYWwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldEVwaGVtZXJhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpkZWNvZGUpOgorCiAy
MDIxLTA4LTIzICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1w
bGlmaWVkIHRleHQgbWVhc3VyaW5nIG9ubHkgd29ya3Mgd2l0aCB0aGUgcHJpbWFyeSBmb250CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDRlNzM0MGM4MjgxZTQ4ZTgwYjg2N2ZkOGY1ODFlYWM1NTlmN2QwYjQuLjIzYmVh
Njk2ZTI2NmI5ZTJiOWRhYjZkMjM1NWQ0ZjRmMTQ4NzUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTQgQEAKKzIwMjEtMDgtMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUENNOiBTdXBwb3J0IGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRoIG5vbi1wZXJz
aXN0ZW50IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5ODQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzgxNzc4MjEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEthdGUgQ2hlbmV5LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlcGhlbWVyYWwgbWVhc3VyZW1lbnQg
d2l0aCBub24tcGVyc2lzdGVudAorICAgICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCBmb3IgZGlyZWN0IHJlc3BvbnNlIGFkdmVydGlzaW5nLgorICAgICAgICBTdWNoIGFkdmVy
dGlzaW5nIG1lYW5zIHRoZXJlIGlzIG9ubHkgb25lIHBlbmRpbmcgY2xpY2ssIGhlbGQgaW4gbWVt
b3J5LAorICAgICAgICBhbmQgb25seSBzdG9yZWQgcmlnaHQgYmVmb3JlIHRoZSB0cmlnZ2VyaW5n
IGV2ZW50IGNhdXNlcyBhdHRyaWJ1dGlvbgorICAgICAgICByZXBvcnRzIHRvIGJlIHNjaGVkdWxl
ZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAg
ICAgICBOb3cgdGFrZXMgYW4gb3B0aW9uYWwgZXBoZW1lcmFsIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IHBhcmFtZXRlcgorICAgICAgICAgICAgYW5kIHN0b3JlcyBpdCByaWdodCBiZWZvcmUgbW92
aW5nIG9uIHdpdGggYXR0cmlidXRpb24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVz
dGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAgICAg
ICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9u
LiBPbmx5IHN0b3JlcyBpbiBtZW1vcnkgaWYgdGhlCisgICAgICAgICAgICBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBwYXJhbWV0ZXIgaXMgbWFya2VkIGFzIGVwaGVtZXJhbC4KKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUpOgorICAgICAg
ICAgICAgQ2hlY2tzIHRoYXQgdGhlIHRyaWdnZXJpbmcgZXZlbnQgbWF0Y2hlcyB0aGUgZXBoZW1l
cmFsIG1lYXN1cmVtZW50IGlmCisgICAgICAgICAgICBpdCBleGlzdHMsIGFuZCBpZiBzbywgZm9y
d2FyZHMgaXQuCisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6Y2xlYXIpOgorICAgICAgICAgICAgTm93IGNsZWFycyB0aGUgZXBoZW1lcmFsIHN0YXRlIHRv
by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpz
ZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZy
YXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1lbnRG
b3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyk6CisgICAgICAg
ICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKwogMjAyMS0wOC0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjcxMTQ2KTogZWRpdGluZy9zZWxlY3Rpb24vaW9z
L3Njcm9sbGluZy10by1mb2N1c2VkLWVsZW1lbnQtaW5zaWRlLWlmcmFtZS5odG1sIGlzIGZhaWxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgK
aW5kZXggYzI5NGNiNWZiY2YzZWJlODlmNTdlZDJiMDViYmMzNDI5M2MwYjljOS4uZWI4NjA4N2Jl
ZTU4OTRlYWIwYmViZjJlOGY2YzJmYjcwZGFmYmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTQ3LDYgKzQ3LDggQEAgT0JKQ19D
TEFTUyBSU0FCU1NBVG9rZW5CbGluZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0g
Y2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvbkVwaGVtZXJhbCA6IGJvb2wg
eyBObywgWWVzIH07CisKIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50IHsKIHB1YmxpYzoK
ICAgICB1c2luZyBQcmlvcml0eVZhbHVlID0gdWludDMyX3Q7CkBAIC05MCw2ICs5MiwxMSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gcmVnaXN0cmFibGVEb21haW4gPT0gb3RoZXIucmVn
aXN0cmFibGVEb21haW47CiAgICAgICAgIH0KIAorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU291cmNlU2l0ZSYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biByZWdpc3RyYWJsZURvbWFpbiAhPSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAg
fQorCiAgICAgICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXModXJsKTsKQEAg
LTEzMSw2ICsxMzgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxl
RG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwogICAgICAgICB9CiAKKyAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluICE9
IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOworICAgICAgICB9CisKICAgICAgICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
cmVnaXN0cmFibGVEb21haW4gPT0gUmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKQEAgLTMwMCwx
MyArMzEyLDE0IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKSA9IGRlZmF1bHQ7Ci0gICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoU291cmNlSUQgc291
cmNlSUQsIGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIFN0cmluZyYmIHNvdXJjZURlc2NyaXB0aW9u
ID0geyB9LCBTdHJpbmcmJiBwdXJjaGFzZXIgPSB7IH0sIFdhbGxUaW1lIHRpbWVPZkFkQ2xpY2sg
PSBXYWxsVGltZTo6bm93KCkpCisgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoU291cmNlSUQg
c291cmNlSUQsIGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIFN0cmluZyYmIHNvdXJjZURlc2NyaXB0
aW9uID0geyB9LCBTdHJpbmcmJiBwdXJjaGFzZXIgPSB7IH0sIFdhbGxUaW1lIHRpbWVPZkFkQ2xp
Y2sgPSBXYWxsVGltZTo6bm93KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25F
cGhlbWVyYWwgaXNFcGhlbWVyYWwgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
RXBoZW1lcmFsOjpObykKICAgICAgICAgOiBtX3NvdXJjZUlEIHsgc291cmNlSUQgfQogICAgICAg
ICAsIG1fc291cmNlU2l0ZSB7IHNvdXJjZVNpdGUgfQogICAgICAgICAsIG1fZGVzdGluYXRpb25T
aXRlIHsgZGVzdGluYXRpb25TaXRlIH0KICAgICAgICAgLCBtX3NvdXJjZURlc2NyaXB0aW9uIHsg
V1RGTW92ZShzb3VyY2VEZXNjcmlwdGlvbikgfQogICAgICAgICAsIG1fcHVyY2hhc2VyIHsgV1RG
TW92ZShwdXJjaGFzZXIpIH0KICAgICAgICAgLCBtX3RpbWVPZkFkQ2xpY2sgeyB0aW1lT2ZBZENs
aWNrIH0KKyAgICAgICAgLCBtX2lzRXBoZW1lcmFsIHsgaXNFcGhlbWVyYWwgfQogICAgIHsKICAg
ICB9CiAKQEAgLTMyOSw2ICszNDIsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHNv
dXJjZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEZXNjcmlwdGlvbjsgfQog
ICAgIGNvbnN0IFN0cmluZyYgcHVyY2hhc2VyKCkgY29uc3QgeyByZXR1cm4gbV9wdXJjaGFzZXI7
IH0KKyAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0VwaGVtZXJhbCA9
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uRXBoZW1lcmFsOjpZZXM7IH0KKyAg
ICB2b2lkIHNldEVwaGVtZXJhbChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uRXBo
ZW1lcmFsIGlzRXBoZW1lcmFsKSB7IG1faXNFcGhlbWVyYWwgPSBpc0VwaGVtZXJhbDsgfQogCiAg
ICAgLy8gTUFSSzogLSBGcmF1ZCBQcmV2ZW50aW9uCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHRv
a2VuUHVibGljS2V5VVJMKCkgY29uc3Q7CkBAIC0zNzgsNiArMzkzLDcgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zb3VyY2VEZXNjcmlwdGlvbjsKICAgICBTdHJpbmcgbV9wdXJjaGFzZXI7CiAg
ICAgV2FsbFRpbWUgbV90aW1lT2ZBZENsaWNrOworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25FcGhlbWVyYWwgbV9pc0VwaGVtZXJhbDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIEF0
dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgbV90aW1lc1RvU2VuZDsKQEAgLTQwNiw2ICs0MjIsNyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICAgICAgPDwgbV9wdXJjaGFzZXIKICAgICAgICAgPDwgbV90aW1lT2ZBZENsaWNr
CiAgICAgICAgIDw8IG1fZXBoZW1lcmFsU291cmNlTm9uY2UKKyAgICAgICAgPDwgbV9pc0VwaGVt
ZXJhbAogICAgICAgICA8PCBtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEKICAgICAgICAgPDwgbV90
aW1lc1RvU2VuZDsKIH0KQEAgLTQ0OCw2ICs0NjUsMTEgQEAgc3RkOjpvcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVy
JgogICAgIGlmICghZXBoZW1lcmFsU291cmNlTm9uY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25FcGhlbWVyYWw+IGlzRXBoZW1lcmFsOworICAgIGRlY29kZXIgPj4gaXNFcGhlbWVyYWw7
CisgICAgaWYgKCFpc0VwaGVtZXJhbCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwog
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPj4g
YXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBkZWNvZGVyID4+IGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE7CiAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQpAQCAtNDY0LDcgKzQ4Niw4
IEBAIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpkZWNvZGUoRGVjb2RlciYKICAgICAgICAgQXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUgeyBXVEZNb3ZlKCpkZXN0aW5hdGlvblJlZ2lzdHJhYmxlRG9tYWluKSB9LAogICAgICAg
ICBXVEZNb3ZlKCpzb3VyY2VEZXNjcmlwdGlvbiksCiAgICAgICAgIFdURk1vdmUoKnB1cmNoYXNl
ciksCi0gICAgICAgIFdURk1vdmUoKnRpbWVPZkFkQ2xpY2spCisgICAgICAgIFdURk1vdmUoKnRp
bWVPZkFkQ2xpY2spLAorICAgICAgICBXVEZNb3ZlKCppc0VwaGVtZXJhbCkKICAgICB9OwogICAg
IGF0dHJpYnV0aW9uLm1fZXBoZW1lcmFsU291cmNlTm9uY2UgPSBXVEZNb3ZlKCplcGhlbWVyYWxT
b3VyY2VOb25jZSk7CiAgICAgYXR0cmlidXRpb24ubV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
V1RGTW92ZSgqYXR0cmlidXRpb25UcmlnZ2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDY3YjEyZTIwY2YyNzg4ZmRiYzUyZGI0
ZmNlZmRlYWU0MzJhMjJjNWUuLjRkYjgwN2E3ZDlkNzA1NDAxZWQ1OWE2Y2VlZTJhZDdiMjQwNjc3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzLmgiCkBAIC0xNTAwLDcgKzE1MDEsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50QQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYm
IGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1Vu
dGlsU2VuZERhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCkBAIC0xNTA5LDcgKzE1MTAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3Qg
UHJpdgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcG9zdFRhc2soW3RoaXMsIHNvdXJj
ZVNpdGUgPSBzb3VyY2VTaXRlLmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblNpdGUgPSBkZXN0
aW5hdGlvblNpdGUuaXNvbGF0ZWRDb3B5KCksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZN
b3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzb3Vy
Y2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25TaXRlID0gZGVz
dGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RG
TW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBXVEZN
b3ZlKGVwaGVtZXJhbE1lYXN1cmVtZW50KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NT
dG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwpAQCAtMTUxNyw2ICsxNTE4LDEyIEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChjb25zdCBQcml2CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICAvLyBJbnNlcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHJpZ2h0IGJlZm9yZSBhdHRy
aWJ1dGlvbi4KKyAgICAgICAgaWYgKGVwaGVtZXJhbE1lYXN1cmVtZW50KSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlcGhlbWVyYWxNZWFzdXJlbWVudC0+aXNFcGhlbWVyYWwoKSk7Cisg
ICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV1RGTW92ZSgqZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAgfQorCiAgICAgICAgIGF1
dG8gc2Vjb25kcyA9IG1fc3RhdGlzdGljc1N0b3JlLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSkpOwogICAgICAgICBwb3N0VGFza1JlcGx5KFtzZWNvbmRzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vjb25kcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZjMwMzM2MjFhY2M1MmNhNTNkY2M3OTJkOTY1
ZWQ0OGMzZjc5ZGRhNC4uYjM0OGUzMTZiMDgxMjE4NjExMjFkYjU0NzYzZDFiOTg2OTNhNWI1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjQy
LDcgKzI0Miw3IEBAIHB1YmxpYzoKICAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50Lgog
ICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUp
OwogICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNF
eHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUm
LCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2Vu
ZERhdGE+KT4mJik7CisgICAgdm9pZCBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChj
b25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
JiYgZXBoZW1lcmFsTWVhc3VyZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT4pPiYmKTsKICAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mJik+JiYpOwogICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpOwogICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGEzOGIy
ZTI3ZjM5ODIxZjA0YjA3NTRkMTgwYmNmNDZjYWMxOTc1OWUuLjVkNjgyOWIyODgwMjU0YmQwMTEz
MTBhOWZkMjlkNzg1ZWRiNmUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNjExLDYgKzI2MTEsMTUgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKFAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKHZhbHVl
KTsKKyAgICAKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCisKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMJiYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDhhNzA4NGJjYWFjNTBhMGI5Mjc1ODAyYThmNGI1
YmU0ZGFiNTA2NGIuLmVhOTFlZDU5NDAzZTQ5ZmUyN2RhNjgxOTMxNjcxZTk2ZmY3YmY5YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM0
Miw2ICszNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJl
c3RhcnQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgVVJMJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCwgVVJMJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAyZmM3MTllMzQ3ZmEwMDUwNjZhZTM5ODcxMzJmZGU4MjkyNzky
ZTFjLi5kNzk5NzQ1MWM0NTQwY2MzZDc1NjUzNDhjNzZhMjM0NDkxMzgyZjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTE2NCw2ICsxNjQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgQ2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wg
dmFsdWUpIC0+ICgpIEFzeW5jCiAgICAgTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKKyAgICBTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+ICgpIEFz
eW5jCiAgICAgU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKICAgICBTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVS
TCB1cmwpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IDRlMzAxNjNhN2JiYzE2NmM3NzU1NDM1MzU1YWExYjkxY2Ri
NDBhNWEuLjMzNDg4ZTY5ZWZlYmQ3MWI2ZDMwYmQyYmM3YzhmYzUyYTcyODMyN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNjEs
NiArMzYxLDExIEBAIHZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
Lm1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiB9CiAKK3ZvaWQgTmV0
d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1l
bnRGb3JUZXN0aW5nKGJvb2wgdmFsdWUpCit7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KS5zZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcodmFsdWUpOworfQorCiAvLyBGSVhN
RTogU3dpdGNoIHRvIG5vbi1tb2NrZWQgdGVzdCBkYXRhIG9uY2UgdGhlIHJpZ2h0IGNyeXB0b2dy
YXBoeSBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBpbiBvcGVuIHNvdXJjZS4KIHZvaWQgTmV0d29ya1Nl
c3Npb246OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5s
aW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBT
dHJpbmcmJiBrZXlJRCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAppbmRleCA3ZGE5NWU5NzBiZTk1M2NmYmVlZGRiYjc5ZDE0OTY0M2UzYTJlODhi
Li5hNDk3MThkZWZkYTIzOTQ4NDZhZTg1YzRjNzg1MmFkYTE1NjQxMzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMzMsNiArMTMzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJM
JiYgZGVzdGluYXRpb25VUkwpOwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKyAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKGJvb2wpOwogICAgIHZvaWQgc2V0UENN
RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4s
IFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlE
KTsKICAgICB2b2lkIGZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHko
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDIxM2NhN2M2YzM1YzA0NjQw
Y2YxNDE2NGFkY2U4ZTU1ODJhMzVlZjkuLjZhNjM1ZDg5ZDc3MzA4MDg1MmMzYTFkZmYxYThkZTg3
NmVhZTYwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTY3LDE3ICs2Nywx
NyBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbgogICAgIHN0YXJ0VGltZXIoNV9zKTsKIH0KIAot
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5hdHRyaWJ1dGVkKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24pCit2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiBtZWFzdXJlbWVudCkKIHsKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGNsZWFyRXhwaXJlZCgpOwogCi0gICAgaWYgKGF0dHJpYnV0aW9uLmVw
aGVtZXJhbFNvdXJjZU5vbmNlKCkpIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvbkNvcHkgPSBh
dHRyaWJ1dGlvbjsKKyAgICBpZiAobWVhc3VyZW1lbnQuZXBoZW1lcmFsU291cmNlTm9uY2UoKSkg
eworICAgICAgICBhdXRvIG1lYXN1cmVtZW50Q29weSA9IG1lYXN1cmVtZW50OwogICAgICAgICAv
LyBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgY2xvc2UgaW4gdGltZSB0byB0aGUgbmF2aWdhdGlv
bmFsIGNsaWNrIHdoaWNoIG1ha2VzIGl0IGxpa2VseSB0byBiZSBwZXJzb25hbGx5IGlkZW50aWZp
YWJsZS4KLSAgICAgICAgZ2V0VG9rZW5QdWJsaWNLZXkoV1RGTW92ZShhdHRyaWJ1dGlvbkNvcHkp
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6U291
cmNlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJ
ZGVudGlmaWFibGUsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKFByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5
QmFzZTY0VVJMKSB7CisgICAgICAgIGdldFRva2VuUHVibGljS2V5KFdURk1vdmUobWVhc3VyZW1l
bnRDb3B5KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQ6OlNvdXJjZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpQZXJz
b25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNd
IChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50LCBjb25zdCBTdHJpbmcmIHB1
YmxpY0tleUJhc2U2NFVSTCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTg1LDEwICs4NSwxMCBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJgogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKG1fZnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvbi5z
ZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmctPnVubGlua2FibGVUb2tlbik7CisgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQuc2V0
U291cmNlVW5saW5rYWJsZVRva2VuVmFsdWUobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nLT51bmxpbmthYmxlVG9rZW4pOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3JNZXNzYWdlID0gYXR0cmlidXRp
b24uY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlVW5saW5rYWJsZVRva2VuKHB1YmxpY0tleUJhc2U2
NFVSTCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJl
bWVudC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9rZW4ocHVibGljS2V5QmFz
ZTY0VVJMKSkgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJyb3IgaW4gY2FsY3VsYXRlQW5k
VXBkYXRlU291cmNlVW5saW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdl
LT51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gIl9zLCAqZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTk2LDE3ICs5NiwxNCBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJgogICAgICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgICAgIGdldFNpZ25lZFVubGlu
a2FibGVUb2tlbihXVEZNb3ZlKGF0dHJpYnV0aW9uKSk7CisgICAgICAgICAgICBnZXRTaWduZWRV
bmxpbmthYmxlVG9rZW4oV1RGTW92ZShtZWFzdXJlbWVudCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9KTsKICAgICB9CiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IFN0b3JpbmcgYSBjbGljay4iX3MpOwogCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShhdHRyaWJ1dGlv
biksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQp
OwotI2VuZGlmCisgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFz
dXJlbWVudCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJp
YnV0ZWQpOwogfQogCiBzdGF0aWMgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29y
a0xvYWRQYXJhbWV0ZXJzKFVSTCYmIHVybCwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGpzb25QYXlsb2FkLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJyaWVkLCBib29sIGlzRGVidWdNb2RlRW5hYmxlZCkK
QEAgLTE4MiwxNCArMTc5LDE0IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpnZXRUb2tlblB1YmxpY0tleShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAKIH0KIAotdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tl
bihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uKQordm9pZCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50KQogewogICAgIGlmICghZmVhdHVyZUVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNs
b3NlIGluIHRpbWUgdG8gdGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBpdCBsaWtl
bHkgdG8gYmUgcGVyc29uYWxseSBpZGVudGlmaWFibGUuCiAgICAgYXV0byBwY21EYXRhQ2Fycmll
ZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlk
ZW50aWZpYWJsZTsKLSAgICBhdXRvIHRva2VuU2lnbmF0dXJlVVJMID0gYXR0cmlidXRpb24udG9r
ZW5TaWduYXR1cmVVUkwoKTsKKyAgICBhdXRvIHRva2VuU2lnbmF0dXJlVVJMID0gbWVhc3VyZW1l
bnQudG9rZW5TaWduYXR1cmVVUkwoKTsKICAgICBpZiAobV90b2tlblNpZ25hdHVyZVVSTEZvclRl
c3RpbmcpIHsKICAgICAgICAgdG9rZW5TaWduYXR1cmVVUkwgPSAqbV90b2tlblNpZ25hdHVyZVVS
TEZvclRlc3Rpbmc7CiAgICAgICAgIC8vIEZJWE1FKDIyNTM2NCkKQEAgLTE5OSwxMiArMTk2LDEy
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmth
YmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAgICAgaWYgKHRva2VuU2lnbmF0dXJlVVJMLmlz
RW1wdHkoKSB8fCAhdG9rZW5TaWduYXR1cmVVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRl
cnNGb3JIdHRwUG9zdChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0cmlidXRpb24udG9r
ZW5TaWduYXR1cmVKU09OKCksIHBjbURhdGFDYXJyaWVkLCBkZWJ1Z01vZGVFbmFibGVkKCkpOwor
ICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zv
ckh0dHBQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwpLCBtZWFzdXJlbWVudC50b2tlblNp
Z25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIGRlYnVnTW9kZUVuYWJsZWQoKSk7CiAKICAg
ICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmly
ZSBhIHVubGlua2FibGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiIpOwogICAgIG1fbmV0d29ya1By
b2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gc2lnbmlu
ZyByZXF1ZXN0LiJfcyk7CiAKLSAgICBtX25ldHdvcmtMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2Fk
UGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgYXR0cmli
dXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKV0gKGF1dG8mIGVycm9yLCBhdXRvJiByZXNwb25z
ZSwgYXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7CisgICAgbV9uZXR3b3JrTG9hZEZ1bmN0aW9u
KFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHRoaXMsIG1lYXN1cmVtZW50ID0gV1RGTW92ZShtZWFzdXJlbWVudCldIChhdXRvJiBlcnJvciwg
YXV0byYgcmVzcG9uc2UsIGF1dG8mIGpzb25PYmplY3QpIG11dGFibGUgewogICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjUsMTAgKzIyMiwxMCBAQCB2
b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuKFByaXZhdGVDbGlja01lYXN1cgogICAgICAgICB9CiAgICAgICAgIC8vIEZJWCBOT1chCiAg
ICAgICAgIGlmIChtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpCi0gICAgICAgICAg
ICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRUb2tlbih7IG1fZnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZy0+c2VjcmV0VG9rZW4sIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZy0+c2lnbmF0dXJlLCBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPmtleUlE
IH0pOworICAgICAgICAgICAgbWVhc3VyZW1lbnQuc2V0U291cmNlU2VjcmV0VG9rZW4oeyBtX2Zy
YXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNlY3JldFRva2VuLCBtX2ZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVyZSwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNG
b3JUZXN0aW5nLT5rZXlJRCB9KTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBhdHRyaWJ1dGlvbi5jYWxjdWxh
dGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbihzaWduYXR1cmVCYXNlNjRVUkwpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVudC5jYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbihzaWduYXR1cmVCYXNlNjRVUkwpKSB7CiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCB0aGUg
Zm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKCk6
ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLT51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25J
RCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsICplcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzgsMTIgKzIzNSwyMyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJs
ZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgogCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJy
b2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gU3RvcmluZyBhIHNlY3JldCB0b2tlbi4iX3MpOwogCisgICAgICAgIGluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICB9KTsKKworfQor
Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5zZXJ0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBtZWFzdXJlbWVudCwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgdHlwZSkKK3sKKyAgICBpZiAobV9pc1J1
bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QpCisgICAgICAgIG1lYXN1cmVtZW50LnNldEVw
aGVtZXJhbChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uRXBoZW1lcmFsOjpZZXMp
OworICAgIGlmIChtZWFzdXJlbWVudC5pc0VwaGVtZXJhbCgpKSB7CisgICAgICAgIG1fZXBoZW1l
cmFsTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVtZW50KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlu
c2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoYXR0cmlidXRpb24pLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKTsKKyAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0eXBlKTsKICNlbmRpZgotICAgIH0pOwotCiB9CiAKIHZv
aWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlvbihBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVz
dCkKQEAgLTI4MCw4ICsyODgsMTYgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmF0dHJpYnV0ZShjb25zdCBTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb24KICAgICBpZiAo
IWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2VwaGVtZXJh
bE1lYXN1cmVtZW50KSB7CisgICAgICAgIC8vIEVwaGVtZXJhbCBtZWFzdXJlbWVudCBjYW4gb25s
eSBoYXZlIG9uZSBwZW5kaW5nIGNsaWNrLgorICAgICAgICBpZiAobV9lcGhlbWVyYWxNZWFzdXJl
bWVudC0+c291cmNlU2l0ZSgpICE9IHNvdXJjZVNpdGUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChtX2VwaGVtZXJhbE1lYXN1cmVtZW50LT5kZXN0aW5hdGlvblNpdGUoKSAhPSBk
ZXN0aW5hdGlvblNpdGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlv
blNpdGUsIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YSkgeworICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5hdHRyaWJ1dGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIFdURk1vdmUoYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSksIHN0ZDo6ZXhjaGFuZ2UobV9lcGhlbWVyYWxNZWFzdXJlbWVudCwg
c3RkOjpudWxsb3B0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0
byBhdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhKSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtNDQ5LDYg
KzQ2NSw4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGlu
Z0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmNsZWFyKCkKIHsKICAgICBtX2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVy
LnN0b3AoKTsKKyAgICBtX2VwaGVtZXJhbE1lYXN1cmVtZW50ID0gc3RkOjpudWxsb3B0OworICAg
IG1faXNSdW5uaW5nRXBoZW1lcmFsTWVhc3VyZW1lbnRUZXN0ID0gZmFsc2U7CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IDM5MWRmNjNhNjIwNTk1NDlmMGM5ODU1NDNj
MGNmNGQ3YjNlNGY4MDYuLmNkNzJmMjUxYWVlYmExZGZjY2UwYTY3MDNhMmU1ZDg0MzM5ZWRiOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNjUsMTIgKzY1LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNl
VVJMLCBVUkwmJiBkZXN0aW5hdGlvblVSTCk7CiAgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVk
QXNFeHBpcmVkRm9yVGVzdGluZygpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBzZXRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2
YWx1ZSkgeyBtX2lzUnVubmluZ0VwaGVtZXJhbE1lYXN1cmVtZW50VGVzdCA9IHZhbHVlOyB9CiAg
ICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVu
bGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwg
U3RyaW5nJiYga2V5SUQpOwogICAgIHZvaWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsIEZ1bmN0aW9uPHZvaWQoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlC
YXNlNjRVUkwpPiYmKTsKICAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYmKTsKKyAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKTsKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9y
dEVuZHBvaW50KTsKICAgICB2b2lkIGF0dHJpYnV0ZShjb25zdCBTb3VyY2VTaXRlJiwgY29uc3Qg
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpOwog
ICAgIHZvaWQgZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQp
OwpAQCAtODAsOCArODIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGZlYXR1cmVFbmFibGVkKCkg
Y29uc3Q7CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3Q7CiAKKyAgICBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBtX2VwaGVtZXJhbE1lYXN1cmVtZW50Owog
ICAgIFdlYkNvcmU6OlRpbWVyIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGltZXI7
CiAgICAgYm9vbCBtX2lzUnVubmluZ1Rlc3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1J1bm5p
bmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8
VVJMPiBtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzsKICAgICBzdGQ6Om9wdGlvbmFsPFVS
TD4gbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc7CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vz
c2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCmluZGV4IGM3N2EzYTYyMTNiMTY4Y2Q3Yzk2MDQ4NDYyODFhYzM1ZjM1OTRjODkuLjg1
MTYzZjQ0NTBhY2UzZDM2ZDU5NzE2OTZkNDgxZWI3ODBhZWQwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMzA4Miw2ICszMDgyLDE0IEBAIHZvaWQgV0tQ
YWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKFdLUGFnZVJlZiBwCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGJvb2wgdmFsdWUsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBoZW1lcmFs
TWVhc3VyZW1lbnRGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29u
dGV4dCkKK3sKKyAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyh2
YWx1ZSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICAgICAgY2FsbGJhY2so
Y2FsbGJhY2tDb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBXS1BhZ2VTaW11bGF0ZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdl
U2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewogICAgIENSQVNIX0lGX1NVU1BFTkRFRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAppbmRleCA5
YWU3ZTg2MjA4OTcwMTNjNzU3Yjc1YmEyNmJjZTg5OTA2YWEzMzgxLi5mMDBmZWM4YTc5ZjZmZTJk
YzEzZmNjYWZiZjYwMGU5Y2U4YWEwOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBAIC0xNzgsNiArMTc4LDggQEAgdHlwZWRlZiB2b2lkICgq
V0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZ0Z1
bmN0aW9uKSgKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgdmFsdWUsIFdLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
Z0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdl
TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tD
b250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVw
aGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2YWx1ZSwg
V0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRl
c3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYg
dm9pZCAoKldLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFn
ZSwgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5n
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA3MDNlM2RiY2UwY2U2NmQ0MDBiYTkzZTk1Y2ZkYWZjZjA3
OTkxMjg2Li5hYzlhNzc0OGYzZTBkNzJjMzdmZjg0ZDRiODQwZjBiNWU3Zjk0NzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwNDA0LDYgKzEwNDA0LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tCiAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdv
cmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhib29sIHZhbHVlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2Vic2l0ZURhdGFTdG9y
ZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6U2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZv
clRlc3RpbmcobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdmFsdWUpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzaW11bGF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdv
cmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQobV93ZWJzaXRlRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMWU2MzUzNDRiZjljYTljNmRmNDJh
OTBkMDgyMDQxMWFhOTllYjQxNS4uYWYyNTZlZmI2MjVmZjgwMDY5M2M1ODM3YTg0MTFjOTUyM2Nk
ZGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NTgsNiAr
MTc1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVu
dEZvclRlc3RpbmcoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmMTg3ZDI1ZDM1ODRmYjQ0MTAyZTVjNzI3ZTBhZGI3NWU3Y2U0MDE4Li45Y2I0MjFkZGRh
OTE3MDFhZDIzMmJiMWZiZTRhYzUyMjAyMzIwYjg1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDgtMjMgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBTdXBwb3J0
IGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRoIG5vbi1wZXJzaXN0ZW50IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjg5ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxNzc4MjEzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEthdGUgQ2hlbmV5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBlcGhlbWVyYWwgbWVhc3VyZW1lbnQgd2l0aCBub24tcGVyc2lzdGVudAor
ICAgICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBmb3IgZGlyZWN0IHJlc3Bv
bnNlIGFkdmVydGlzaW5nLgorICAgICAgICBTdWNoIGFkdmVydGlzaW5nIG1lYW5zIHRoZXJlIGlz
IG9ubHkgb25lIHBlbmRpbmcgY2xpY2ssIGhlbGQgaW4gbWVtb3J5LAorICAgICAgICBhbmQgb25s
eSBzdG9yZWQgcmlnaHQgYmVmb3JlIHRoZSB0cmlnZ2VyaW5nIGV2ZW50IGNhdXNlcyBhdHRyaWJ1
dGlvbgorICAgICAgICByZXBvcnRzIHRvIGJlIHNjaGVkdWxlZC4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVy
YWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAy
MDIxLTA4LTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3QtdGV4dC1pbi1leGlzdGluZy1zZWxlY3Rp
b24uaHRtbCBmYWlscyBvbiBpT1MgMTUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGI1
MzRhYjZjYjkzOWNkYWVjYzI3MGQ5NjY5ZmQ2MTY4MmYwZWJlOTEuLjY3MjczYjc4OGRjMTkyNDA3
YTQxMjQ0Njk4OGE2OWNhYjQ2YmMwYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAt
NDA4LDYgKzQwOCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgY2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiAg
ICAgdW5kZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRl
c3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHVuZGVmaW5lZCBz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhi
b29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2Vzc2lvblJlc3RhcnQoKTsKICAgICB1bmRlZmluZWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5k
ZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0
aW5nKERPTVN0cmluZyB1cmwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMzhmMzliYjQ4MzQ0ZDgyN2NiMGFjODY1
MjkwMjliYTJjNTc5NGZjOC4uYjIyODQzY2YwZThmM2JiZGNmNWE2YzEwNDgwMzU5NTAyMTk3MTBh
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCkBAIC0yMDU4LDYgKzIwNTgsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjptYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQog
ICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmciKTsKIH0KIAordm9pZCBUZXN0UnVubmVy
OjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGlu
Zyhib29sIHZhbHVlKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJTZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyIsIHZhbHVl
KTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXNzaW9uUmVzdGFydCgpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIlNpbXVs
YXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0Iik7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGE3NzVi
NzdlMTM0Njc4MDNmMDgyNzZmNDQ5NGRiZGQ1NjZmNzdiYzMuLjI5ZjViZDVlOWM1MWYxMzQ4Y2Iw
NzA1MzQzMzIyZDE5MDAzNWI2MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MzEsNiArNTMxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTHNG
b3JUZXN0aW5nKEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25V
UkwpOwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcoKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmco
SlNTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBKU1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgSlNT
dHJpbmdSZWYgc2lnbmF0dXJlLCBKU1N0cmluZ1JlZiBrZXlJRCk7CiAgICAgdm9pZCBzaW11bGF0
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCgpOwogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDdkYWUzNGUyOWEyODVmNjJlZWVmZjYw
ZWE1Njc3N2E3OWZkOWI0NDkuLjNlYzBkZDIxZjQwMmFjZWM2YTgxOGQzZDVmMDUwNWI1N2EwNmVh
NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjU4
LDYgKzM2NTgsMTMgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6bWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCkKICAgICBydW5VbnRpbChjYWxs
YmFja0NvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmco
Ym9vbCB2YWx1ZSkKK3sKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxsYmFja0Nv
bnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKKyAgICBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGluZyhtX21haW5XZWJWaWV3LT5w
YWdlKCksIHZhbHVlLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxsYmFjaywgJmNhbGxi
YWNrQ29udGV4dCk7CisgICAgcnVuVW50aWwoY2FsbGJhY2tDb250ZXh0LmRvbmUsIG5vVGltZW91
dCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nlc3Npb25SZXN0YXJ0KCkKIHsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRD
YWxsYmFja0NvbnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAxYjdhNDc2N2YxMDk2NmVkOTE1NjE5MzU3M2U4ZjIy
YjEwOGIwMmRlLi4yNjk1NmFmODYyMmVkNjUwN2JkZmY5ZWM5Nzc1NWM3N2FmMGRjYzcyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNDUsNiArMzQ1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsKCk7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92
ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgdm9p
ZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVwaGVtZXJhbE1lYXN1cmVtZW50Rm9yVGVzdGlu
Zyhib29sIHZhbHVlKTsKICAgICB2b2lkIHNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
c3Npb25SZXN0YXJ0KCk7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2Vu
UHVibGljS2V5VVJMRm9yVGVzdGluZyhXS1VSTFJlZik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhXS1VSTFJlZik7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDM2ZWVjN2RkYWExMTZk
OWRhY2ZhYmU3MDU4OWQ3ODU5N2RjNDNjZTEuLjZmMzlmMTQ4NDRiZjE1YmViZjc5YWYyODlmODc0
MzhmZDQyNWEzMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CkBAIC0xMzYwLDYgKzEzNjAsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVy
YWxNZWFzdXJlbWVudEZvclRlc3RpbmciKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZv
clRlc3RpbmcoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
IikpIHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KCk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGU4ZWQyN2ExNTAxZDZmNzQwZDY4ODFiYzY2MDcwZDcyNmVhNGZiZjguLjY1OTg3
ZWZmNWVhYzA1MmZkNjU0YjAwN2Y3Nzc4MjFiNmYyNzI2ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAyMS0wOC0yMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBQQ006IFN1cHBvcnQgZXBoZW1lcmFsIG1lYXN1cmVtZW50IHdpdGggbm9uLXBlcnNpc3Rl
bnQgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODk4NAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODE3NzgyMTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2F0ZSBDaGVuZXkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVwaGVtZXJhbCBtZWFzdXJlbWVudCB3aXRo
IG5vbi1wZXJzaXN0ZW50CisgICAgICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
IGZvciBkaXJlY3QgcmVzcG9uc2UgYWR2ZXJ0aXNpbmcuCisgICAgICAgIFN1Y2ggYWR2ZXJ0aXNp
bmcgbWVhbnMgdGhlcmUgaXMgb25seSBvbmUgcGVuZGluZyBjbGljaywgaGVsZCBpbiBtZW1vcnks
CisgICAgICAgIGFuZCBvbmx5IHN0b3JlZCByaWdodCBiZWZvcmUgdGhlIHRyaWdnZXJpbmcgZXZl
bnQgY2F1c2VzIGF0dHJpYnV0aW9uCisgICAgICAgIHJlcG9ydHMgdG8gYmUgc2NoZWR1bGVkLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlv
bi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9h
dHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cmVzb3VyY2VzL3V0aWwuanM6CisgICAgICAgICh0ZWFyRG93bkFuZEZpbmlzaCk6CisgICAgICAg
ICAgICBSZXNldHMgdGhlIG5ldyB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
RXBoZW1lcmFsTWVhc3VyZW1lbnRGb3JUZXN0aW5nKCkuCisKIDIwMjEtMDgtMjMgIEF5dW1pIEtv
amltYSAgPGF5dW1pX2tvamltYUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyAxNF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzdG9yYWdlL2V2ZW50X2Nhc2Vfc2Vuc2l0aXZl
Lmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91
Z2gtaW1hZ2UtcmVkaXJlY3QtZXBoZW1lcmFsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10
aHJvdWdoLWltYWdlLXJlZGlyZWN0LWVwaGVtZXJhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmQ2OWQ1MzljMmQwZjdlYTJlYWUwMmM5YzJlNjRiMDQ1MTRjMGNlMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmli
dXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LWVwaGVtZXJhbC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdHJpZ2dlcmluZyBvZiBlcGhlbWVyYWwgcHJp
dmF0ZSBjbGljayBtZWFzdXJlbWVudCBhdHRyaWJ1dGlvbnMuCisKKworQXR0cmlidXRlZCBQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50czoKK1dlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
IDEKK1NvdXJjZSBzaXRlOiAxMjcuMC4wLjEKK0F0dHJpYnV0ZSBvbiBzaXRlOiBsb2NhbGhvc3QK
K1NvdXJjZSBJRDogMworQXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAxMgorQXR0cmlidXRpb24g
cHJpb3JpdHk6IDAKK0F0dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogV2l0aGluIDI0
LTQ4IGhvdXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVj
dC1lcGhlbWVyYWwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LWVw
aGVtZXJhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZDUxNTk2ZDIwMTliM2I2M2U2NTM5NTA0ZWY0NDJi
NjllMThlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1y
ZWRpcmVjdC1lcGhlbWVyYWwuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4K
KzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAg
ICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0
aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1l
b3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0cmlnZ2VyaW5n
IG9mIGVwaGVtZXJhbCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IGF0dHJpYnV0aW9ucy48L2Rp
dj4KKzxhIGlkPSJ0YXJnZXRMaW5rIiBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJl
ZGlyZWN0LWVwaGVtZXJhbC5odG1sP3N0ZXBUd28iIGF0dHJpYnV0aW9uc291cmNlaWQ9MyBhdHRy
aWJ1dGlvbmRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxpbms8L2E+PGJyPgor
PGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgcHJlcGFyZVRlc3QoKTsKKwor
ICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKKyAgICAgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOworICAgICAgICB2YXIg
Y2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwor
ICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRI
ZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkp
LnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7CisgICAg
ICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09
PSAiP3N0ZXBUd28iKSB7CisgICAgICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5z
cmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNv
dXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucHk/Y29udmVyc2lvbkRhdGE9MTIiOworICAgICAg
ICAgICAgICAgIGltYWdlRWxlbWVudC5pZCA9ICJwaXhlbCI7CisgICAgICAgICAgICAgICAgaW1h
Z2VFbGVtZW50Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7CisgICAgICAgICAgICAgICAgICAg
IHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcodHJ1ZSk7CisgICAgICAgICAgICAg
ICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iiku
aW5uZXJUZXh0ID0gIkZBSUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICB9CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvdXRpbC5qcwpp
bmRleCAzMzJiOTRlNzAwZTJjM2VkZmMxZDljZmRkOTMxYmU4ZmZlMGUyNjQ4Li5lN2MzY2Q4OGM0
Mjg2MDJlNjEzODAzZmM0OTIzNmY4NmYxN2ZhZGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy91dGlsLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2Vz
L3V0aWwuanMKQEAgLTExLDYgKzExLDcgQEAgZnVuY3Rpb24gdGVhckRvd25BbmRGaW5pc2goKSB7
CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWxs
b3dzQW55U1NMQ2VydGlmaWNhdGUoZmFsc2UpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoZmFsc2UpOworICAgICAg
ICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RXBoZW1lcmFsTWVhc3VyZW1l
bnRGb3JUZXN0aW5nKGZhbHNlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoIiIsICIiKTsKICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZygiIik7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoIiIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>