<?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>205041</bug_id>
          
          <creation_ts>2019-12-09 17:24:16 -0800</creation_ts>
          <short_desc>IsLoggedIn: Abstract data type for IsLoggedIn state</short_desc>
          <delta_ts>2019-12-13 12:37:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local 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>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597041</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-09 17:24:16 -0800</bug_when>
    <thetext>We need data representation for IsLoggedIn state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597042</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-09 17:24:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/56723904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597043</commentid>
    <comment_count>2</comment_count>
      <attachid>385217</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-09 17:28:11 -0800</bug_when>
    <thetext>Created attachment 385217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597237</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-10 10:18:34 -0800</bug_when>
    <thetext>The ios-wk2 bot failure is an unrelated text diff thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597324</commentid>
    <comment_count>4</comment_count>
      <attachid>385217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-10 13:11:18 -0800</bug_when>
    <thetext>Comment on attachment 385217
Patch

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

&gt; Source/WebCore/page/IsLoggedIn.cpp:33
&gt; +    initialize(domain, username, tokenType, authType, m_authType == IsLoggedInAuthenticationType::Unmanaged ? LoggedInExpiryShort : LoggedInExpiryLong);

Using m_authType here is wrong.

&gt; Source/WebCore/page/IsLoggedIn.cpp:41
&gt; +void IsLoggedIn::initialize(const RegistrableDomain&amp; domain, const String&amp; username, IsLoggedInCredentialTokenType tokenType, IsLoggedInAuthenticationType authType, const Seconds&amp; expiry)

Why don&apos;t we have one constructor call the other instead of having an initialize() method?

&gt; Source/WebCore/page/IsLoggedIn.cpp:53
&gt; +    for (unsigned i = 0; i &lt; length; ++i) {

Seems like this could use String::find(CodeUnitMatchFunction)

&gt; Source/WebCore/page/IsLoggedIn.cpp:71
&gt; +void IsLoggedIn::setExpiry(const Seconds&amp; expiry)

no need for const &amp;.

&gt; Source/WebCore/page/IsLoggedIn.cpp:76
&gt; +    if (m_authType == IsLoggedInAuthenticationType::Unmanaged)

m_expiryTime = m_loggedInTime + std::min(expiry, m_authType == IsLoggedInAuthenticationType::Unmanaged ? LoggedInExpiryShort : LoggedInExpiryLong);

&gt; Source/WebCore/page/IsLoggedIn.h:35
&gt; +enum IsLoggedInCredentialTokenType : bool { LegacyCookie, HttpStateToken };

enum class
Http -&gt; HTTP

&gt; Source/WebCore/page/IsLoggedIn.h:36
&gt; +enum IsLoggedInAuthenticationType : uint8_t { WebAuthn, PasswordManager, Unmanaged };

enum class

&gt; Source/WebCore/page/IsLoggedIn.h:40
&gt; +

We should probably drop this blank line.

&gt; Source/WebCore/page/IsLoggedIn.h:51
&gt; +    WEBCORE_EXPORT void setExpiry(const Seconds&amp;);

It is confusing that expiry() returns a expiration date/time as a MonotonicTime, but setExpiry() sets a lifetime in seconds. Maybe this should be called setLifetime()?
?

&gt; Source/WebCore/page/IsLoggedIn.h:54
&gt; +    RegistrableDomain registrableDomain() const { return m_domain; }

const RegistrableDomain&amp;

&gt; Source/WebCore/page/IsLoggedIn.h:55
&gt; +    String username() const { return m_username; }

const String&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597348</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-10 14:18:59 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 385217 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385217&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/IsLoggedIn.cpp:33
&gt; &gt; +    initialize(domain, username, tokenType, authType, m_authType == IsLoggedInAuthenticationType::Unmanaged ? LoggedInExpiryShort : LoggedInExpiryLong);
&gt; 
&gt; Using m_authType here is wrong.

You&apos;re right! Good catch.

&gt; &gt; Source/WebCore/page/IsLoggedIn.cpp:41
&gt; &gt; +void IsLoggedIn::initialize(const RegistrableDomain&amp; domain, const String&amp; username, IsLoggedInCredentialTokenType tokenType, IsLoggedInAuthenticationType authType, const Seconds&amp; expiry)
&gt; 
&gt; Why don&apos;t we have one constructor call the other instead of having an
&gt; initialize() method?

You mean delegating constructors. I thought of that but remember seeing other places where we seemed to prefer an initialize() function. But I&apos;ll try the delegating approach.

&gt; &gt; Source/WebCore/page/IsLoggedIn.cpp:53
&gt; &gt; +    for (unsigned i = 0; i &lt; length; ++i) {
&gt; 
&gt; Seems like this could use String::find(CodeUnitMatchFunction)

Have not used that before. Will have a look.

&gt; &gt; Source/WebCore/page/IsLoggedIn.cpp:71
&gt; &gt; +void IsLoggedIn::setExpiry(const Seconds&amp; expiry)
&gt; 
&gt; no need for const &amp;.

Ah. There are a few instances of it in WebKit but not too many. Will fix.

&gt; &gt; Source/WebCore/page/IsLoggedIn.cpp:76
&gt; &gt; +    if (m_authType == IsLoggedInAuthenticationType::Unmanaged)
&gt; 
&gt; m_expiryTime = m_loggedInTime + std::min(expiry, m_authType ==
&gt; IsLoggedInAuthenticationType::Unmanaged ? LoggedInExpiryShort :
&gt; LoggedInExpiryLong);

Good suggestion.

&gt; &gt; Source/WebCore/page/IsLoggedIn.h:35
&gt; &gt; +enum IsLoggedInCredentialTokenType : bool { LegacyCookie, HttpStateToken };
&gt; 
&gt; enum class

Will fix.

&gt; Http -&gt; HTTP

Will fix.

&gt; &gt; Source/WebCore/page/IsLoggedIn.h:36
&gt; &gt; +enum IsLoggedInAuthenticationType : uint8_t { WebAuthn, PasswordManager, Unmanaged };
&gt; 
&gt; enum class

Will fix.

&gt; &gt; Source/WebCore/page/IsLoggedIn.h:40
&gt; &gt; +
&gt; 
&gt; We should probably drop this blank line.

Will fix.

&gt; &gt; Source/WebCore/page/IsLoggedIn.h:51
&gt; &gt; +    WEBCORE_EXPORT void setExpiry(const Seconds&amp;);
&gt; 
&gt; It is confusing that expiry() returns a expiration date/time as a
&gt; MonotonicTime, but setExpiry() sets a lifetime in seconds. Maybe this should
&gt; be called setLifetime()?
&gt; ?

Hmm. I&apos;ll think about it and get them aligned.

&gt; &gt; Source/WebCore/page/IsLoggedIn.h:54
&gt; &gt; +    RegistrableDomain registrableDomain() const { return m_domain; }
&gt; 
&gt; const RegistrableDomain&amp;

Will fix.

&gt; &gt; Source/WebCore/page/IsLoggedIn.h:55
&gt; &gt; +    String username() const { return m_username; }
&gt; 
&gt; const String&amp;

Will fix.

Thanks, Chris! Excellent feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597457</commentid>
    <comment_count>6</comment_count>
      <attachid>385327</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-10 17:49:40 -0800</bug_when>
    <thetext>Created attachment 385327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597461</commentid>
    <comment_count>7</comment_count>
      <attachid>385329</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-10 17:53:37 -0800</bug_when>
    <thetext>Created attachment 385329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597462</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-10 17:54:06 -0800</bug_when>
    <thetext>Forgot to update the change log with the fixed function name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597703</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-11 11:29:07 -0800</bug_when>
    <thetext>The api-ios test failure for TestWebKitAPI.WebKit.MediaCache is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597776</commentid>
    <comment_count>10</comment_count>
      <attachid>385329</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-11 13:56:36 -0800</bug_when>
    <thetext>Comment on attachment 385329
Patch

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

&gt; Source/WebCore/page/IsLoggedIn.cpp:48
&gt; +    auto spaceOrNewline = username.find([](UChar ch) {

Wouldn&apos;t this work?
auto spaceOrNewline = username.find(isSpaceOrNewline);

&gt; Source/WebCore/page/IsLoggedIn.h:35
&gt; +enum class IsLoggedInCredentialTokenType : bool { LegacyCookie, HTTPStateToken };

Given that you have IsLoggedIn in the name of your enum, you might as well move it inside the class scope and drop the IsLoggedIn prefix.

&gt; Source/WebCore/page/IsLoggedIn.h:36
&gt; +enum class IsLoggedInAuthenticationType : uint8_t { WebAuthn, PasswordManager, Unmanaged };

Ditto.

&gt; Source/WebCore/page/IsLoggedIn.h:38
&gt; +class IsLoggedIn {

As discussed offline, IsLoggedIn is an off name for a class IMHO. I&apos;d prefer something like LoggedInStatus

&gt; Source/WebCore/page/IsLoggedIn.h:63
&gt; +    IsLoggedInCredentialTokenType m_tokenType;

Your class has a default constructor but this does not have a default value.

&gt; Source/WebCore/page/IsLoggedIn.h:64
&gt; +    IsLoggedInAuthenticationType m_authType;

ditto.

&gt; Source/WebCore/page/IsLoggedIn.h:66
&gt; +    MonotonicTime m_expiryTime;

Note that if you are going to persist these to disk, then I do not think that using MonotonicTime is safe. IIRC, MonotonicTime gets reset on device restart.

&gt; Source/WebCore/page/IsLoggedIn.h:73
&gt; +template&lt;&gt; struct EnumTraits&lt;WebCore::IsLoggedInAuthenticationType&gt; {

Can you please check with Alex to see if we really still need EnumTraits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597897</commentid>
    <comment_count>11</comment_count>
      <attachid>385467</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-11 17:50:32 -0800</bug_when>
    <thetext>Created attachment 385467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597898</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-11 17:53:18 -0800</bug_when>
    <thetext>The style checker complained when I indented the initializer list for the constructor:

ERROR: Source/WebCore/page/LoggedInStatus.cpp:63:  Code inside a namespace should not be indented.  [whitespace/indent] [4]

That&apos;s why it&apos;s not indented. Looks ugly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597908</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-11 18:36:07 -0800</bug_when>
    <thetext>We still need EnumTraits according to Alex and I wasn’t able to use username.find(isSpaceOrNewline).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598152</commentid>
    <comment_count>14</comment_count>
      <attachid>385467</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-12 14:54:37 -0800</bug_when>
    <thetext>Comment on attachment 385467
Patch

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

&gt; Source/WebCore/page/LoggedInStatus.cpp:62
&gt; +: m_domain { domain }

Indentation problem.

&gt; Source/WebCore/page/LoggedInStatus.h:39
&gt; +class LoggedInStatus : public RefCounted&lt;LoggedInStatus&gt; {

Without seeing how this will be used, it is hard for me to comment on whether or not this should subclass RefCounted.

&gt; Source/WebCore/page/LoggedInStatus.h:62
&gt; +    using RefCounted::ref;

Why is this needed?

&gt; Source/WebCore/page/LoggedInStatus.h:63
&gt; +    using RefCounted::deref;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598406</commentid>
    <comment_count>15</comment_count>
      <attachid>385617</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-13 10:59:56 -0800</bug_when>
    <thetext>Created attachment 385617
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598410</commentid>
    <comment_count>16</comment_count>
      <attachid>385617</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 11:18:45 -0800</bug_when>
    <thetext>Comment on attachment 385617
Patch for landing

Clearing flags on attachment: 385617

Committed r253489: &lt;https://trac.webkit.org/changeset/253489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598411</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 11:18:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598451</commentid>
    <comment_count>18</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-13 12:37:57 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; Comment on attachment 385467 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385467&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/LoggedInStatus.cpp:62
&gt; &gt; +: m_domain { domain }
&gt; 
&gt; Indentation problem.

Yeah, it was the style checker complaining. I fixed it though.

&gt; &gt; Source/WebCore/page/LoggedInStatus.h:39
&gt; &gt; +class LoggedInStatus : public RefCounted&lt;LoggedInStatus&gt; {
&gt; 
&gt; Without seeing how this will be used, it is hard for me to comment on
&gt; whether or not this should subclass RefCounted.

As discussed offline, I switched to a unique ref.

&gt; &gt; Source/WebCore/page/LoggedInStatus.h:62
&gt; &gt; +    using RefCounted::ref;
&gt; 
&gt; Why is this needed?

No longer. It was some build issue I addressed with it but that might have been when I was figuring out the ISO heap allocation. Might have been a red herring.

&gt; &gt; Source/WebCore/page/LoggedInStatus.h:63
&gt; &gt; +    using RefCounted::deref;
&gt; 
&gt; Ditto.

No longer.

Thanks, Chris!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385217</attachid>
            <date>2019-12-09 17:28:11 -0800</date>
            <delta_ts>2019-12-10 17:49:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205041-20191209172810.patch</filename>
            <type>text/plain</type>
            <size>29465</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiMjZiYzgxNDJlNjc5
ZTY0OTlhOGMwZGExOGM5MzE3MzBjZGQ5NS4uODA0N2RlZDhmYTFkZjg5NzcyMDJlNTk5MDk0NWM5
NGRhMmM3YTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEyLTA5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzTG9nZ2VkSW46IEFi
c3RyYWN0IGRhdGEgdHlwZSBmb3IgSXNMb2dnZWRJbiBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjcyMzkwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvSXNMb2dnZWRJbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6
SXNMb2dnZWRJbik6CisgICAgICAgIChXZWJDb3JlOjpJc0xvZ2dlZEluOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SXNMb2dnZWRJbjo6c2V0RXhwaXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklzTG9n
Z2VkSW46Omhhc0V4cGlyZWQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvSXNMb2dnZWRJbi5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OnVzZXJuYW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmNyZWRlbnRpYWxUb2tlblR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6YXV0aGVudGljYXRpb25UeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmxvZ2dlZEluVGltZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJc0xvZ2dlZEluOjpleHBpcnkgY29uc3QpOgorCiAyMDE5LTEyLTA5ICBN
ZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRmlsbCBI
aWdobGlnaHRSYW5nZUdyb3VwIGFuZCBIaWdobGlnaHRNYXAgd2l0aCB2YWx1ZXMgZnJvbSBKYXZh
U2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJjYTczY2Y5ZTdmNjg1MGVmZmZkOWJkNGFkZTAwNWEx
MTY1YzNiYTAuLmJlMGNkZDc4ZjAzMDdmZDZmYjI0Y2NlODRiYmNmODgyNjdjZTVjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0xNjA1LDYgKzE2MDUsNyBAQCBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRl
eHQuY3BwCiBwYWdlL0hpc3RvcnkuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAog
cGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcAorcGFnZS9Jc0xvZ2dlZEluLmNwcAog
cGFnZS9Mb2NhdGlvbi5jcHAKIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKIHBhZ2UvTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMDgyZmIwNWExZTIyYWZjZDA0OGM3ZGUzMWE2
ZGQ2ZDEzYmIxMDk2Li5jYTg3M2I5MThiYjlkZTdhOGU3NTNjNDRhYmE1NjE1ZDUxZGUxYjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xOTg4LDYgKzE5ODgsNyBAQAogCQk2QjBBMDdGMjIxRkE0QjVDMDBENTczOTEgLyogQWRD
bGlja0F0dHJpYnV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QjBBMDdGMDIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkIxRjQ4
MTEyMjk4QTM3RTAwREU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMUY0ODBGMjI5
ODlFQzQwMERFOEI4MiAvKiBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkIzNDgwOTQwRUVG
NTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2
QjRENDEyRDIzOTgzRjg4MDAyNDk0QzIgLyogSXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8q
IElzTG9nZ2VkSW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2QjRFODYxMzIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNEU4NjEyMjIx
QjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNTA3QTI0MjM0QkYzNDEwMEJFN0M2MiAv
KiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QjUwN0EyMTIzNEJGMzQxMDBCRTdDNjIgLyogTmF2aWdhdG9ySXNMb2dn
ZWRJbi5oICovOyB9OwogCQk2QjY5M0EyRTFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjAwLDYgKzky
MDEsOCBAQAogCQk2QjBBMDdGMTIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMUY0ODBGMjI5ODlFQzQwMERFOEI4MiAvKiBDcm9zc1Np
dGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzU2l0ZU5hdmln
YXRpb25EYXRhVHJhbnNmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIzNDgw
OTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2QjRENDEyQjIzOTgzRjg4MDAyNDk0QzIgLyogSXNMb2dnZWRJbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJc0xvZ2dlZEluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCNEQ0MTJDMjM5
ODNGODgwMDI0OTRDMiAvKiBJc0xvZ2dlZEluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzTG9n
Z2VkSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjRFODYxMjIyMUI3MTNG
MDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0cmFi
bGVEb21haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI1MDdBMjEyMzRCRjM0
MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdh
dG9ySXNMb2dnZWRJbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjUwN0EyMjIz
NEJGMzQxMDBCRTdDNjIgLyogTmF2aWdhdG9ySXNMb2dnZWRJbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYXZpZ2F0b3JJc0xvZ2dlZEluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE2NzQ3LDExICsxNjc1MCwxMSBAQAogCQkJCTExOTlGQTU5MjA4RTNDN0YwMDIzNThDQyAv
KiBEaXNwbGF5Qm94LmggKi8sCiAJCQkJRTRGQjRCMzUyMzlCRUIxMDAwM0MzMzZBIC8qIERpc3Bs
YXlJbmxpbmVDb250ZW50LmNwcCAqLywKIAkJCQlFNDUxQzYzMzIzOTQwNThFMDA5OTMxOTAgLyog
RGlzcGxheUlubGluZUNvbnRlbnQuaCAqLywKKwkJCQkxMTJGQjM1MDIzOUMyM0M0MDA4NzA1NEEg
LyogRGlzcGxheUlubGluZVJlY3QuaCAqLywKIAkJCQk2RkI0N0U2MTIyNzc0MjVBMDBDN0JDQjAg
LyogRGlzcGxheUxpbmVCb3guaCAqLywKIAkJCQk2Rjc3ODY4NTIzNDkxQUM2MDA0RDk2MzYgLyog
RGlzcGxheVBhaW50ZXIuY3BwICovLAogCQkJCTZGNzc4Njg3MjM0OTFBRDcwMDREOTYzNiAvKiBE
aXNwbGF5UGFpbnRlci5oICovLAogCQkJCTZGRDlDRDUyMjI3RTIxQzgwMEU1Mzk1NyAvKiBEaXNw
bGF5UmVjdC5oICovLAotCQkJCTExMkZCMzUwMjM5QzIzQzQwMDg3MDU0QSAvKiBEaXNwbGF5SW5s
aW5lUmVjdC5oICovLAogCQkJCTZGQ0UxQTE4MjI2MThBQjMwMDRGMDM0MyAvKiBEaXNwbGF5UnVu
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRpc3BsYXl0cmVlOwpAQCAtMjA2NDgsNiArMjA2NTEs
OCBAQAogCQkJCTBGNDcxMEQ4MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZl
ckVudHJ5LmNwcCAqLywKIAkJCQkwRjQ3MTBEOTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJFbnRyeS5oICovLAogCQkJCTBGNDcxMERBMURCNkZFMjIwMDJEQ0VDMyAvKiBJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbCAqLywKKwkJCQk2QjRENDEyQzIzOTgzRjg4MDAy
NDk0QzIgLyogSXNMb2dnZWRJbi5jcHAgKi8sCisJCQkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMy
IC8qIElzTG9nZ2VkSW4uaCAqLywKIAkJCQlFNDkxNkZGNjE5NURGNkEwMDA1QUIzNDkgLyogTGF5
ZXJGbHVzaFRocm90dGxlU3RhdGUuaCAqLywKIAkJCQk5MzFENzJGNTE1RkU2OTUzMDBDNEMwN0Ug
LyogTGF5b3V0TWlsZXN0b25lLmggKi8sCiAJCQkJQkNFMUM0MUEwRDk4Mjk4MDAwM0IwMkYyIC8q
IExvY2F0aW9uLmNwcCAqLywKQEAgLTI5NjA2LDYgKzI5NjExLDggQEAKIAkJCQk3RURBQUZDOTE5
QTJDQ0RDMDAzNERGRDEgLyogRGlza0NhY2hlTW9uaXRvckNvY29hLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxMTk5RkE1QjIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMTJGQjM1MjIzOUMyM0M0MDA4NzA1NEEgLyogRGlzcGxh
eUlubGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNC
MCAvKiBEaXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDMxQzNERDUx
RTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFD
M0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzAyNjUsNyArMzAyNzIsNiBAQAogCQkJCTExNUNGQTdFMjA4QjhFMTAwMDFF
Njk5MSAvKiBJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGRTdD
RkEyMjE3N0VFRjIwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0U3ODkxNjExMjBENjA4MDA2MEVDRTUgLyogSW5saW5lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUxpbmVCcmVh
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5s
aW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUwMjM5OTk0MjEwMDE1
MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDMz
Niw2ICszMDM0Miw3IEBACiAJCQkJNkY5NURFNEUyMzdCODg5QzAwRTUxN0UxIC8qIEludmFsaWRh
dGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBCNEFBQjE4REExQ0NEMDA0MzRERTEg
LyogSU9TdXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4
OUQgLyogSU9TdXJmYWNlUG9vbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkI0RDQxMkQyMzk4M0Y4
ODAwMjQ5NEMyIC8qIElzTG9nZ2VkSW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUZGNDk5MjE2
MkUyQkUwMDRCRDg2RiAvKiBJU09Cb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNENzIwQjRGMjI2
OEI1MTMwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNENUZGNDlFMjE2MkU0RTgwMDRCRDg2RiAvKiBJU09PcmlnaW5hbEZvcm1hdEJv
eC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTkyNyw3ICszMTkzNCw2IEBACiAJCQkJQkM1RUI2Njgw
RTgxQ0I3MTAwQjI1OTY1IC8qIFJlbmRlclN0eWxlQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzY3MDhDMTEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzNjcwOEMzMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdDb250YWlu
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTExMkZCMzUyMjM5QzIzQzQwMDg3MDU0QSAvKiBEaXNw
bGF5SW5saW5lUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkIzNjVDODQxNTI1MTE5RTAwOTFE
MjdCIC8qIFJlbmRlclNWR0VsbGlwc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQzA5MkJDMTJE
OUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzY3MDhDNTEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSXNMb2dnZWRJ
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lzTG9nZ2VkSW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFl
ZmZiZTA2Y2VlN2Y0Mzk1NzhjMTk1Y2Y5ZmFiYTM3MDhkMzA5NjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lzTG9nZ2VkSW4uY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSXNMb2dnZWRJbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0lzTG9nZ2VkSW46OklzTG9nZ2VkSW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgSXNMb2dnZWRJ
bkNyZWRlbnRpYWxUb2tlblR5cGUgdG9rZW5UeXBlLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25U
eXBlIGF1dGhUeXBlKQoreworICAgIGluaXRpYWxpemUoZG9tYWluLCB1c2VybmFtZSwgdG9rZW5U
eXBlLCBhdXRoVHlwZSwgbV9hdXRoVHlwZSA9PSBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBl
OjpVbm1hbmFnZWQgPyBMb2dnZWRJbkV4cGlyeVNob3J0IDogTG9nZ2VkSW5FeHBpcnlMb25nKTsK
K30KKworSXNMb2dnZWRJbjo6SXNMb2dnZWRJbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlw
ZSB0b2tlblR5cGUsIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUsIGNvbnN0
IFNlY29uZHMmIGV4cGlyeSkKK3sKKyAgICBpbml0aWFsaXplKGRvbWFpbiwgdXNlcm5hbWUsIHRv
a2VuVHlwZSwgYXV0aFR5cGUsIGV4cGlyeSk7Cit9CisKK3ZvaWQgSXNMb2dnZWRJbjo6aW5pdGlh
bGl6ZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVzZXJu
YW1lLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZSB0b2tlblR5cGUsIElzTG9nZ2VkSW5B
dXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUsIGNvbnN0IFNlY29uZHMmIGV4cGlyeSkKK3sKKyAg
ICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHVzZXJu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0g
dXNlcm5hbWUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IFVzZXJuYW1lTWF4TGVuZ3RoKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUodXNlcm5hbWVbaV0pKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZG9tYWluID0gZG9tYWluOworICAgIG1fdXNl
cm5hbWUgPSB1c2VybmFtZTsKKyAgICBtX3Rva2VuVHlwZSA9IHRva2VuVHlwZTsKKyAgICBtX2F1
dGhUeXBlID0gYXV0aFR5cGU7CisgICAgbV9sb2dnZWRJblRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKKyAgICBzZXRFeHBpcnkoZXhwaXJ5KTsKK30KKworYm9vbCBJc0xvZ2dlZEluOjppc1Zh
bGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZG9tYWluLmlzRW1wdHkoKSAmJiAhbV91c2Vy
bmFtZS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgSXNMb2dnZWRJbjo6c2V0RXhwaXJ5KGNvbnN0IFNl
Y29uZHMmIGV4cGlyeSkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fYXV0aFR5cGUgPT0gSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5t
YW5hZ2VkKQorICAgICAgICBtX2V4cGlyeVRpbWUgPSBtX2xvZ2dlZEluVGltZSArIHN0ZDo6bWlu
KGV4cGlyeSwgTG9nZ2VkSW5FeHBpcnlTaG9ydCk7CisgICAgZWxzZQorICAgICAgICBtX2V4cGly
eVRpbWUgPSBtX2xvZ2dlZEluVGltZSArIHN0ZDo6bWluKGV4cGlyeSwgTG9nZ2VkSW5FeHBpcnlM
b25nKTsKK30KKworYm9vbCBJc0xvZ2dlZEluOjpoYXNFeHBpcmVkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIWlzVmFsaWQoKSB8fCBNb25vdG9uaWNUaW1lOjpub3coKSA+IG1fZXhwaXJ5VGltZTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Jc0xvZ2dlZEluLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0lzTG9nZ2VkSW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDdhYzNiYmIxNGEx
OGY4YTA2MjUzMGUwYmI1NGNmYzA1MzhhMDhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Jc0xvZ2dlZEluLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNpbmNsdWRlIDx3
dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBJ
c0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZSA6IGJvb2wgeyBMZWdhY3lDb29raWUsIEh0dHBT
dGF0ZVRva2VuIH07CitlbnVtIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUgOiB1aW50OF90
IHsgV2ViQXV0aG4sIFBhc3N3b3JkTWFuYWdlciwgVW5tYW5hZ2VkIH07CisKK2NsYXNzIElzTG9n
Z2VkSW4geworcHVibGljOgorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBVc2VybmFt
ZU1heExlbmd0aCA9IDY0OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBMb2dnZWRJbkV4
cGlyeVNob3J0IHsgMjRfaCAqIDcgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgTG9n
Z2VkSW5FeHBpcnlMb25nIHsgMjRfaCAqIDkwIH07CisgICAgCisgICAgSXNMb2dnZWRJbigpID0g
ZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJc0xvZ2dlZEluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tl
blR5cGUsIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IElzTG9nZ2VkSW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBTdHJpbmcmIHVzZXJu
YW1lLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0
aW9uVHlwZSwgY29uc3QgU2Vjb25kcyYgZXhwaXJ5KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBpcnko
Y29uc3QgU2Vjb25kcyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRXhwaXJlZCgpIGNv
bnN0OworCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7
IHJldHVybiBtX2RvbWFpbjsgfQorICAgIFN0cmluZyB1c2VybmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlcm5hbWU7IH0KKyAgICBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZSBjcmVkZW50
aWFsVG9rZW5UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90b2tlblR5cGU7IH0KKyAgICBJc0xvZ2dl
ZEluQXV0aGVudGljYXRpb25UeXBlIGF1dGhlbnRpY2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXV0aFR5cGU7IH0KKyAgICBNb25vdG9uaWNUaW1lIGxvZ2dlZEluVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nZ2VkSW5UaW1lOyB9CisgICAgTW9ub3RvbmljVGltZSBleHBpcnkoKSBjb25z
dCB7IHJldHVybiBtX2V4cGlyeVRpbWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0
aWFsaXplKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwg
SXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGUsIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5
cGUsIGNvbnN0IFNlY29uZHMmIGV4cGlyeSk7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBtX2Rv
bWFpbjsKKyAgICBTdHJpbmcgbV91c2VybmFtZTsKKyAgICBJc0xvZ2dlZEluQ3JlZGVudGlhbFRv
a2VuVHlwZSBtX3Rva2VuVHlwZTsKKyAgICBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlIG1f
YXV0aFR5cGU7CisgICAgTW9ub3RvbmljVGltZSBtX2xvZ2dlZEluVGltZTsKKyAgICBNb25vdG9u
aWNUaW1lIG1fZXhwaXJ5VGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6SXNM
b2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OklzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUsCisgICAg
ICAgIFdlYkNvcmU6OklzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuLAorICAg
ICAgICBXZWJDb3JlOjpJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpQYXNzd29yZE1hbmFn
ZXIsCisgICAgICAgIFdlYkNvcmU6OklzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlVubWFu
YWdlZAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNzBlMWQ5MmNmMTMyN2I5YTU0Yzlk
NTJmNzEyYjg0Zjg0MmQzZTY5Li5lY2NhZjUzMTIyYjhjYzcwN2Y5ZWE2ZmYwZGU2ZDc5MjNjYTA3
MzJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTktMTItMDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgSXNMb2dnZWRJbjogQWJzdHJhY3QgZGF0YSB0eXBlIGZvciBJc0xv
Z2dlZEluIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDUwNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NzIzOTA0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0lzTG9nZ2VkSW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBSZW1vdmUgLS08Y29uZmln
dXJhdGlvbj4gZmxhZ3MgZnJvbSBDSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MTNiODFm
YzU5YzQxNzVmZGIzYjM5ZDc0MzBmYzFiNmM1MzhkZWFmLi5kZjRhY2Q2YzE4MGIxNDMzYTQzMGFh
MDcyMTcxNmJiMjc1MWQ4ZDk3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQxLDYgKzQ0
MSw3IEBACiAJCTZCMzA2MTA2MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzA2MTA1MjE4
QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSAqLzsgfTsKIAkJNkI0RTg2MUMyMjIw
QTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNEU4NjFCMjIyMEE1NTIwMDIyRjM4OSAvKiBS
ZWdpc3RyYWJsZURvbWFpbi5jcHAgKi87IH07CiAJCTZCOUFCRTEyMjA4Njk1MkYwMEQ3NURFNiAv
KiBIVFRQUGFyc2Vycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QjlBQkUxMTIwODY5NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3BwICovOyB9
OworCQk2QkY0QTY4MzIzOUVENENEMDBFMkY0NUIgLyogSXNMb2dnZWRJbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkY0QTY4MjIzOUVENENEMDBF
MkY0NUIgLyogSXNMb2dnZWRJbi5jcHAgKi87IH07CiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2
OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQu
Y3BwICovOyB9OwogCQk3MjVDM0VGMzIyMDU4QTVCMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjVDM0VGMjIyMDU4NEJBMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1
cHBvcnRlZEltYWdlVHlwZXMuaHRtbCAqLzsgfTsKIAkJNzI4M0E5RDAyMkZBNzU0OTAwQjIxQzdE
IC8qIGltZy13aXRoLXJvdGF0ZWQtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjgzQTlDRTIyRkE2QkJFMDBCMjFDN0QgLyog
aW1nLXdpdGgtcm90YXRlZC1pbWFnZS5odG1sICovOyB9OwpAQCAtMjAwOCw2ICsyMDA5LDcgQEAK
IAkJNkIzMDYxMDUyMThBMzcyOTAwRjVBODAyIC8qIENsb3NpbmdXZWJWaWV3Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ2xvc2luZ1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZCNEU4NjFCMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZCOUFCRTExMjA4Njk1MkYwMEQ3NURFNiAvKiBIVFRQUGFyc2Vycy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQUGFyc2Vycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZCRjRBNjgyMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBJc0xvZ2dlZEluLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElzTG9nZ2VkSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjVDM0VGMjIyMDU4NEJBMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEFkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyODNB
OUNFMjJGQTZCQkUwMEIyMUM3RCAvKiBpbWctd2l0aC1yb3RhdGVkLWltYWdlLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1nLXdpdGgtcm90YXRlZC1pbWFnZS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4M0E5RDEyMkZCMUQ5NzAwQjIxQzdEIC8qIGV4
aWYtb3JpZW50YXRpb24tOC1sbG8uanBnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UuanBlZzsgcGF0aCA9ICJleGlmLW9yaWVudGF0aW9uLTgt
bGxvLmpwZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTEyLDYgKzMxMTQsNyBA
QAogCQkJCTdBOTA5QTczMUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRQb2ludC5jcHAgKi8sCiAJCQkJ
N0E5MDlBNzQxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFJlY3QuY3BwICovLAogCQkJCTdBOTA5QTc1
MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRTaXplLmNwcCAqLywKKwkJCQk2QkY0QTY4MjIzOUVENENE
MDBFMkY0NUIgLyogSXNMb2dnZWRJbi5jcHAgKi8sCiAJCQkJQ0Q1RkY0OTYyMTYyRTI3RTAwNEJE
ODZGIC8qIElTT0JveC5jcHAgKi8sCiAJCQkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExh
eW91dFVuaXQuY3BwICovLAogCQkJCTA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dnaW5n
LmNwcCAqLywKQEAgLTQ3MDIsNiArNDcwNSw3IEBACiAJCQkJN0E5MDlBODExRDg3NzQ4MDAwN0Ux
MEY4IC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBOTA5QTgyMUQ4Nzc0ODAw
MDdFMTBGOCAvKiBJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBOTA5QTgzMUQ4Nzc0
ODAwMDdFMTBGOCAvKiBJbnRTaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZCRjRBNjgzMjM5
RUQ0Q0QwMEUyRjQ1QiAvKiBJc0xvZ2dlZEluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJG
ODkzMURENTk5QkQwMEIwMDMyOCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0Q1RkY0OUYyMTYyRTk0MzAwNEJEODZGIC8qIElTT0JveC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1QzY5QkRENTFGODJBN0VGMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1
cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Jc0xvZ2dlZEluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Jc0xvZ2dlZEluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGVkZGQ5MTFlZmRm
MGU1YzI4NWVmYmY5ZTI0MGU0ZDM5YjY1YTQyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0lzTG9nZ2VkSW4uY3BwCkBAIC0wLDAgKzEsMTc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9J
c0xvZ2dlZEluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCisvLyBQb3NpdGl2ZSB0ZXN0IGNhc2VzLgorCitURVNUKElzTG9nZ2VkSW4sIERlZmF1bHRF
eHBpcmllcykKK3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsg
fSwgImh0dHBzOi8vbG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgSXNMb2dnZWRJbiBs
b2dnZWRJbiB7IGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9r
ZW5UeXBlOjpIdHRwU3RhdGVUb2tlbiwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2Vi
QXV0aG4gfTsKKyAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIEFTU0VS
VF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLnJlZ2lz
dHJhYmxlRG9tYWluKCkuc3RyaW5nKCksICJleGFtcGxlLmNvbSJfcyk7CisgICAgQVNTRVJUX0VR
KGxvZ2dlZEluLnVzZXJuYW1lKCksICJhZG1pbiJfcyk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZElu
LmNyZWRlbnRpYWxUb2tlblR5cGUoKSwgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6Okh0
dHBTdGF0ZVRva2VuKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBl
KCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRf
VFJVRShsb2dnZWRJbi5sb2dnZWRJblRpbWUoKSA8IG5vdyArIDYwX3MpOworICAgIEFTU0VSVF9U
UlVFKGxvZ2dlZEluLmxvZ2dlZEluVGltZSgpID4gbm93IC0gNjBfcyk7CisgICAgQVNTRVJUX1RS
VUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBJc0xvZ2dlZEluOjpMb2dnZWRJbkV4cGlyeUxv
bmcgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIElz
TG9nZ2VkSW46OkxvZ2dlZEluRXhwaXJ5TG9uZyAtIDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShs
b2dnZWRJbi5oYXNFeHBpcmVkKCkpOworCisgICAgbG9nZ2VkSW4gPSBJc0xvZ2dlZEluIHsgbG9n
aW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6Okh0dHBT
dGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpQYXNzd29yZE1hbmFnZXIg
fTsKKyAgICBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBBU1NFUlRfVFJVRShsb2dn
ZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5
cGUoKSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6UGFzc3dvcmRNYW5hZ2VyKTsKKyAg
ICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dl
ZEluRXhwaXJ5TG9uZyArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgp
ID4gbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5FeHBpcnlMb25nIC0gNjBfcyk7CisgICAgQVNT
RVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7CisKKyAgICBsb2dnZWRJbiA9IElzTG9n
Z2VkSW4geyBsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2Vu
VHlwZTo6SHR0cFN0YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlVubWFu
YWdlZCB9OworICAgIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIEFTU0VSVF9UUlVF
KGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1dGhlbnRpY2F0
aW9uVHlwZSgpLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpVbm1hbmFnZWQpOworICAg
IEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2Vk
SW5FeHBpcnlTaG9ydCArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgp
ID4gbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5FeHBpcnlTaG9ydCAtIDYwX3MpOworICAgIEFT
U0VSVF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNUKElzTG9nZ2VkSW4s
IEN1c3RvbUV4cGlyaWVzKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2luRG9tYWluIHsg
VVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisKKyAgICBhdXRv
IGN1c3RvbUV4cGlyeSA9IElzTG9nZ2VkSW46OkxvZ2dlZEluRXhwaXJ5TG9uZyAtIDQ4X2g7Cisg
ICAgSXNMb2dnZWRJbiBsb2dnZWRJbiB7IGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIElzTG9nZ2Vk
SW5DcmVkZW50aWFsVG9rZW5UeXBlOjpIdHRwU3RhdGVUb2tlbiwgSXNMb2dnZWRJbkF1dGhlbnRp
Y2F0aW9uVHlwZTo6V2ViQXV0aG4sIGN1c3RvbUV4cGlyeSB9OworICAgIGF1dG8gbm93ID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsK
KyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5B
dXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5l
eHBpcnkoKSA8IG5vdyArIGN1c3RvbUV4cGlyeSArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxv
Z2dlZEluLmV4cGlyeSgpID4gbm93ICsgY3VzdG9tRXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJU
X0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7CisKKyAgICBjdXN0b21FeHBpcnkgPSBJc0xv
Z2dlZEluOjpMb2dnZWRJbkV4cGlyeVNob3J0IC0gNDhfaDsKKyAgICBsb2dnZWRJbiA9IElzTG9n
Z2VkSW4geyBsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2Vu
VHlwZTo6SHR0cFN0YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3
b3JkTWFuYWdlciwgY3VzdG9tRXhwaXJ5IH07CisgICAgbm93ID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfRVEo
bG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5
cGU6OlBhc3N3b3JkTWFuYWdlcik7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkg
PCBub3cgKyBjdXN0b21FeHBpcnkgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5l
eHBpcnkoKSA+IG5vdyArIGN1c3RvbUV4cGlyeSAtIDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShs
b2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNUKElzTG9nZ2VkSW4sIFJlbmV3ZWRFeHBp
cmllcykKK3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwg
Imh0dHBzOi8vbG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgYXV0byBjdXN0b21FeHBp
cnkgPSBJc0xvZ2dlZEluOjpMb2dnZWRJbkV4cGlyeVNob3J0IC0gNDhfaDsKKyAgICBJc0xvZ2dl
ZEluIGxvZ2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dnZWRJbkNyZWRlbnRp
YWxUb2tlblR5cGU6Okh0dHBTdGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBl
OjpXZWJBdXRobiwgY3VzdG9tRXhwaXJ5IH07CisgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VS
VF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0
aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwg
bm93ICsgY3VzdG9tRXhwaXJ5ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhw
aXJ5KCkgPiBub3cgKyBjdXN0b21FeHBpcnkgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9n
Z2VkSW4uaGFzRXhwaXJlZCgpKTsKKyAgICBhdXRvIG5ld0N1c3RvbUV4cGlyeSA9IDI0X2g7Cisg
ICAgbG9nZ2VkSW4uc2V0RXhwaXJ5KG5ld0N1c3RvbUV4cGlyeSk7CisgICAgQVNTRVJUX1RSVUUo
bG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRp
b25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAgICBB
U1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIG5ld0N1c3RvbUV4cGlyeSArIDYw
X3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgbmV3Q3VzdG9t
RXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7
Cit9CisKKy8vIE5lZ2F0aXZlIHRlc3QgY2FzZXMuCisKK1RFU1QoSXNMb2dnZWRJbiwgSW52YWxp
ZFVzZXJuYW1lcykKK3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7
IHsgfSwgImh0dHBzOi8vbG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgLy8gV2hpdGVz
cGFjZSBpcyBub3QgYWxsb3dlZC4KKyAgICBJc0xvZ2dlZEluIGxvZ2dlZEluIHsgbG9naW5Eb21h
aW4sICJJIHVzZSBzcGFjZXMiX3MsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlOjpIdHRw
U3RhdGVUb2tlbiwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4gfTsKKyAg
ICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfVFJVRShsb2dn
ZWRJbi5yZWdpc3RyYWJsZURvbWFpbigpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUobG9n
Z2VkSW4uaGFzRXhwaXJlZCgpKTsKKworICAgIC8vIE5ld2xpbmVzIGFyZSBub3QgYWxsb3dlZC4K
KyAgICBsb2dnZWRJbiA9IElzTG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwgIkVudGVyXG5yZXR1cm4i
X3MsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlOjpIdHRwU3RhdGVUb2tlbiwgSXNMb2dn
ZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4gfTsKKyAgICBBU1NFUlRfRkFMU0UobG9n
Z2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5yZWdpc3RyYWJsZURv
bWFpbigpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaGFzRXhwaXJlZCgp
KTsKKworICAgIC8vIFRoZXJlIGlzIGEgbWF4IGxlbmd0aCB0byB1c2VybmFtZXMuCisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gSXNMb2dn
ZWRJbjo6VXNlcm5hbWVNYXhMZW5ndGg7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ2En
KTsKKyAgICBsb2dnZWRJbiA9IElzTG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwgYnVpbGRlci50b1N0
cmluZygpLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SHR0cFN0YXRlVG9rZW4sIElz
TG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuIH07CisgICAgQVNTRVJUX0ZBTFNF
KGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4ucmVnaXN0cmFi
bGVEb21haW4oKS5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmhhc0V4cGly
ZWQoKSk7Cit9CisKK1RFU1QoSXNMb2dnZWRJbiwgQ2xhbXBlZEV4cGlyaWVzKQoreworICAgIFJl
Z2lzdHJhYmxlRG9tYWluIGxvZ2luRG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5l
eGFtcGxlLmNvbSJfcyB9IH07CisKKyAgICAvLyBUb28gbG9uZyBleHBpcmllcyBmb3IgbWFuYWdl
ZCBhdXRoIHR5cGVzIHNob3VsZCBiZSBjbGFtcGVkIHRvIElzTG9nZ2VkSW46OkxvZ2dlZEluRXhw
aXJ5TG9uZy4KKyAgICBJc0xvZ2dlZEluIGxvZ2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJf
cywgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6Okh0dHBTdGF0ZVRva2VuLCBJc0xvZ2dl
ZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiwgSXNMb2dnZWRJbjo6TG9nZ2VkSW5FeHBp
cnlMb25nICsgMjRfaCB9OworICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Cisg
ICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfRVEobG9nZ2Vk
SW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6Oldl
YkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIElzTG9n
Z2VkSW46OkxvZ2dlZEluRXhwaXJ5TG9uZyArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dl
ZEluLmV4cGlyeSgpID4gbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5FeHBpcnlMb25nIC0gNjBf
cyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7CisKKyAgICAvLyBU
b28gbG9uZyBleHBpcmllcyBmb3IgdW5tYW5hZ2VkIGF1dGggdHlwZXMgc2hvdWxkIGJlIGNsYW1w
ZWQgdG8gSXNMb2dnZWRJbjo6TG9nZ2VkSW5FeHBpcnlTaG9ydC4KKyAgICBsb2dnZWRJbiA9IElz
TG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRv
a2VuVHlwZTo6SHR0cFN0YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlVu
bWFuYWdlZCwgSXNMb2dnZWRJbjo6TG9nZ2VkSW5FeHBpcnlTaG9ydCArIDI0X2ggfTsKKyAgICBu
b3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1Zh
bGlkKCkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNM
b2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBBU1NFUlRfVFJVRShs
b2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluRXhwaXJ5U2hvcnQg
KyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIElzTG9n
Z2VkSW46OkxvZ2dlZEluRXhwaXJ5U2hvcnQgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9n
Z2VkSW4uaGFzRXhwaXJlZCgpKTsKKworICAgIC8vIFJlbmV3ZWQsIHRvbyBsb25nIGV4cGlyaWVz
IGZvciB1bm1hbmFnZWQgYXV0aCB0eXBlcyBzaG91bGQgYWxzbyBiZSBjbGFtcGVkIHRvIElzTG9n
Z2VkSW46OkxvZ2dlZEluRXhwaXJ5U2hvcnQuCisgICAgYXV0byBuZXdDdXN0b21FeHBpcnkgPSBJ
c0xvZ2dlZEluOjpMb2dnZWRJbkV4cGlyeVNob3J0ICsgMjRfaDsKKyAgICBsb2dnZWRJbi5zZXRF
eHBpcnkobmV3Q3VzdG9tRXhwaXJ5KTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlk
KCkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dn
ZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBBU1NFUlRfVFJVRShsb2dn
ZWRJbi5leHBpcnkoKSA8IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluRXhwaXJ5U2hvcnQgKyA2
MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIElzTG9nZ2Vk
SW46OkxvZ2dlZEluRXhwaXJ5U2hvcnQgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2Vk
SW4uaGFzRXhwaXJlZCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385327</attachid>
            <date>2019-12-10 17:49:40 -0800</date>
            <delta_ts>2019-12-10 17:53:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205041-20191210174940.patch</filename>
            <type>text/plain</type>
            <size>26948</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uZTJmYmVkNWNlMjAzZTc1NmM5ZmI0NTEzZDE0ZWE2
NGFjNTE1ZTdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEyLTEwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzTG9nZ2VkSW46IEFi
c3RyYWN0IGRhdGEgdHlwZSBmb3IgSXNMb2dnZWRJbiBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjcyMzkwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvSXNMb2dnZWRJbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6
SXNMb2dnZWRJbik6CisgICAgICAgIChXZWJDb3JlOjpJc0xvZ2dlZEluOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SXNMb2dnZWRJbjo6c2V0RXhwaXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklzTG9n
Z2VkSW46Omhhc0V4cGlyZWQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvSXNMb2dnZWRJbi5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OnJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OnVzZXJuYW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmNyZWRlbnRpYWxUb2tlblR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6YXV0aGVudGljYXRpb25UeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmxvZ2dlZEluVGltZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJc0xvZ2dlZEluOjpleHBpcnkgY29uc3QpOgorCiAyMDE5LTEyLTEwICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZvciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBiY2E3M2NmOWU3ZjY4NTBlZmZmZDliZDRhZGUwMDVhMTE2NWMzYmEw
Li5iZTBjZGQ3OGYwMzA3ZmQ2ZmIyNGNjZTg0YmJjZjg4MjY3Y2U1Y2JkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMTYwNSw2ICsxNjA1LDcgQEAgcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAog
cGFnZS9IaXN0b3J5LmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAKK3BhZ2UvSXNMb2dnZWRJbi5jcHAKIHBhZ2UvTG9j
YXRpb24uY3BwCiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwCiBwYWdlL01vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJl
NGJmOS4uNTQ2NWU2N2QzYzJiNDVmNmFmNWI4ZTE3MDEwOWFmZDE2NTlmYWU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTk4
OCw2ICsxOTg4LDcgQEAKIAkJNkIwQTA3RjIyMUZBNEI1QzAwRDU3MzkxIC8qIEFkQ2xpY2tBdHRy
aWJ1dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCMUY0ODExMjI5OEEz
N0UwMERFOEI4MiAvKiBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjFGNDgwRjIyOTg5RUM0MDBE
RThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCMzQ4MDk0MEVFRjUwRDQwMEFD
MUI0MSAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkI0RDQxMkQy
Mzk4M0Y4ODAwMjQ5NEMyIC8qIElzTG9nZ2VkSW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNEQ0MTJCMjM5ODNGODgwMDI0OTRDMiAvKiBJc0xvZ2dl
ZEluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIyMUI3MTNGMDAy
MkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIgLyogTmF2aWdh
dG9ySXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkI1MDdBMjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4uaCAq
LzsgfTsKIAkJNkI2OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjY5M0Ey
RDFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTIwMCw2ICs5MjAxLDggQEAK
IAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3MzkxIC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdh
dGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMzQ4MDkyMEVFRjUw
RDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkI0RDQx
MkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIElzTG9nZ2VkSW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNMb2dn
ZWRJbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QjRENDEyQzIzOTgzRjg4MDAy
NDk0QzIgLyogSXNMb2dnZWRJbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc0xvZ2dlZEluLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RTg2MTIyMjFCNzEzRjAwMjJGMzg5
IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdHJhYmxlRG9tYWlu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNTA3QTIxMjM0QkYzNDEwMEJFN0M2
MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvcklzTG9n
Z2VkSW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI1MDdBMjIyMzRCRjM0MTAw
QkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2
aWdhdG9ySXNMb2dnZWRJbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDY0
OCw2ICsyMDY1MSw4IEBACiAJCQkJMEY0NzEwRDgxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuY3BwICovLAogCQkJCTBGNDcxMEQ5MURCNkZFMjIwMDJEQ0VDMyAv
KiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggKi8sCiAJCQkJMEY0NzEwREExREI2RkUyMjAw
MkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsICovLAorCQkJCTZCNEQ0MTJD
MjM5ODNGODgwMDI0OTRDMiAvKiBJc0xvZ2dlZEluLmNwcCAqLywKKwkJCQk2QjRENDEyQjIzOTgz
Rjg4MDAyNDk0QzIgLyogSXNMb2dnZWRJbi5oICovLAogCQkJCUU0OTE2RkY2MTk1REY2QTAwMDVB
QjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oICovLAogCQkJCTkzMUQ3MkY1MTVGRTY5
NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCAqLywKIAkJCQlCQ0UxQzQxQTBEOTgyOTgw
MDAzQjAyRjIgLyogTG9jYXRpb24uY3BwICovLApAQCAtMzAzMzcsNiArMzAzNDIsNyBAQAogCQkJ
CTZGOTVERTRFMjM3Qjg4OUMwMEU1MTdFMSAvKiBJbnZhbGlkYXRpb25TdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQwQjRBQUIxOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUMyMUU1N0QxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZCNEQ0MTJEMjM5ODNGODgwMDI0OTRDMiAvKiBJc0xvZ2dl
ZEluLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDVGRjQ5OTIxNjJFMkJFMDA0QkQ4NkYgLyogSVNP
Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDcyMEI0RjIyNjhCNTEzMDAwNDdGREUgLyogSVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDVGRjQ5RTIx
NjJFNEU4MDA0QkQ4NkYgLyogSVNPT3JpZ2luYWxGb3JtYXRCb3guaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Jc0xvZ2dlZEluLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSXNMb2dnZWRJbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMxNWQwOTM2YzgyYjliNzA4
MTEwMGU2MTFiNTZkOTJhYWQwNGE5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSXNMb2dnZWRJbi5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJc0xvZ2dlZEluLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworSXNMb2dnZWRJbjo6SXNMb2dnZWRJbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2Vu
VHlwZSB0b2tlblR5cGUsIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUpCisg
ICAgOiBJc0xvZ2dlZEluKGRvbWFpbiwgdXNlcm5hbWUsIHRva2VuVHlwZSwgYXV0aFR5cGUsIGF1
dGhUeXBlID09IElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdlZCA/IExvZ2dl
ZEluVGltZVRvTGl2ZVNob3J0IDogTG9nZ2VkSW5UaW1lVG9MaXZlTG9uZykKK3sKK30KKworSXNM
b2dnZWRJbjo6SXNMb2dnZWRJbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIHVzZXJuYW1lLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZSB0b2tlblR5
cGUsIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUsIFNlY29uZHMgdGltZVRv
TGl2ZSkKK3sKKyAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKHVzZXJuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdXNlcm5hbWUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IFVzZXJuYW1l
TWF4TGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNwYWNlT3JOZXdsaW5lID0g
dXNlcm5hbWUuZmluZChbXShVQ2hhciBjaCkgeworICAgICAgICByZXR1cm4gaXNTcGFjZU9yTmV3
bGluZShjaCk7CisgICAgfSk7CisgICAgaWYgKHNwYWNlT3JOZXdsaW5lICE9IG5vdEZvdW5kKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2RvbWFpbiA9IGRvbWFpbjsKKyAgICBtX3VzZXJuYW1l
ID0gdXNlcm5hbWU7CisgICAgbV90b2tlblR5cGUgPSB0b2tlblR5cGU7CisgICAgbV9hdXRoVHlw
ZSA9IGF1dGhUeXBlOworICAgIG1fbG9nZ2VkSW5UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CisgICAgc2V0VGltZVRvTGl2ZSh0aW1lVG9MaXZlKTsKK30KKworYm9vbCBJc0xvZ2dlZEluOjpp
c1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZG9tYWluLmlzRW1wdHkoKSAmJiAhbV91
c2VybmFtZS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgSXNMb2dnZWRJbjo6c2V0VGltZVRvTGl2ZShT
ZWNvbmRzIHRpbWVUb0xpdmUpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZXhwaXJ5VGltZSA9IG1fbG9nZ2VkSW5UaW1lICsgc3RkOjptaW4odGltZVRv
TGl2ZSwgbV9hdXRoVHlwZSA9PSBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpVbm1hbmFn
ZWQgPyBMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCA6IExvZ2dlZEluVGltZVRvTGl2ZUxvbmcpOwor
fQorCitib29sIElzTG9nZ2VkSW46Omhhc0V4cGlyZWQoKSBjb25zdAoreworICAgIHJldHVybiAh
aXNWYWxpZCgpIHx8IE1vbm90b25pY1RpbWU6Om5vdygpID4gbV9leHBpcnlUaW1lOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lzTG9nZ2VkSW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSXNMb2dnZWRJbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMWEwNzQyZjI2ZjRmMzE0Zjdh
NTU2ODk1YWJlNzAzOGY2YjExZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0lzTG9nZ2VkSW4uaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgorI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIElz
TG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlIDogYm9vbCB7IExlZ2FjeUNvb2tpZSwgSFRUUFN0
YXRlVG9rZW4gfTsKK2VudW0gY2xhc3MgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZSA6IHVp
bnQ4X3QgeyBXZWJBdXRobiwgUGFzc3dvcmRNYW5hZ2VyLCBVbm1hbmFnZWQgfTsKKworY2xhc3Mg
SXNMb2dnZWRJbiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBVc2Vy
bmFtZU1heExlbmd0aCA9IDY0OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBMb2dnZWRJ
blRpbWVUb0xpdmVTaG9ydCB7IDI0X2ggKiA3IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNv
bmRzIExvZ2dlZEluVGltZVRvTGl2ZUxvbmcgeyAyNF9oICogOTAgfTsKKyAgICAKKyAgICBJc0xv
Z2dlZEluKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIElzTG9nZ2VkSW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBJc0xvZ2dlZEluQ3Jl
ZGVudGlhbFRva2VuVHlwZSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgSXNMb2dnZWRJbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFN0
cmluZyYgdXNlcm5hbWUsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlLCBJc0xvZ2dlZElu
QXV0aGVudGljYXRpb25UeXBlLCBTZWNvbmRzIHRpbWVUb0xpdmUpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFRpbWVUb0xpdmUoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNFeHBpcmVk
KCkgY29uc3Q7CisKKyAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQorICAgIGNvbnN0IFN0cmluZyYgdXNlcm5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJuYW1lOyB9CisgICAgSXNMb2dnZWRJbkNyZWRlbnRp
YWxUb2tlblR5cGUgY3JlZGVudGlhbFRva2VuVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG9rZW5U
eXBlOyB9CisgICAgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZSBhdXRoZW50aWNhdGlvblR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2F1dGhUeXBlOyB9CisgICAgTW9ub3RvbmljVGltZSBsb2dn
ZWRJblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlZEluVGltZTsgfQorICAgIE1vbm90b25p
Y1RpbWUgZXhwaXJ5KCkgY29uc3QgeyByZXR1cm4gbV9leHBpcnlUaW1lOyB9CisgICAgCitwcml2
YXRlOgorICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fZG9tYWluOworICAgIFN0cmluZyBtX3VzZXJu
YW1lOworICAgIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlIG1fdG9rZW5UeXBlOworICAg
IElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUgbV9hdXRoVHlwZTsKKyAgICBNb25vdG9uaWNU
aW1lIG1fbG9nZ2VkSW5UaW1lOworICAgIE1vbm90b25pY1RpbWUgbV9leHBpcnlUaW1lOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBl
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6SXNM
b2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6SXNMb2dnZWRJbkF1
dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4sCisgICAgICAgIFdlYkNvcmU6OklzTG9nZ2VkSW5B
dXRoZW50aWNhdGlvblR5cGU6OlBhc3N3b3JkTWFuYWdlciwKKyAgICAgICAgV2ViQ29yZTo6SXNM
b2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkCisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDAwZGFiZTczZjQ4YzNjZWUzNDE3ZDNhODY3NWY0MGY5ODM4NDgxZDIuLmQ3ZDMx
NGMyODc3MjA0Yzk1ODY0YmQzNGE5MzA3YTRiMWI3Y2Y3ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMi0x
MCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBJc0xvZ2dl
ZEluOiBBYnN0cmFjdCBkYXRhIHR5cGUgZm9yIElzTG9nZ2VkSW4gc3RhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA0MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTY3MjM5MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSXNM
b2dnZWRJbi5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTktMTItMTAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBBUEkgdGVzdCBmYWlsdXJlIGFmdGVyIHIyNTMzNTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggODEzYjgxZmM1OWM0MTc1ZmRiM2IzOWQ3NDMwZmMxYjZjNTM4ZGVhZi4uZGY0YWNkNmMx
ODBiMTQzM2E0MzBhYTA3MjE3MTZiYjI3NTFkOGQ5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0MSw2ICs0NDEsNyBAQAogCQk2QjMwNjEwNjIxOEEzNzI5MDBGNUE4MDIgLyogQ2xvc2lu
Z1dlYlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QjMwNjEwNTIxOEEzNzI5MDBGNUE4MDIgLyogQ2xvc2luZ1dlYlZpZXcubW0gKi87IH07CiAJ
CTZCNEU4NjFDMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxQjIyMjBBNTUy
MDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwICovOyB9OwogCQk2QjlBQkUxMjIwODY5
NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkI5QUJFMTEyMDg2OTUyRjAwRDc1REU2IC8qIEhUVFBQYXJz
ZXJzLmNwcCAqLzsgfTsKKwkJNkJGNEE2ODMyMzlFRDRDRDAwRTJGNDVCIC8qIElzTG9nZ2VkSW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJGNEE2
ODIyMzlFRDRDRDAwRTJGNDVCIC8qIElzTG9nZ2VkSW4uY3BwICovOyB9OwogCQk2QkZEMjk0QzFE
NUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzOEQ3RTUxQzc1MkQ1RjAwNEYxNTdEIC8qIEhh
c2hDb3VudGVkU2V0LmNwcCAqLzsgfTsKIAkJNzI1QzNFRjMyMjA1OEE1QjAwN0MzNkZDIC8qIEFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI1QzNFRjIyMjA1ODRCQTAwN0MzNkZDIC8q
IEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmh0bWwgKi87IH07CiAJCTcyODNBOUQwMjJG
QTc1NDkwMEIyMUM3RCAvKiBpbWctd2l0aC1yb3RhdGVkLWltYWdlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4M0E5Q0UyMkZBNkJC
RTAwQjIxQzdEIC8qIGltZy13aXRoLXJvdGF0ZWQtaW1hZ2UuaHRtbCAqLzsgfTsKQEAgLTIwMDgs
NiArMjAwOSw3IEBACiAJCTZCMzA2MTA1MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsb3NpbmdXZWJWaWV3Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFi
bGVEb21haW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0cmFibGVEb21haW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjlBQkUxMTIwODY5NTJGMDBENzVERTYgLyog
SFRUUFBhcnNlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUFBhcnNlcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkY0QTY4MjIzOUVENENEMDBFMkY0NUIgLyogSXNM
b2dnZWRJbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc0xvZ2dlZEluLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI1QzNFRjIyMjA1ODRCQTAwN0MzNkZDIC8qIEFkZGl0aW9u
YWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBB
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjgzQTlDRTIyRkE2QkJFMDBCMjFDN0QgLyogaW1nLXdpdGgtcm90YXRlZC1pbWFn
ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltZy13aXRoLXJvdGF0ZWQtaW1h
Z2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyODNBOUQxMjJGQjFEOTcw
MEIyMUM3RCAvKiBleGlmLW9yaWVudGF0aW9uLTgtbGxvLmpwZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLmpwZWc7IHBhdGggPSAiZXhpZi1v
cmllbnRhdGlvbi04LWxsby5qcGciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEx
Miw2ICszMTE0LDcgQEAKIAkJCQk3QTkwOUE3MzFEODc3NDc1MDA3RTEwRjggLyogSW50UG9pbnQu
Y3BwICovLAogCQkJCTdBOTA5QTc0MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRSZWN0LmNwcCAqLywK
IAkJCQk3QTkwOUE3NTFEODc3NDc1MDA3RTEwRjggLyogSW50U2l6ZS5jcHAgKi8sCisJCQkJNkJG
NEE2ODIyMzlFRDRDRDAwRTJGNDVCIC8qIElzTG9nZ2VkSW4uY3BwICovLAogCQkJCUNENUZGNDk2
MjE2MkUyN0UwMDRCRDg2RiAvKiBJU09Cb3guY3BwICovLAogCQkJCTE0NDY0MDEyMTY3QTgzMDUw
MDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLywKIAkJCQkwNzZFNTA3RTFGNDUwMzFFMDA2RTlG
NUEgLyogTG9nZ2luZy5jcHAgKi8sCkBAIC00NzAyLDYgKzQ3MDUsNyBAQAogCQkJCTdBOTA5QTgx
MUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTkw
OUE4MjFEODc3NDgwMDA3RTEwRjggLyogSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QTkwOUE4MzFEODc3NDgwMDA3RTEwRjggLyogSW50U2l6ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk2QkY0QTY4MzIzOUVENENEMDBFMkY0NUIgLyogSXNMb2dnZWRJbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzBCRjg5MzFERDU5OUJEMDBCMDAzMjggLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1
c3RlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNENUZGNDlGMjE2MkU5NDMwMDRCRDg2RiAvKiBJ
U09Cb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM2OUJERDUxRjgyQTdFRjAwMEY0RjRCIC8q
IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSXNMb2dnZWRJbi5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSXNMb2dnZWRJbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDViOGNhMjJlOWY3YzMxZGMxZTg1YWI4ZDQ0YWE4YzFkZGFjMGYzOAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Jc0xvZ2dlZEluLmNwcApAQCAt
MCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgPFdlYkNvcmUvSXNMb2dnZWRJbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworLy8gUG9zaXRpdmUgdGVzdCBjYXNlcy4KKworVEVTVChJc0xvZ2dl
ZEluLCBEZWZhdWx0RXhwaXJpZXMpCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21h
aW4geyBVUkwgeyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAg
IElzTG9nZ2VkSW4gbG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dlZElu
Q3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNh
dGlvblR5cGU6OldlYkF1dGhuIH07CisgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9FUShs
b2dnZWRJbi5yZWdpc3RyYWJsZURvbWFpbigpLnN0cmluZygpLCAiZXhhbXBsZS5jb20iX3MpOwor
ICAgIEFTU0VSVF9FUShsb2dnZWRJbi51c2VybmFtZSgpLCAiYWRtaW4iX3MpOworICAgIEFTU0VS
VF9FUShsb2dnZWRJbi5jcmVkZW50aWFsVG9rZW5UeXBlKCksIElzTG9nZ2VkSW5DcmVkZW50aWFs
VG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbik7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1dGhl
bnRpY2F0aW9uVHlwZSgpLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobik7
CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4ubG9nZ2VkSW5UaW1lKCkgPCBub3cgKyA2MF9zKTsK
KyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5sb2dnZWRJblRpbWUoKSA+IG5vdyAtIDYwX3MpOwor
ICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgSXNMb2dnZWRJbjo6TG9n
Z2VkSW5UaW1lVG9MaXZlTG9uZyArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4
cGlyeSgpID4gbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5UaW1lVG9MaXZlTG9uZyAtIDYwX3Mp
OworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworCisgICAgbG9nZ2Vk
SW4gPSBJc0xvZ2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dnZWRJbkNyZWRl
bnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25U
eXBlOjpQYXNzd29yZE1hbmFnZXIgfTsKKyAgICBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
KyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9FUShsb2dn
ZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6
UGFzc3dvcmRNYW5hZ2VyKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5v
dyArIElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZUxvbmcgKyA2MF9zKTsKKyAgICBBU1NF
UlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluVGlt
ZVRvTGl2ZUxvbmcgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJl
ZCgpKTsKKworICAgIGxvZ2dlZEluID0gSXNMb2dnZWRJbiB7IGxvZ2luRG9tYWluLCAiYWRtaW4i
X3MsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgSXNMb2dn
ZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkIH07CisgICAgbm93ID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBB
U1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50
aWNhdGlvblR5cGU6OlVubWFuYWdlZCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5
KCkgPCBub3cgKyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCArIDYwX3MpOwor
ICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgSXNMb2dnZWRJbjo6TG9n
Z2VkSW5UaW1lVG9MaXZlU2hvcnQgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4u
aGFzRXhwaXJlZCgpKTsKK30KKworVEVTVChJc0xvZ2dlZEluLCBDdXN0b21FeHBpcmllcykKK3sK
KyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBzOi8v
bG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgYXV0byBjdXN0b21FeHBpcnkgPSBJc0xv
Z2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVMb25nIC0gNDhfaDsKKyAgICBJc0xvZ2dlZEluIGxv
Z2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tl
blR5cGU6OkhUVFBTdGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJB
dXRobiwgY3VzdG9tRXhwaXJ5IH07CisgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9FUShs
b2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlw
ZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsg
Y3VzdG9tRXhwaXJ5ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkg
PiBub3cgKyBjdXN0b21FeHBpcnkgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4u
aGFzRXhwaXJlZCgpKTsKKworICAgIGN1c3RvbUV4cGlyeSA9IElzTG9nZ2VkSW46OkxvZ2dlZElu
VGltZVRvTGl2ZVNob3J0IC0gNDhfaDsKKyAgICBsb2dnZWRJbiA9IElzTG9nZ2VkSW4geyBsb2dp
bkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0
YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3b3JkTWFuYWdlciwg
Y3VzdG9tRXhwaXJ5IH07CisgICAgbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgQVNT
RVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0
aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3b3Jk
TWFuYWdlcik7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBjdXN0
b21FeHBpcnkgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5v
dyArIGN1c3RvbUV4cGlyeSAtIDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5oYXNF
eHBpcmVkKCkpOworfQorCitURVNUKElzTG9nZ2VkSW4sIFJlbmV3ZWRFeHBpcmllcykKK3sKKyAg
ICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBzOi8vbG9n
aW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgYXV0byBjdXN0b21FeHBpcnkgPSBJc0xvZ2dl
ZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCAtIDQ4X2g7CisgICAgSXNMb2dnZWRJbiBsb2dn
ZWRJbiB7IGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5U
eXBlOjpIVFRQU3RhdGVUb2tlbiwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0
aG4sIGN1c3RvbUV4cGlyeSB9OworICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfRVEobG9n
Z2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6
OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIGN1
c3RvbUV4cGlyeSArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4g
bm93ICsgY3VzdG9tRXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhh
c0V4cGlyZWQoKSk7CisgICAgYXV0byBuZXdDdXN0b21FeHBpcnkgPSAyNF9oOworICAgIGxvZ2dl
ZEluLnNldFRpbWVUb0xpdmUobmV3Q3VzdG9tRXhwaXJ5KTsKKyAgICBBU1NFUlRfVFJVRShsb2dn
ZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5
cGUoKSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VS
VF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgbmV3Q3VzdG9tRXhwaXJ5ICsgNjBfcyk7
CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBuZXdDdXN0b21FeHBp
cnkgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKK30K
KworLy8gTmVnYXRpdmUgdGVzdCBjYXNlcy4KKworVEVTVChJc0xvZ2dlZEluLCBJbnZhbGlkVXNl
cm5hbWVzKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2luRG9tYWluIHsgVVJMIHsgeyB9
LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisKKyAgICAvLyBXaGl0ZXNwYWNl
IGlzIG5vdCBhbGxvd2VkLgorICAgIElzTG9nZ2VkSW4gbG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwg
IkkgdXNlIHNwYWNlcyJfcywgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0
ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiB9OworICAgIEFT
U0VSVF9GQUxTRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZElu
LnJlZ2lzdHJhYmxlRG9tYWluKCkuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJ
bi5oYXNFeHBpcmVkKCkpOworCisgICAgLy8gTmV3bGluZXMgYXJlIG5vdCBhbGxvd2VkLgorICAg
IGxvZ2dlZEluID0gSXNMb2dnZWRJbiB7IGxvZ2luRG9tYWluLCAiRW50ZXJcbnJldHVybiJfcywg
SXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBJc0xvZ2dlZElu
QXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiB9OworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJ
bi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLnJlZ2lzdHJhYmxlRG9tYWlu
KCkuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOwor
CisgICAgLy8gVGhlcmUgaXMgYSBtYXggbGVuZ3RoIHRvIHVzZXJuYW1lcy4KKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSBJc0xvZ2dlZElu
OjpVc2VybmFtZU1heExlbmd0aDsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnYScpOwor
ICAgIGxvZ2dlZEluID0gSXNMb2dnZWRJbiB7IGxvZ2luRG9tYWluLCBidWlsZGVyLnRvU3RyaW5n
KCksIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgSXNMb2dn
ZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4gfTsKKyAgICBBU1NFUlRfRkFMU0UobG9n
Z2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5yZWdpc3RyYWJsZURv
bWFpbigpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaGFzRXhwaXJlZCgp
KTsKK30KKworVEVTVChJc0xvZ2dlZEluLCBDbGFtcGVkRXhwaXJpZXMpCit7CisgICAgUmVnaXN0
cmFibGVEb21haW4gbG9naW5Eb21haW4geyBVUkwgeyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1w
bGUuY29tIl9zIH0gfTsKKworICAgIC8vIFRvbyBsb25nIGV4cGlyaWVzIGZvciBtYW5hZ2VkIGF1
dGggdHlwZXMgc2hvdWxkIGJlIGNsYW1wZWQgdG8gSXNMb2dnZWRJbjo6TG9nZ2VkSW5UaW1lVG9M
aXZlTG9uZy4KKyAgICBJc0xvZ2dlZEluIGxvZ2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJf
cywgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBJc0xvZ2dl
ZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiwgSXNMb2dnZWRJbjo6TG9nZ2VkSW5UaW1l
VG9MaXZlTG9uZyArIDI0X2ggfTsKKyAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygp
OworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX0VRKGxv
Z2dlZEluLmF1dGhlbnRpY2F0aW9uVHlwZSgpLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBl
OjpXZWJBdXRobik7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBJ
c0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVMb25nICsgNjBfcyk7CisgICAgQVNTRVJUX1RS
VUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xp
dmVMb25nIC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7
CisKKyAgICAvLyBUb28gbG9uZyBleHBpcmllcyBmb3IgdW5tYW5hZ2VkIGF1dGggdHlwZXMgc2hv
dWxkIGJlIGNsYW1wZWQgdG8gSXNMb2dnZWRJbjo6TG9nZ2VkSW5UaW1lVG9MaXZlU2hvcnQuCisg
ICAgbG9nZ2VkSW4gPSBJc0xvZ2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dn
ZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVu
dGljYXRpb25UeXBlOjpVbm1hbmFnZWQsIElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZVNo
b3J0ICsgMjRfaCB9OworICAgIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIEFTU0VS
VF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1dGhl
bnRpY2F0aW9uVHlwZSgpLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpVbm1hbmFnZWQp
OworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgSXNMb2dnZWRJbjo6
TG9nZ2VkSW5UaW1lVG9MaXZlU2hvcnQgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJ
bi5leHBpcnkoKSA+IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZVNob3J0IC0g
NjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7CisKKyAgICAv
LyBSZW5ld2VkLCB0b28gbG9uZyBleHBpcmllcyBmb3IgdW5tYW5hZ2VkIGF1dGggdHlwZXMgc2hv
dWxkIGFsc28gYmUgY2xhbXBlZCB0byBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9y
dC4KKyAgICBhdXRvIG5ld0N1c3RvbUV4cGlyeSA9IElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRv
TGl2ZVNob3J0ICsgMjRfaDsKKyAgICBsb2dnZWRJbi5zZXRUaW1lVG9MaXZlKG5ld0N1c3RvbUV4
cGlyeSk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRf
RVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlv
blR5cGU6OlVubWFuYWdlZCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBu
b3cgKyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCArIDYwX3MpOworICAgIEFT
U0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5U
aW1lVG9MaXZlU2hvcnQgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhw
aXJlZCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385329</attachid>
            <date>2019-12-10 17:53:37 -0800</date>
            <delta_ts>2019-12-11 17:50:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205041-20191210175337.patch</filename>
            <type>text/plain</type>
            <size>26908</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uZTQ0NThjZDkxZWJhMzA1MTNmOWUzMDU1ZmM0ZWI0
N2NlNmFhMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTEyLTEwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzTG9nZ2VkSW46IEFi
c3RyYWN0IGRhdGEgdHlwZSBmb3IgSXNMb2dnZWRJbiBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjcyMzkwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvSXNMb2dnZWRJbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6
SXNMb2dnZWRJbik6CisgICAgICAgIChXZWJDb3JlOjpJc0xvZ2dlZEluOjppc1ZhbGlkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OnNldFRpbWVUb0xpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6aGFzRXhwaXJlZCBjb25zdCk6CisgICAgICAgICogcGFn
ZS9Jc0xvZ2dlZEluLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6cmVn
aXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6dXNl
cm5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6Y3JlZGVudGlhbFRv
a2VuVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJc0xvZ2dlZEluOjphdXRoZW50aWNh
dGlvblR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SXNMb2dnZWRJbjo6bG9nZ2VkSW5U
aW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklzTG9nZ2VkSW46OmV4cGlyeSBjb25zdCk6
CisKIDIwMTktMTItMTAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gYWRkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJsb2Nr
ZWQgWFBDIHNlcnZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJjYTczY2Y5ZTdmNjg1MGVmZmZkOWJk
NGFkZTAwNWExMTY1YzNiYTAuLmJlMGNkZDc4ZjAzMDdmZDZmYjI0Y2NlODRiYmNmODgyNjdjZTVj
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNjA1LDYgKzE2MDUsNyBAQCBwYWdlL0ZyYW1lVmlld0xh
eW91dENvbnRleHQuY3BwCiBwYWdlL0hpc3RvcnkuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcAorcGFnZS9Jc0xvZ2dl
ZEluLmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKIHBhZ2Uv
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1
ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5Li41NDY1ZTY3ZDNjMmI0NWY2YWY1YjhlMTcwMTA5YWZkMTY1
OWZhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xOTg4LDYgKzE5ODgsNyBAQAogCQk2QjBBMDdGMjIxRkE0QjVDMDBENTcz
OTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QjBBMDdGMDIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0dHJp
YnV0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkIxRjQ4MTEyMjk4QTM3RTAwREU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJh
bnNmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZC
MUY0ODBGMjI5ODlFQzQwMERFOEI4MiAvKiBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkIz
NDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyog
TmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk2QjRENDEyRDIzOTgzRjg4MDAyNDk0QzIgLyogSXNMb2dnZWRJbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAw
MjQ5NEMyIC8qIElzTG9nZ2VkSW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2QjRFODYxMzIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVE
b21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZC
NEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNTA3QTI0MjM0QkYzNDEw
MEJFN0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjUwN0EyMTIzNEJGMzQxMDBCRTdDNjIgLyogTmF2aWdh
dG9ySXNMb2dnZWRJbi5oICovOyB9OwogCQk2QjY5M0EyRTFDNTFBODJFMDBCMDNCRUYgLyogUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
MjAwLDYgKzkyMDEsOCBAQAogCQk2QjBBMDdGMTIxRkE0QjVDMDBENTczOTEgLyogQWRDbGlja0F0
dHJpYnV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMUY0ODBGMjI5ODlFQzQwMERFOEI4MiAv
KiBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3Nz
U2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2QjRENDEyQjIzOTgzRjg4MDAyNDk0QzIgLyogSXNMb2dnZWRJbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJc0xvZ2dlZEluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZC
NEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBJc0xvZ2dlZEluLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElzTG9nZ2VkSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjRFODYx
MjIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnaXN0cmFibGVEb21haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI1MDdB
MjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF2aWdhdG9ySXNMb2dnZWRJbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
QjUwN0EyMjIzNEJGMzQxMDBCRTdDNjIgLyogTmF2aWdhdG9ySXNMb2dnZWRJbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JJc0xvZ2dlZEluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNjQ4LDYgKzIwNjUxLDggQEAKIAkJCQkwRjQ3MTBEODFEQjZGRTIyMDAy
RENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAgKi8sCiAJCQkJMEY0NzEwRDkx
REI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaCAqLywKIAkJCQkw
RjQ3MTBEQTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5pZGwg
Ki8sCisJCQkJNkI0RDQxMkMyMzk4M0Y4ODAwMjQ5NEMyIC8qIElzTG9nZ2VkSW4uY3BwICovLAor
CQkJCTZCNEQ0MTJCMjM5ODNGODgwMDI0OTRDMiAvKiBJc0xvZ2dlZEluLmggKi8sCiAJCQkJRTQ5
MTZGRjYxOTVERjZBMDAwNUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggKi8sCiAJ
CQkJOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZS5oICovLAogCQkJ
CUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAgKi8sCkBAIC0zMDMzNyw2
ICszMDM0Miw3IEBACiAJCQkJNkY5NURFNEUyMzdCODg5QzAwRTUxN0UxIC8qIEludmFsaWRhdGlv
blN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBCNEFBQjE4REExQ0NEMDA0MzRERTEgLyog
SU9TdXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4OUQg
LyogSU9TdXJmYWNlUG9vbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkI0RDQxMkQyMzk4M0Y4ODAw
MjQ5NEMyIC8qIElzTG9nZ2VkSW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUZGNDk5MjE2MkUy
QkUwMDRCRDg2RiAvKiBJU09Cb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNENzIwQjRGMjI2OEI1
MTMwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBpbiBIZWFkZXJzICov
LAogCQkJCUNENUZGNDlFMjE2MkU0RTgwMDRCRDg2RiAvKiBJU09PcmlnaW5hbEZvcm1hdEJveC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lzTG9nZ2Vk
SW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Jc0xvZ2dlZEluLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MzE1ZDA5MzZjODJiOWI3MDgxMTAwZTYxMWI1NmQ5MmFhZDA0YTk4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Jc0xvZ2dlZEluLmNwcApAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklzTG9nZ2VkSW4uaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJc0xvZ2dlZEluOjpJc0xvZ2dlZEluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIElzTG9nZ2Vk
SW5DcmVkZW50aWFsVG9rZW5UeXBlIHRva2VuVHlwZSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9u
VHlwZSBhdXRoVHlwZSkKKyAgICA6IElzTG9nZ2VkSW4oZG9tYWluLCB1c2VybmFtZSwgdG9rZW5U
eXBlLCBhdXRoVHlwZSwgYXV0aFR5cGUgPT0gSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6
VW5tYW5hZ2VkID8gTG9nZ2VkSW5UaW1lVG9MaXZlU2hvcnQgOiBMb2dnZWRJblRpbWVUb0xpdmVM
b25nKQoreworfQorCitJc0xvZ2dlZEluOjpJc0xvZ2dlZEluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIElzTG9nZ2VkSW5DcmVkZW50aWFs
VG9rZW5UeXBlIHRva2VuVHlwZSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZSBhdXRoVHlw
ZSwgU2Vjb25kcyB0aW1lVG9MaXZlKQoreworICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXNlcm5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB1c2VybmFtZS5sZW5ndGgoKTsKKyAgICBpZiAo
bGVuZ3RoID4gVXNlcm5hbWVNYXhMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
c3BhY2VPck5ld2xpbmUgPSB1c2VybmFtZS5maW5kKFtdKFVDaGFyIGNoKSB7CisgICAgICAgIHJl
dHVybiBpc1NwYWNlT3JOZXdsaW5lKGNoKTsKKyAgICB9KTsKKyAgICBpZiAoc3BhY2VPck5ld2xp
bmUgIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZG9tYWluID0gZG9tYWlu
OworICAgIG1fdXNlcm5hbWUgPSB1c2VybmFtZTsKKyAgICBtX3Rva2VuVHlwZSA9IHRva2VuVHlw
ZTsKKyAgICBtX2F1dGhUeXBlID0gYXV0aFR5cGU7CisgICAgbV9sb2dnZWRJblRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKKyAgICBzZXRUaW1lVG9MaXZlKHRpbWVUb0xpdmUpOworfQorCiti
b29sIElzTG9nZ2VkSW46OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kb21haW4u
aXNFbXB0eSgpICYmICFtX3VzZXJuYW1lLmlzRW1wdHkoKTsKK30KKwordm9pZCBJc0xvZ2dlZElu
OjpzZXRUaW1lVG9MaXZlKFNlY29uZHMgdGltZVRvTGl2ZSkKK3sKKyAgICBpZiAoIWlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9leHBpcnlUaW1lID0gbV9sb2dnZWRJblRpbWUg
KyBzdGQ6Om1pbih0aW1lVG9MaXZlLCBtX2F1dGhUeXBlID09IElzTG9nZ2VkSW5BdXRoZW50aWNh
dGlvblR5cGU6OlVubWFuYWdlZCA/IExvZ2dlZEluVGltZVRvTGl2ZVNob3J0IDogTG9nZ2VkSW5U
aW1lVG9MaXZlTG9uZyk7Cit9CisKK2Jvb2wgSXNMb2dnZWRJbjo6aGFzRXhwaXJlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFpc1ZhbGlkKCkgfHwgTW9ub3RvbmljVGltZTo6bm93KCkgPiBtX2V4
cGlyeVRpbWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSXNMb2dn
ZWRJbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Jc0xvZ2dlZEluLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMx
YTA3NDJmMjZmNGYzMTRmN2E1NTY4OTVhYmU3MDM4ZjZiMTFmMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSXNMb2dnZWRJbi5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCisj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gY2xhc3MgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGUgOiBib29sIHsgTGVn
YWN5Q29va2llLCBIVFRQU3RhdGVUb2tlbiB9OworZW51bSBjbGFzcyBJc0xvZ2dlZEluQXV0aGVu
dGljYXRpb25UeXBlIDogdWludDhfdCB7IFdlYkF1dGhuLCBQYXNzd29yZE1hbmFnZXIsIFVubWFu
YWdlZCB9OworCitjbGFzcyBJc0xvZ2dlZEluIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQzMl90IFVzZXJuYW1lTWF4TGVuZ3RoID0gNjQ7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBTZWNvbmRzIExvZ2dlZEluVGltZVRvTGl2ZVNob3J0IHsgMjRfaCAqIDcgfTsKKyAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgTG9nZ2VkSW5UaW1lVG9MaXZlTG9uZyB7IDI0X2ggKiA5MCB9
OworICAgIAorICAgIElzTG9nZ2VkSW4oKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQg
SXNMb2dnZWRJbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFN0cmluZyYgdXNlcm5h
bWUsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlLCBJc0xvZ2dlZEluQXV0aGVudGljYXRp
b25UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJc0xvZ2dlZEluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tl
blR5cGUsIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGUsIFNlY29uZHMgdGltZVRvTGl2ZSk7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VGltZVRvTGl2ZShTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0V4cGlyZWQoKSBjb25zdDsKKworICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9CisgICAgY29u
c3QgU3RyaW5nJiB1c2VybmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcm5hbWU7IH0KKyAgICBJ
c0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZSBjcmVkZW50aWFsVG9rZW5UeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90b2tlblR5cGU7IH0KKyAgICBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBl
IGF1dGhlbnRpY2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aFR5cGU7IH0KKyAgICBN
b25vdG9uaWNUaW1lIGxvZ2dlZEluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VkSW5UaW1l
OyB9CisgICAgTW9ub3RvbmljVGltZSBleHBpcnkoKSBjb25zdCB7IHJldHVybiBtX2V4cGlyeVRp
bWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgUmVnaXN0cmFibGVEb21haW4gbV9kb21haW47Cisg
ICAgU3RyaW5nIG1fdXNlcm5hbWU7CisgICAgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGUg
bV90b2tlblR5cGU7CisgICAgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZSBtX2F1dGhUeXBl
OworICAgIE1vbm90b25pY1RpbWUgbV9sb2dnZWRJblRpbWU7CisgICAgTW9ub3RvbmljVGltZSBt
X2V4cGlyeVRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OklzTG9nZ2VkSW5B
dXRoZW50aWNhdGlvblR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
ICAgICBXZWJDb3JlOjpJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlLAorICAgICAgICBXZWJD
b3JlOjpJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiwKKyAgICAgICAgV2Vi
Q29yZTo6SXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6UGFzc3dvcmRNYW5hZ2VyLAorICAg
ICAgICBXZWJDb3JlOjpJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpVbm1hbmFnZWQKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDBkYWJlNzNmNDhjM2NlZTM0MTdkM2E4Njc1ZjQw
Zjk4Mzg0ODFkMi4uZDdkMzE0YzI4NzcyMDRjOTU4NjRiZDM0YTkzMDdhNGIxYjdjZjdmMiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDE5LTEyLTEwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIElzTG9nZ2VkSW46IEFic3RyYWN0IGRhdGEgdHlwZSBmb3IgSXNMb2dnZWRJbiBz
dGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
MDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjcyMzkwND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Jc0xvZ2dlZEluLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAxOS0xMi0xMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGZhaWx1cmUgYWZ0ZXIgcjI1MzM1MQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4MTNiODFmYzU5YzQxNzVmZGIzYjM5ZDc0MzBmYzFiNmM1
MzhkZWFmLi5kZjRhY2Q2YzE4MGIxNDMzYTQzMGFhMDcyMTcxNmJiMjc1MWQ4ZDk3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDQxLDYgKzQ0MSw3IEBACiAJCTZCMzA2MTA2MjE4QTM3Mjkw
MEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzA2MTA1MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2Vi
Vmlldy5tbSAqLzsgfTsKIAkJNkI0RTg2MUMyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxl
RG9tYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCNEU4NjFCMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgKi87IH07
CiAJCTZCOUFCRTEyMjA4Njk1MkYwMEQ3NURFNiAvKiBIVFRQUGFyc2Vycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjlBQkUxMTIwODY5NTJGMDBE
NzVERTYgLyogSFRUUFBhcnNlcnMuY3BwICovOyB9OworCQk2QkY0QTY4MzIzOUVENENEMDBFMkY0
NUIgLyogSXNMb2dnZWRJbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2QkY0QTY4MjIzOUVENENEMDBFMkY0NUIgLyogSXNMb2dnZWRJbi5jcHAgKi87
IH07CiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUy
RDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovOyB9OwogCQk3MjVDM0VGMzIyMDU4
QTVCMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjVDM0VGMjIy
MDU4NEJBMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuaHRtbCAqLzsg
fTsKIAkJNzI4M0E5RDAyMkZBNzU0OTAwQjIxQzdEIC8qIGltZy13aXRoLXJvdGF0ZWQtaW1hZ2Uu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjgzQTlDRTIyRkE2QkJFMDBCMjFDN0QgLyogaW1nLXdpdGgtcm90YXRlZC1pbWFnZS5odG1s
ICovOyB9OwpAQCAtMjAwOCw2ICsyMDA5LDcgQEAKIAkJNkIzMDYxMDUyMThBMzcyOTAwRjVBODAy
IC8qIENsb3NpbmdXZWJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2xvc2luZ1dlYlZp
ZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjFCMjIyMEE1NTIwMDIy
RjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3Ry
YWJsZURvbWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCOUFCRTExMjA4
Njk1MkYwMEQ3NURFNiAvKiBIVFRQUGFyc2Vycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQ
UGFyc2Vycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCRjRBNjgyMjM5RUQ0
Q0QwMEUyRjQ1QiAvKiBJc0xvZ2dlZEluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElzTG9nZ2Vk
SW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjVDM0VGMjIyMDU4NEJBMDA3
QzM2RkMgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyODNBOUNFMjJGQTZCQkUwMEIyMUM3RCAvKiBpbWct
d2l0aC1yb3RhdGVkLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1n
LXdpdGgtcm90YXRlZC1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI4M0E5RDEyMkZCMUQ5NzAwQjIxQzdEIC8qIGV4aWYtb3JpZW50YXRpb24tOC1sbG8uanBnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UuanBl
ZzsgcGF0aCA9ICJleGlmLW9yaWVudGF0aW9uLTgtbGxvLmpwZyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMTEyLDYgKzMxMTQsNyBAQAogCQkJCTdBOTA5QTczMUQ4Nzc0NzUwMDdF
MTBGOCAvKiBJbnRQb2ludC5jcHAgKi8sCiAJCQkJN0E5MDlBNzQxRDg3NzQ3NTAwN0UxMEY4IC8q
IEludFJlY3QuY3BwICovLAogCQkJCTdBOTA5QTc1MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRTaXpl
LmNwcCAqLywKKwkJCQk2QkY0QTY4MjIzOUVENENEMDBFMkY0NUIgLyogSXNMb2dnZWRJbi5jcHAg
Ki8sCiAJCQkJQ0Q1RkY0OTYyMTYyRTI3RTAwNEJEODZGIC8qIElTT0JveC5jcHAgKi8sCiAJCQkJ
MTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovLAogCQkJCTA3NkU1
MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCAqLywKQEAgLTQ3MDIsNiArNDcwNSw3
IEBACiAJCQkJN0E5MDlBODExRDg3NzQ4MDAwN0UxMEY4IC8qIEludFBvaW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdBOTA5QTgyMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRSZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBOTA5QTgzMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRTaXplLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTZCRjRBNjgzMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBJc0xvZ2dlZElu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODkzMURENTk5QkQwMEIwMDMyOCAvKiBJc05h
dmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1RkY0OUYyMTYy
RTk0MzAwNEJEODZGIC8qIElTT0JveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzY5QkRENTFG
ODJBN0VGMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Jc0xv
Z2dlZEluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Jc0xvZ2dlZElu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWI4Y2EyMmU5ZjdjMzFkYzFlODVhYjhkNDRhYThjMWRkYWMwZjM4
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0lz
TG9nZ2VkSW4uY3BwCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Jc0xvZ2dlZEluLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCisvLyBQb3NpdGl2ZSB0ZXN0IGNhc2Vz
LgorCitURVNUKElzTG9nZ2VkSW4sIERlZmF1bHRFeHBpcmllcykKK3sKKyAgICBSZWdpc3RyYWJs
ZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBzOi8vbG9naW4uZXhhbXBsZS5j
b20iX3MgfSB9OworCisgICAgSXNMb2dnZWRJbiBsb2dnZWRJbiB7IGxvZ2luRG9tYWluLCAiYWRt
aW4iX3MsIElzTG9nZ2VkSW5DcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgSXNM
b2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4gfTsKKyAgICBhdXRvIG5vdyA9IE1v
bm90b25pY1RpbWU6Om5vdygpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7
CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLnJlZ2lzdHJhYmxlRG9tYWluKCkuc3RyaW5nKCksICJl
eGFtcGxlLmNvbSJfcyk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLnVzZXJuYW1lKCksICJhZG1p
biJfcyk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmNyZWRlbnRpYWxUb2tlblR5cGUoKSwgSXNM
b2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuKTsKKyAgICBBU1NFUlRf
RVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlv
blR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5sb2dnZWRJblRpbWUo
KSA8IG5vdyArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmxvZ2dlZEluVGltZSgp
ID4gbm93IC0gNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cg
KyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVMb25nICsgNjBfcyk7CisgICAgQVNTRVJU
X1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVU
b0xpdmVMb25nIC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQo
KSk7CisKKyAgICBsb2dnZWRJbiA9IElzTG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwgImFkbWluIl9z
LCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIElzTG9nZ2Vk
SW5BdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3b3JkTWFuYWdlciB9OworICAgIG5vdyA9IE1vbm90
b25pY1RpbWU6Om5vdygpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7Cisg
ICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1dGhlbnRpY2F0aW9uVHlwZSgpLCBJc0xvZ2dlZEluQXV0
aGVudGljYXRpb25UeXBlOjpQYXNzd29yZE1hbmFnZXIpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dl
ZEluLmV4cGlyeSgpIDwgbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5UaW1lVG9MaXZlTG9uZyAr
IDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgSXNMb2dn
ZWRJbjo6TG9nZ2VkSW5UaW1lVG9MaXZlTG9uZyAtIDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShs
b2dnZWRJbi5oYXNFeHBpcmVkKCkpOworCisgICAgbG9nZ2VkSW4gPSBJc0xvZ2dlZEluIHsgbG9n
aW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBT
dGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpVbm1hbmFnZWQgfTsKKyAg
ICBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5p
c1ZhbGlkKCkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwg
SXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBBU1NFUlRfVFJV
RShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2
ZVNob3J0ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cg
KyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCAtIDYwX3MpOworICAgIEFTU0VS
VF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNUKElzTG9nZ2VkSW4sIEN1
c3RvbUV4cGlyaWVzKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2luRG9tYWluIHsgVVJM
IHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisKKyAgICBhdXRvIGN1
c3RvbUV4cGlyeSA9IElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZUxvbmcgLSA0OF9oOwor
ICAgIElzTG9nZ2VkSW4gbG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dl
ZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50
aWNhdGlvblR5cGU6OldlYkF1dGhuLCBjdXN0b21FeHBpcnkgfTsKKyAgICBhdXRvIG5vdyA9IE1v
bm90b25pY1RpbWU6Om5vdygpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7
CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1dGhlbnRpY2F0aW9uVHlwZSgpLCBJc0xvZ2dlZElu
QXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobik7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4u
ZXhwaXJ5KCkgPCBub3cgKyBjdXN0b21FeHBpcnkgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShs
b2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIGN1c3RvbUV4cGlyeSAtIDYwX3MpOworICAgIEFTU0VS
VF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworCisgICAgY3VzdG9tRXhwaXJ5ID0gSXNM
b2dnZWRJbjo6TG9nZ2VkSW5UaW1lVG9MaXZlU2hvcnQgLSA0OF9oOworICAgIGxvZ2dlZEluID0g
SXNMb2dnZWRJbiB7IGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIElzTG9nZ2VkSW5DcmVkZW50aWFs
VG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6
UGFzc3dvcmRNYW5hZ2VyLCBjdXN0b21FeHBpcnkgfTsKKyAgICBub3cgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VS
VF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dnZWRJbkF1dGhlbnRpY2F0
aW9uVHlwZTo6UGFzc3dvcmRNYW5hZ2VyKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBp
cnkoKSA8IG5vdyArIGN1c3RvbUV4cGlyeSArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dl
ZEluLmV4cGlyeSgpID4gbm93ICsgY3VzdG9tRXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZB
TFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7Cit9CisKK1RFU1QoSXNMb2dnZWRJbiwgUmVuZXdl
ZEV4cGlyaWVzKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2luRG9tYWluIHsgVVJMIHsg
eyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisKKyAgICBhdXRvIGN1c3Rv
bUV4cGlyeSA9IElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZVNob3J0IC0gNDhfaDsKKyAg
ICBJc0xvZ2dlZEluIGxvZ2dlZEluIHsgbG9naW5Eb21haW4sICJhZG1pbiJfcywgSXNMb2dnZWRJ
bkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGlj
YXRpb25UeXBlOjpXZWJBdXRobiwgY3VzdG9tRXhwaXJ5IH07CisgICAgYXV0byBub3cgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlkKCkpOwor
ICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dnZWRJbkF1
dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4
cGlyeSgpIDwgbm93ICsgY3VzdG9tRXhwaXJ5ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9n
Z2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBjdXN0b21FeHBpcnkgLSA2MF9zKTsKKyAgICBBU1NFUlRf
RkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKKyAgICBhdXRvIG5ld0N1c3RvbUV4cGlyeSA9
IDI0X2g7CisgICAgbG9nZ2VkSW4uc2V0VGltZVRvTGl2ZShuZXdDdXN0b21FeHBpcnkpOworICAg
IEFTU0VSVF9UUlVFKGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZElu
LmF1dGhlbnRpY2F0aW9uVHlwZSgpLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJB
dXRobik7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBuZXdDdXN0
b21FeHBpcnkgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5v
dyArIG5ld0N1c3RvbUV4cGlyeSAtIDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5o
YXNFeHBpcmVkKCkpOworfQorCisvLyBOZWdhdGl2ZSB0ZXN0IGNhc2VzLgorCitURVNUKElzTG9n
Z2VkSW4sIEludmFsaWRVc2VybmFtZXMpCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5E
b21haW4geyBVUkwgeyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKwor
ICAgIC8vIFdoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQuCisgICAgSXNMb2dnZWRJbiBsb2dnZWRJ
biB7IGxvZ2luRG9tYWluLCAiSSB1c2Ugc3BhY2VzIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRv
a2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6Oldl
YkF1dGhuIH07CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNT
RVJUX1RSVUUobG9nZ2VkSW4ucmVnaXN0cmFibGVEb21haW4oKS5pc0VtcHR5KCkpOworICAgIEFT
U0VSVF9UUlVFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7CisKKyAgICAvLyBOZXdsaW5lcyBhcmUg
bm90IGFsbG93ZWQuCisgICAgbG9nZ2VkSW4gPSBJc0xvZ2dlZEluIHsgbG9naW5Eb21haW4sICJF
bnRlclxucmV0dXJuIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRl
VG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuIH07CisgICAgQVNT
RVJUX0ZBTFNFKGxvZ2dlZEluLmlzVmFsaWQoKSk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4u
cmVnaXN0cmFibGVEb21haW4oKS5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZElu
Lmhhc0V4cGlyZWQoKSk7CisKKyAgICAvLyBUaGVyZSBpcyBhIG1heCBsZW5ndGggdG8gdXNlcm5h
bWVzLgorICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDw9IElzTG9nZ2VkSW46OlVzZXJuYW1lTWF4TGVuZ3RoOyArK2kpCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdhJyk7CisgICAgbG9nZ2VkSW4gPSBJc0xvZ2dlZEluIHsgbG9naW5Eb21haW4s
IGJ1aWxkZXIudG9TdHJpbmcoKSwgSXNMb2dnZWRJbkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBT
dGF0ZVRva2VuLCBJc0xvZ2dlZEluQXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiB9OworICAg
IEFTU0VSVF9GQUxTRShsb2dnZWRJbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dl
ZEluLnJlZ2lzdHJhYmxlRG9tYWluKCkuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShsb2dn
ZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNUKElzTG9nZ2VkSW4sIENsYW1wZWRFeHBpcmll
cykKK3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0
dHBzOi8vbG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgLy8gVG9vIGxvbmcgZXhwaXJp
ZXMgZm9yIG1hbmFnZWQgYXV0aCB0eXBlcyBzaG91bGQgYmUgY2xhbXBlZCB0byBJc0xvZ2dlZElu
OjpMb2dnZWRJblRpbWVUb0xpdmVMb25nLgorICAgIElzTG9nZ2VkSW4gbG9nZ2VkSW4geyBsb2dp
bkRvbWFpbiwgImFkbWluIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0
YXRlVG9rZW4sIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuLCBJc0xvZ2dl
ZEluOjpMb2dnZWRJblRpbWVUb0xpdmVMb25nICsgMjRfaCB9OworICAgIGF1dG8gbm93ID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsK
KyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5B
dXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5l
eHBpcnkoKSA8IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZUxvbmcgKyA2MF9z
KTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIElzTG9nZ2VkSW46
OkxvZ2dlZEluVGltZVRvTGl2ZUxvbmcgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2Vk
SW4uaGFzRXhwaXJlZCgpKTsKKworICAgIC8vIFRvbyBsb25nIGV4cGlyaWVzIGZvciB1bm1hbmFn
ZWQgYXV0aCB0eXBlcyBzaG91bGQgYmUgY2xhbXBlZCB0byBJc0xvZ2dlZEluOjpMb2dnZWRJblRp
bWVUb0xpdmVTaG9ydC4KKyAgICBsb2dnZWRJbiA9IElzTG9nZ2VkSW4geyBsb2dpbkRvbWFpbiwg
ImFkbWluIl9zLCBJc0xvZ2dlZEluQ3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4s
IElzTG9nZ2VkSW5BdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdlZCwgSXNMb2dnZWRJbjo6TG9n
Z2VkSW5UaW1lVG9MaXZlU2hvcnQgKyAyNF9oIH07CisgICAgbm93ID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRf
RVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIElzTG9nZ2VkSW5BdXRoZW50aWNhdGlv
blR5cGU6OlVubWFuYWdlZCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBu
b3cgKyBJc0xvZ2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCArIDYwX3MpOworICAgIEFT
U0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgSXNMb2dnZWRJbjo6TG9nZ2VkSW5U
aW1lVG9MaXZlU2hvcnQgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhw
aXJlZCgpKTsKKworICAgIC8vIFJlbmV3ZWQsIHRvbyBsb25nIGV4cGlyaWVzIGZvciB1bm1hbmFn
ZWQgYXV0aCB0eXBlcyBzaG91bGQgYWxzbyBiZSBjbGFtcGVkIHRvIElzTG9nZ2VkSW46OkxvZ2dl
ZEluVGltZVRvTGl2ZVNob3J0LgorICAgIGF1dG8gbmV3Q3VzdG9tRXhwaXJ5ID0gSXNMb2dnZWRJ
bjo6TG9nZ2VkSW5UaW1lVG9MaXZlU2hvcnQgKyAyNF9oOworICAgIGxvZ2dlZEluLnNldFRpbWVU
b0xpdmUobmV3Q3VzdG9tRXhwaXJ5KTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5pc1ZhbGlk
KCkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgSXNMb2dn
ZWRJbkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBBU1NFUlRfVFJVRShsb2dn
ZWRJbi5leHBpcnkoKSA8IG5vdyArIElzTG9nZ2VkSW46OkxvZ2dlZEluVGltZVRvTGl2ZVNob3J0
ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBJc0xv
Z2dlZEluOjpMb2dnZWRJblRpbWVUb0xpdmVTaG9ydCAtIDYwX3MpOworICAgIEFTU0VSVF9GQUxT
RShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385467</attachid>
            <date>2019-12-11 17:50:32 -0800</date>
            <delta_ts>2019-12-13 10:59:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205041-20191211175031.patch</filename>
            <type>text/plain</type>
            <size>29326</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNkYjc4Y2VhNjQxOTk3
MDFiZjhjZmViOWRlY2E3ZDc1MTlhYTQ4MS4uYzMyMWEwMzMxMDkyZjMwNWYzMmQwOWMzZmI2ODBi
OTEwYTdhNjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTEyLTExICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzTG9nZ2VkSW46IEFi
c3RyYWN0IGRhdGEgdHlwZSBmb3IgSXNMb2dnZWRJbiBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjcyMzkwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvTG9nZ2VkSW5TdGF0dXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZElu
U3RhdHVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OkxvZ2dl
ZEluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpzZXRUaW1lVG9M
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpoYXNFeHBpcmVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpleHBpcnkgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvTG9nZ2VkSW5TdGF0dXMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpM
b2dnZWRJblN0YXR1czo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9nZ2VkSW5TdGF0dXM6OnVzZXJuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Z2dlZEluU3RhdHVzOjpjcmVkZW50aWFsVG9rZW5UeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvZ2dlZEluU3RhdHVzOjphdXRoZW50aWNhdGlvblR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OmxvZ2dlZEluVGltZSBjb25zdCk6CisKIDIwMTktMTIt
MTEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01h
a2VdIEFkZCBPcGVuSlBFRyBmaW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlN2ExOGIzMDg3
YzA1MjhiZTU5ZWI2ODYwZTg5M2NhZjBiNzg3MDdiLi5iOGY2MjBmOWU3NGNjY2QxOTU5NzkxMjJk
YTYzMjQ1NTY4NjJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTYwOCw2ICsxNjA4LDcgQEAgcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAogcGFnZS9IaXN0b3J5LmNwcAogcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAK
K3BhZ2UvTG9nZ2VkSW5TdGF0dXMuY3BwCiBwYWdlL0xvY2F0aW9uLmNwcAogcGFnZS9NZW1vcnlS
ZWxlYXNlLmNwcAogcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZm
ZDVlNTc2NDY1MGFlZjM2MDVlYTBkNGY5MTczMGExMjE3ZGRkM2IuLjc0NGM1ZGE0YjVhYmM5YzMw
MzU3YzZjZjQ0NWQ1Mjc5MWE2NThjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5OTAsNiArMTk5MCw3IEBACiAJCTZCMEEw
N0YyMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMEEwN0YwMjFGQTRCNUMwMEQ1NzM5
MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThBMzdFMDBERThCODIgLyogQ3Jvc3NTaXRl
TmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAwREU4QjgyIC8qIENyb3NzU2l0ZU5hdmln
YXRpb25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVF
RjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTZCNEQ0MTJEMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dn
ZWRJblN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZEluU3RhdHVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEz
RjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0
cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIgLyogTmF2aWdhdG9ySXNMb2dnZWRJbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI1MDdBMjEy
MzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4uaCAqLzsgfTsKIAkJNkI2OTNB
MkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjY5M0EyRDFDNTFBODJFMDBCMDNC
RUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTIwOSw2ICs5MjEwLDggQEAKIAkJNkIwQTA3RjEyMUZB
NEI1QzAwRDU3MzkxIC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBZENsaWNrQXR0cmlidXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
QjFGNDgwRjIyOTg5RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBO
YXRpdmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5
NEMyIC8qIExvZ2dlZEluU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAv
KiBMb2dnZWRJblN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4
OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFp
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjUwN0EyMTIzNEJGMzQxMDBCRTdD
NjIgLyogTmF2aWdhdG9ySXNMb2dnZWRJbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JJc0xv
Z2dlZEluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNTA3QTIyMjM0QkYzNDEw
MEJFN0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5h
dmlnYXRvcklzTG9nZ2VkSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2
NjksNiArMjA2NzIsOCBAQAogCQkJCUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlv
bi5jcHAgKi8sCiAJCQkJQkNFMUM0MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmggKi8s
CiAJCQkJQkNFMUM0MjIwRDk4MjlGMjAwM0IwMkYyIC8qIExvY2F0aW9uLmlkbCAqLywKKwkJCQk2
QjRENDEyQzIzOTgzRjg4MDAyNDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuY3BwICovLAorCQkJCTZC
NEQ0MTJCMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oICovLAogCQkJCTkzMUJD
QzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLywKIAkJCQk1
MkUyQ0FGQjE5RkYwMjA3MDAxRUVCNEYgLyogTWVkaWFQcm9kdWNlci5oICovLAogCQkJCTQxM0Uw
MDc3MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmNwcCAqLywKQEAgLTMxMzI4LDYg
KzMxMzMzLDcgQEAKIAkJCQlBNTE2RThCNzEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyog
TG9jYWxpemVkU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMUM0MUIwRDk4Mjk4MDAw
M0IwMkYyIC8qIExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QjRENDEyRDIzOTgzRjg4
MDAyNDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjM5RTAx
MDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkEyNzNG
NDE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEQ0Q3RjMxRDQ3RTY1NTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0
aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9n
Z2VkSW5TdGF0dXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTIxNzYzZTViMmM0YmE3YzYzZTU3ZjUyMDMwY2NmN2ZlZTUyYTQ4YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9nZ2VkSW5TdGF0dXMuY3BwCkBA
IC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTG9nZ2VkSW5TdGF0dXMuaCIKKworI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExv
Z2dlZEluU3RhdHVzKTsKKworRXhjZXB0aW9uT3I8UmVmPExvZ2dlZEluU3RhdHVzPj4gTG9nZ2Vk
SW5TdGF0dXM6OmNyZWF0ZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBT
dHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBlIHRva2VuVHlwZSwgQXV0aGVudGlj
YXRpb25UeXBlIGF1dGhUeXBlKQoreworICAgIHJldHVybiBjcmVhdGUoZG9tYWluLCB1c2VybmFt
ZSwgdG9rZW5UeXBlLCBhdXRoVHlwZSwgYXV0aFR5cGUgPT0gQXV0aGVudGljYXRpb25UeXBlOjpV
bm1hbmFnZWQgPyBUaW1lVG9MaXZlU2hvcnQgOiBUaW1lVG9MaXZlTG9uZyk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxMb2dnZWRJblN0YXR1cz4+IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgQ3JlZGVu
dGlhbFRva2VuVHlwZSB0b2tlblR5cGUsIEF1dGhlbnRpY2F0aW9uVHlwZSBhdXRoVHlwZSwgU2Vj
b25kcyB0aW1lVG9MaXZlKQoreworICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIklzTG9nZ2VkSW4gc3RhdHVzIGNhbiBv
bmx5IGJlIHNldCBmb3Igb3JpZ2lucyB3aXRoIGEgcmVnaXN0cmFibGUgZG9tYWluLiIgfTsKKwor
ICAgIGlmICh1c2VybmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciwgIklzTG9nZ2VkSW4gcmVxdWlyZXMgYSBub24tZW1wdHkgdXNlcm5hbWUuIiB9
OworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gdXNlcm5hbWUubGVuZ3RoKCk7CisgICAgaWYgKGxl
bmd0aCA+IFVzZXJuYW1lTWF4TGVuZ3RoKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IsIG1ha2VTdHJpbmcoIklzTG9nZ2VkSW4gdXNlcm5hbWVzIGNhbm5vdCBiZSBsb25n
ZXIgdGhhbiAiLCBVc2VybmFtZU1heExlbmd0aCkgfTsKKworICAgIGF1dG8gc3BhY2VPck5ld2xp
bmUgPSB1c2VybmFtZS5maW5kKFtdKFVDaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBpc1NwYWNl
T3JOZXdsaW5lKGNoKTsKKyAgICB9KTsKKyAgICBpZiAoc3BhY2VPck5ld2xpbmUgIT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IsICJJ
c0xvZ2dlZEluIHVzZXJuYW1lcyBjYW5ub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVz
LiIgfTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvZ2dlZEluU3RhdHVzKGRvbWFpbiwg
dXNlcm5hbWUsIHRva2VuVHlwZSwgYXV0aFR5cGUsIHRpbWVUb0xpdmUpKTsKK30KKworTG9nZ2Vk
SW5TdGF0dXM6OkxvZ2dlZEluU3RhdHVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIENyZWRlbnRpYWxUb2tlblR5cGUgdG9rZW5UeXBlLCBB
dXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUsIFNlY29uZHMgdGltZVRvTGl2ZSkKKzogbV9kb21h
aW4geyBkb21haW4gfQorLCBtX3VzZXJuYW1lIHsgdXNlcm5hbWUgfQorLCBtX3Rva2VuVHlwZSB7
IHRva2VuVHlwZSB9CissIG1fYXV0aFR5cGUgeyBhdXRoVHlwZSB9CissIG1fbG9nZ2VkSW5UaW1l
IHsgV2FsbFRpbWU6Om5vdygpIH0KK3sKKyAgICBzZXRUaW1lVG9MaXZlKHRpbWVUb0xpdmUpOwor
fQorCit2b2lkIExvZ2dlZEluU3RhdHVzOjpzZXRUaW1lVG9MaXZlKFNlY29uZHMgdGltZVRvTGl2
ZSkKK3sKKyAgICBtX3RpbWVUb0xpdmUgPSBzdGQ6Om1pbih0aW1lVG9MaXZlLCBtX2F1dGhUeXBl
ID09IEF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkID8gVGltZVRvTGl2ZVNob3J0IDogVGlt
ZVRvTGl2ZUxvbmcpOworfQorCitib29sIExvZ2dlZEluU3RhdHVzOjpoYXNFeHBpcmVkKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoIW1fZG9tYWluLmlzRW1wdHkoKSAmJiAhbV91c2VybmFtZS5pc0Vt
cHR5KCkpOworICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgPiBtX2xvZ2dlZEluVGltZSArIG1f
dGltZVRvTGl2ZTsKK30KKworV2FsbFRpbWUgTG9nZ2VkSW5TdGF0dXM6OmV4cGlyeSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSArIG1fdGltZVRvTGl2ZTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzYThhNjc2MWFiY2Nl
M2MyODFjZGUwOGM5NTlkYjQ5YTY3MDJjZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvZ2dlZEluU3RhdHVzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExvZ2dlZEluU3Rh
dHVzIDogcHVibGljIFJlZkNvdW50ZWQ8TG9nZ2VkSW5TdGF0dXM+IHsKKyAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0VYUE9SVChMb2dnZWRJblN0YXR1cywgV0VCQ09SRV9FWFBPUlQpOworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgVXNlcm5hbWVNYXhMZW5ndGggPSA2
NDsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgVGltZVRvTGl2ZVNob3J0IHsgMjRfaCAq
IDcgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgVGltZVRvTGl2ZUxvbmcgeyAyNF9o
ICogOTAgfTsKKworICAgIGVudW0gY2xhc3MgQ3JlZGVudGlhbFRva2VuVHlwZSA6IGJvb2wgeyBM
ZWdhY3lDb29raWUsIEhUVFBTdGF0ZVRva2VuIH07CisgICAgZW51bSBjbGFzcyBBdXRoZW50aWNh
dGlvblR5cGUgOiB1aW50OF90IHsgV2ViQXV0aG4sIFBhc3N3b3JkTWFuYWdlciwgVW5tYW5hZ2Vk
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPExvZ2dlZElu
U3RhdHVzPj4gY3JlYXRlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3RyaW5nJiB1
c2VybmFtZSwgQ3JlZGVudGlhbFRva2VuVHlwZSwgQXV0aGVudGljYXRpb25UeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPExvZ2dlZEluU3RhdHVzPj4gY3Jl
YXRlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgQ3Jl
ZGVudGlhbFRva2VuVHlwZSwgQXV0aGVudGljYXRpb25UeXBlLCBTZWNvbmRzIHRpbWVUb0xpdmUp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lVG9MaXZlKFNlY29uZHMpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRXhwaXJlZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFdhbGxUaW1lIGV4cGlyeSgpIGNvbnN0OworCisgICAgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KKyAgICBj
b25zdCBTdHJpbmcmIHVzZXJuYW1lKCkgY29uc3QgeyByZXR1cm4gbV91c2VybmFtZTsgfQorICAg
IENyZWRlbnRpYWxUb2tlblR5cGUgY3JlZGVudGlhbFRva2VuVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdG9rZW5UeXBlOyB9CisgICAgQXV0aGVudGljYXRpb25UeXBlIGF1dGhlbnRpY2F0aW9uVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aFR5cGU7IH0KKyAgICBXYWxsVGltZSBsb2dnZWRJblRp
bWUoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlZEluVGltZTsgfQorCisgICAgdXNpbmcgUmVmQ291
bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCitwcml2YXRlOgorICAg
IExvZ2dlZEluU3RhdHVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgU3RyaW5nJiB1
c2VybmFtZSwgQ3JlZGVudGlhbFRva2VuVHlwZSwgQXV0aGVudGljYXRpb25UeXBlLCBTZWNvbmRz
IHRpbWVUb0xpdmUpOworCisgICAgUmVnaXN0cmFibGVEb21haW4gbV9kb21haW47CisgICAgU3Ry
aW5nIG1fdXNlcm5hbWU7CisgICAgQ3JlZGVudGlhbFRva2VuVHlwZSBtX3Rva2VuVHlwZTsKKyAg
ICBBdXRoZW50aWNhdGlvblR5cGUgbV9hdXRoVHlwZTsKKyAgICBXYWxsVGltZSBtX2xvZ2dlZElu
VGltZTsKKyAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZT4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpB
dXRoZW50aWNhdGlvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpBdXRo
ZW50aWNhdGlvblR5cGU6OldlYkF1dGhuLAorICAgICAgICBXZWJDb3JlOjpMb2dnZWRJblN0YXR1
czo6QXV0aGVudGljYXRpb25UeXBlOjpQYXNzd29yZE1hbmFnZXIsCisgICAgICAgIFdlYkNvcmU6
OkxvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdlZAorICAgID47Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBkMWY1YjJmMTc1OGE2NDI3MWM0NTQyYzAyZGM5Y2Y3ODc4MGJk
NDMxLi4zNTU3MmUzNDA2NTczOGUzNTQ4ODZiZGYxMTJjZTI2YmNkNzY1NmE1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTktMTItMTEgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgSXNMb2dnZWRJbjogQWJzdHJhY3QgZGF0YSB0eXBlIGZvciBJc0xvZ2dlZEluIHN0YXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwNDEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NzIzOTA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0xvZ2dlZEluU3RhdHVzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAxOS0xMi0xMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgUHl0aG9uIDM6IFN1cHBvcnQgc2VyaWFsIFNlcnZlclByb2Nlc3MgdGVz
dHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODEzYjgxZmM1OWM0MTc1ZmRiM2IzOWQ3NDMw
ZmMxYjZjNTM4ZGVhZi4uNmNkY2E3MzViMGU0OWZmOWY0OWYxOGNhOGFjNzU0NWZkZTkwODExYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0MSw2ICs0NDEsNyBAQAogCQk2QjMwNjEwNjIx
OEEzNzI5MDBGNUE4MDIgLyogQ2xvc2luZ1dlYlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjMwNjEwNTIxOEEzNzI5MDBGNUE4MDIgLyogQ2xv
c2luZ1dlYlZpZXcubW0gKi87IH07CiAJCTZCNEU4NjFDMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdp
c3RyYWJsZURvbWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3Bw
ICovOyB9OwogCQk2QjlBQkUxMjIwODY5NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI5QUJFMTEyMDg2
OTUyRjAwRDc1REU2IC8qIEhUVFBQYXJzZXJzLmNwcCAqLzsgfTsKKwkJNkJGNEE2ODMyMzlFRDRD
RDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRjRBNjgyMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBMb2dnZWRJ
blN0YXR1cy5jcHAgKi87IH07CiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNoQ291
bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovOyB9Owog
CQk3MjVDM0VGMzIyMDU4QTVCMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjVDM0VGMjIyMDU4NEJBMDA3QzM2RkMgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMuaHRtbCAqLzsgfTsKIAkJNzI4M0E5RDAyMkZBNzU0OTAwQjIxQzdEIC8qIGltZy13aXRo
LXJvdGF0ZWQtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjgzQTlDRTIyRkE2QkJFMDBCMjFDN0QgLyogaW1nLXdpdGgtcm90
YXRlZC1pbWFnZS5odG1sICovOyB9OwpAQCAtMjAwOCw2ICsyMDA5LDcgQEAKIAkJNkIzMDYxMDUy
MThBMzcyOTAwRjVBODAyIC8qIENsb3NpbmdXZWJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ2xvc2luZ1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4
NjFCMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZCOUFCRTExMjA4Njk1MkYwMEQ3NURFNiAvKiBIVFRQUGFyc2Vycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVFRQUGFyc2Vycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZCRjRBNjgyMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBMb2dnZWRJblN0YXR1cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNUMzRUYyMjIwNTg0QkEwMDdDMzZGQyAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXMuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4M0E5Q0Uy
MkZBNkJCRTAwQjIxQzdEIC8qIGltZy13aXRoLXJvdGF0ZWQtaW1hZ2UuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJpbWctd2l0aC1yb3RhdGVkLWltYWdlLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjgzQTlEMTIyRkIxRDk3MDBCMjFDN0QgLyogZXhpZi1v
cmllbnRhdGlvbi04LWxsby5qcGcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5qcGVnOyBwYXRoID0gImV4aWYtb3JpZW50YXRpb24tOC1sbG8u
anBnIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMTQsNiArMzExNiw3IEBACiAJ
CQkJN0E5MDlBNzUxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFNpemUuY3BwICovLAogCQkJCUNENUZG
NDk2MjE2MkUyN0UwMDRCRDg2RiAvKiBJU09Cb3guY3BwICovLAogCQkJCTE0NDY0MDEyMTY3QTgz
MDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLywKKwkJCQk2QkY0QTY4MjIzOUVENENEMDBF
MkY0NUIgLyogTG9nZ2VkSW5TdGF0dXMuY3BwICovLAogCQkJCTA3NkU1MDdFMUY0NTAzMUUwMDZF
OUY1QSAvKiBMb2dnaW5nLmNwcCAqLywKIAkJCQlDRTE4NjY0NzFGNzJFOEYxMDBBMENBQjYgLyog
TWFya2VkVGV4dC5jcHAgKi8sCiAJCQkJQTVCMTQ5REQxRjVBMTlEQzAwQzZEQUZGIC8qIE1JTUVU
eXBlUmVnaXN0cnkuY3BwICovLApAQCAtNDczMSw2ICs0NzM0LDcgQEAKIAkJCQk0NkM1MTlEQTFE
MzU1QUIyMDBEQUE1MUEgLyogTG9jYWxTdG9yYWdlTnVsbEVudHJpZXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4QzEwQUY5OTIwNjQ2N0E5MDAxOEZEOTAgLyogTG9jYWxTdG9yYWdlUGVyc2lzdGVu
Y2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTZBMkM3MDFEQ0NGQThDMDBDMEQwODUgLyogTG9j
YWxTdG9yYWdlUXVpcmtUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNkJGNEE2ODMyMzlFRDRD
RDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NkU1
MDdGMUY0NTEzRDYwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNF
MTg2NjQ5MUY3MkU4RjEwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3Q0M3REZFMjI2NjMzMDkwMEUzOTE4MSAvKiBNZWRpYUJ1ZmZlcmluZ1BvbGljeS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0xvZ2dlZEluU3RhdHVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Mb2dnZWRJblN0YXR1cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI4MzNmNzFiMjI0M2M5OTBhNmI4N2U5
MTYwMDc3MzliY2Y3OWI2YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Mb2dnZWRJblN0YXR1cy5jcHAKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0xvZ2dlZElu
U3RhdHVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CisvLyBQb3NpdGl2ZSB0ZXN0IGNhc2VzLgorCitURVNUKExvZ2dlZEluU3RhdHVzLCBEZWZhdWx0
RXhwaXJ5V2ViQXV0aG4pCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21haW4geyBV
UkwgeyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAgIGF1dG8g
bG9nZ2VkSW5SZXN1bHQgPSBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGxvZ2luRG9tYWluLCAiYWRt
aW4iX3MsIExvZ2dlZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tl
biwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIGF1
dG8mIGxvZ2dlZEluID0gbG9nZ2VkSW5SZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkuZ2V0KCk7
CisgICAgYXV0byBub3cgPSBXYWxsVGltZTo6bm93KCk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZElu
LnJlZ2lzdHJhYmxlRG9tYWluKCkuc3RyaW5nKCksICJleGFtcGxlLmNvbSJfcyk7CisgICAgQVNT
RVJUX0VRKGxvZ2dlZEluLnVzZXJuYW1lKCksICJhZG1pbiJfcyk7CisgICAgQVNTRVJUX0VRKGxv
Z2dlZEluLmNyZWRlbnRpYWxUb2tlblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkNyZWRlbnRpYWxU
b2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVu
dGljYXRpb25UeXBlKCksIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OldlYkF1
dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5sb2dnZWRJblRpbWUoKSA8IG5vdyArIDYw
X3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmxvZ2dlZEluVGltZSgpID4gbm93IC0gNjBf
cyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBMb2dnZWRJblN0
YXR1czo6VGltZVRvTGl2ZUxvbmcgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5l
eHBpcnkoKSA+IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyAtIDYwX3MpOwor
ICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNUKExvZ2dl
ZEluU3RhdHVzLCBEZWZhdWx0RXhwaXJ5UGFzc3dvcmRNYW5hZ2VyKQoreworICAgIFJlZ2lzdHJh
YmxlRG9tYWluIGxvZ2luRG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxl
LmNvbSJfcyB9IH07CisKKyAgICBhdXRvIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5TdGF0dXM6
OmNyZWF0ZShsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBMb2dnZWRJblN0YXR1czo6Q3JlZGVudGlh
bFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlv
blR5cGU6OlBhc3N3b3JkTWFuYWdlcik7CisgICAgYXV0byYgbG9nZ2VkSW4gPSBsb2dnZWRJblJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5nZXQoKTsKKyAgICBhdXRvIG5vdyA9IFdhbGxUaW1l
Ojpub3coKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIExv
Z2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3b3JkTWFuYWdlcik7CisgICAg
QVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBMb2dnZWRJblN0YXR1czo6VGlt
ZVRvTGl2ZUxvbmcgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+
IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyAtIDYwX3MpOworICAgIEFTU0VS
VF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNUKExvZ2dlZEluU3RhdHVz
LCBEZWZhdWx0RXhwaXJ5VW5tYW5hZ2VkKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2lu
RG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisK
KyAgICBhdXRvIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShsb2dpbkRv
bWFpbiwgImFkbWluIl9zLCBMb2dnZWRJblN0YXR1czo6Q3JlZGVudGlhbFRva2VuVHlwZTo6SFRU
UFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdl
ZCk7CisgICAgYXV0byYgbG9nZ2VkSW4gPSBsb2dnZWRJblJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKS5nZXQoKTsKKyAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKKyAgICBBU1NFUlRf
RVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50
aWNhdGlvblR5cGU6OlVubWFuYWdlZCk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5
KCkgPCBub3cgKyBMb2dnZWRJblN0YXR1czo6VGltZVRvTGl2ZVNob3J0ICsgNjBfcyk7CisgICAg
QVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBMb2dnZWRJblN0YXR1czo6VGlt
ZVRvTGl2ZVNob3J0IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGly
ZWQoKSk7Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIEN1c3RvbUV4cGlyeUJlbG93TG9uZykK
K3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBz
Oi8vbG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgYXV0byBjdXN0b21FeHBpcnkgPSBM
b2dnZWRJblN0YXR1czo6VGltZVRvTGl2ZUxvbmcgLSA0OF9oOworICAgIGF1dG8gbG9nZ2VkSW5S
ZXN1bHQgPSBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIExv
Z2dlZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9nZ2Vk
SW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4sIGN1c3RvbUV4cGlyeSk7Cisg
ICAgYXV0byYgbG9nZ2VkSW4gPSBsb2dnZWRJblJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5n
ZXQoKTsKKyAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKKyAgICBBU1NFUlRfRVEobG9n
Z2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlv
blR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5v
dyArIGN1c3RvbUV4cGlyeSArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGly
eSgpID4gbm93ICsgY3VzdG9tRXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dl
ZEluLmhhc0V4cGlyZWQoKSk7Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIEN1c3RvbUV4cGly
eUJlbG93U2hvcnQpCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21haW4geyBVUkwg
eyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAgIGF1dG8gY3Vz
dG9tRXhwaXJ5ID0gTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCAtIDQ4X2g7CisgICAg
YXV0byBsb2dnZWRJblJlc3VsdCA9IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUobG9naW5Eb21haW4s
ICJhZG1pbiJfcywgTG9nZ2VkSW5TdGF0dXM6OkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0
ZVRva2VuLCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpQYXNzd29yZE1hbmFn
ZXIsIGN1c3RvbUV4cGlyeSk7CisgICAgYXV0byYgbG9nZ2VkSW4gPSBsb2dnZWRJblJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKS5nZXQoKTsKKyAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3co
KTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIExvZ2dlZElu
U3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3b3JkTWFuYWdlcik7CisgICAgQVNTRVJU
X1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBjdXN0b21FeHBpcnkgKyA2MF9zKTsKKyAg
ICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIGN1c3RvbUV4cGlyeSAtIDYw
X3MpOworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCitURVNU
KExvZ2dlZEluU3RhdHVzLCBSZW5ld2VkRXhwaXJ5KQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IGxvZ2luRG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9
IH07CisKKyAgICBhdXRvIGN1c3RvbUV4cGlyeSA9IExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZl
U2hvcnQgLSA0OF9oOworICAgIGF1dG8gbG9nZ2VkSW5SZXN1bHQgPSBMb2dnZWRJblN0YXR1czo6
Y3JlYXRlKGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIExvZ2dlZEluU3RhdHVzOjpDcmVkZW50aWFs
VG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9u
VHlwZTo6V2ViQXV0aG4sIGN1c3RvbUV4cGlyeSk7CisgICAgYXV0byYgbG9nZ2VkSW4gPSBsb2dn
ZWRJblJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5nZXQoKTsKKyAgICBhdXRvIG5vdyA9IFdh
bGxUaW1lOjpub3coKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBl
KCksIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAgICBB
U1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIGN1c3RvbUV4cGlyeSArIDYwX3Mp
OworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgY3VzdG9tRXhwaXJ5
IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7CisgICAg
YXV0byBuZXdDdXN0b21FeHBpcnkgPSAyNF9oOworICAgIGxvZ2dlZEluLnNldFRpbWVUb0xpdmUo
bmV3Q3VzdG9tRXhwaXJ5KTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25U
eXBlKCksIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAg
ICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIG5ld0N1c3RvbUV4cGlyeSAr
IDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgbmV3Q3Vz
dG9tRXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQo
KSk7Cit9CisKKy8vIE5lZ2F0aXZlIHRlc3QgY2FzZXMuCisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMs
IEludmFsaWRVc2VybmFtZXMpCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21haW4g
eyBVUkwgeyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAgIC8v
IFdoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQuCisgICAgYXV0byBsb2dnZWRJblJlc3VsdCA9IExv
Z2dlZEluU3RhdHVzOjpjcmVhdGUobG9naW5Eb21haW4sICJJIHVzZSBzcGFjZXMiX3MsIExvZ2dl
ZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9nZ2VkSW5T
dGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxv
Z2dlZEluUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIC8vIE5ld2xpbmVzIGFyZSBub3Qg
YWxsb3dlZC4KKyAgICBsb2dnZWRJblJlc3VsdCA9IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUobG9n
aW5Eb21haW4sICJFbnRlclxucmV0dXJuIl9zLCBMb2dnZWRJblN0YXR1czo6Q3JlZGVudGlhbFRv
a2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5
cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJblJlc3VsdC5oYXNFeGNlcHRp
b24oKSk7CisKKyAgICAvLyBUaGVyZSBpcyBhIG1heCBsZW5ndGggdG8gdXNlcm5hbWVzLgorICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IExv
Z2dlZEluU3RhdHVzOjpVc2VybmFtZU1heExlbmd0aDsgKytpKQorICAgICAgICBidWlsZGVyLmFw
cGVuZCgnYScpOworICAgIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShs
b2dpbkRvbWFpbiwgYnVpbGRlci50b1N0cmluZygpLCBMb2dnZWRJblN0YXR1czo6Q3JlZGVudGlh
bFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlv
blR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJblJlc3VsdC5oYXNFeGNl
cHRpb24oKSk7Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIENsYW1wZWRFeHBpcnlMb25nKQor
eworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2luRG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6
Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisKKyAgICAvLyBUb28gbG9uZyBleHBpcmllcyBm
b3IgbWFuYWdlZCBhdXRoIHR5cGVzIHNob3VsZCBiZSBjbGFtcGVkIHRvIExvZ2dlZEluU3RhdHVz
OjpUaW1lVG9MaXZlTG9uZy4KKyAgICBhdXRvIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5TdGF0
dXM6OmNyZWF0ZShsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBMb2dnZWRJblN0YXR1czo6Q3JlZGVu
dGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNh
dGlvblR5cGU6OldlYkF1dGhuLCBMb2dnZWRJblN0YXR1czo6VGltZVRvTGl2ZUxvbmcgKyAyNF9o
KTsKKyAgICBhdXRvJiBsb2dnZWRJbiA9IGxvZ2dlZEluUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLmdldCgpOworICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOworICAgIEFTU0VSVF9F
UShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRp
Y2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgp
IDwgbm93ICsgTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVMb25nICsgNjBfcyk7CisgICAgQVNT
RVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBMb2dnZWRJblN0YXR1czo6VGltZVRv
TGl2ZUxvbmcgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgp
KTsKKworICAgIC8vIFJlbmV3ZWQsIHRvbyBsb25nIGV4cGlyaWVzIGZvciBtYW5hZ2VkIGF1dGgg
dHlwZXMgc2hvdWxkIGFsc28gYmUgY2xhbXBlZCB0byBMb2dnZWRJblN0YXR1czo6VGltZVRvTGl2
ZUxvbmcuCisgICAgYXV0byBuZXdDdXN0b21FeHBpcnkgPSBMb2dnZWRJblN0YXR1czo6VGltZVRv
TGl2ZUxvbmcgKyAyNF9oOworICAgIGxvZ2dlZEluLnNldFRpbWVUb0xpdmUobmV3Q3VzdG9tRXhw
aXJ5KTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIExvZ2dl
ZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OldlYkF1dGhuKTsKKyAgICBBU1NFUlRfVFJV
RShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9u
ZyArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgTG9n
Z2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVMb25nIC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxv
Z2dlZEluLmhhc0V4cGlyZWQoKSk7Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIENsYW1wZWRF
eHBpcnlTaG9ydCkKK3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7
IHsgfSwgImh0dHBzOi8vbG9naW4uZXhhbXBsZS5jb20iX3MgfSB9OworCisgICAgLy8gVG9vIGxv
bmcgZXhwaXJpZXMgZm9yIHVubWFuYWdlZCBhdXRoIHR5cGVzIHNob3VsZCBiZSBjbGFtcGVkIHRv
IExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlU2hvcnQuCisgICAgYXV0byBsb2dnZWRJblJlc3Vs
dCA9IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUobG9naW5Eb21haW4sICJhZG1pbiJfcywgTG9nZ2Vk
SW5TdGF0dXM6OkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBMb2dnZWRJblN0
YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpVbm1hbmFnZWQsIExvZ2dlZEluU3RhdHVzOjpUaW1l
VG9MaXZlU2hvcnQgKyAyNF9oKTsKKyAgICBhdXRvJiBsb2dnZWRJbiA9IGxvZ2dlZEluUmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpOworICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6Om5v
dygpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2Vk
SW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBBU1NFUlRfVFJV
RShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlU2hv
cnQgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5vdyArIExv
Z2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlU2hvcnQgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0Uo
bG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKKworICAgIC8vIFJlbmV3ZWQsIHRvbyBsb25nIGV4cGly
aWVzIGZvciB1bm1hbmFnZWQgYXV0aCB0eXBlcyBzaG91bGQgYWxzbyBiZSBjbGFtcGVkIHRvIExv
Z2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlU2hvcnQuCisgICAgYXV0byBuZXdDdXN0b21FeHBpcnkg
PSBMb2dnZWRJblN0YXR1czo6VGltZVRvTGl2ZVNob3J0ICsgMjRfaDsKKyAgICBsb2dnZWRJbi5z
ZXRUaW1lVG9MaXZlKG5ld0N1c3RvbUV4cGlyeSk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1
dGhlbnRpY2F0aW9uVHlwZSgpLCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpV
bm1hbmFnZWQpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgTG9n
Z2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxv
Z2dlZEluLmV4cGlyeSgpID4gbm93ICsgTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCAt
IDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385617</attachid>
            <date>2019-12-13 10:59:56 -0800</date>
            <delta_ts>2019-12-13 11:18:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205041-20191213105955.patch</filename>
            <type>text/plain</type>
            <size>29352</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNkYjc4Y2VhNjQxOTk3
MDFiZjhjZmViOWRlY2E3ZDc1MTlhYTQ4MS4uYjFhNTBmMzA2ZGYxNDI4YmY0YWUxOWVkZjNiYzM4
MjQ4NTM1N2M1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTEyLTEzICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIElzTG9nZ2VkSW46IEFi
c3RyYWN0IGRhdGEgdHlwZSBmb3IgSXNMb2dnZWRJbiBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjcyMzkwND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uv
TG9nZ2VkSW5TdGF0dXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3Rh
dHVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OkxvZ2dlZElu
U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpzZXRUaW1lVG9MaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpoYXNFeHBpcmVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpleHBpcnkgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvTG9nZ2VkSW5TdGF0dXMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2dn
ZWRJblN0YXR1czo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TG9nZ2VkSW5TdGF0dXM6OnVzZXJuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvZ2dl
ZEluU3RhdHVzOjpjcmVkZW50aWFsVG9rZW5UeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvZ2dlZEluU3RhdHVzOjphdXRoZW50aWNhdGlvblR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9nZ2VkSW5TdGF0dXM6OmxvZ2dlZEluVGltZSBjb25zdCk6CisKIDIwMTktMTItMTEg
IERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2Vd
IEFkZCBPcGVuSlBFRyBmaW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlN2ExOGIzMDg3YzA1
MjhiZTU5ZWI2ODYwZTg5M2NhZjBiNzg3MDdiLi5iOGY2MjBmOWU3NGNjY2QxOTU5NzkxMjJkYTYz
MjQ1NTY4NjJhODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTYwOCw2ICsxNjA4LDcgQEAgcGFnZS9G
cmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAogcGFnZS9IaXN0b3J5LmNwcAogcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5jcHAKK3Bh
Z2UvTG9nZ2VkSW5TdGF0dXMuY3BwCiBwYWdlL0xvY2F0aW9uLmNwcAogcGFnZS9NZW1vcnlSZWxl
YXNlLmNwcAogcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZmZDVl
NTc2NDY1MGFlZjM2MDVlYTBkNGY5MTczMGExMjE3ZGRkM2IuLjc0NGM1ZGE0YjVhYmM5YzMwMzU3
YzZjZjQ0NWQ1Mjc5MWE2NThjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5OTAsNiArMTk5MCw3IEBACiAJCTZCMEEwN0Yy
MjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMEEwN0YwMjFGQTRCNUMwMEQ1NzM5MSAv
KiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThBMzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAwREU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRp
b25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUw
RDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTZCNEQ0MTJEMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJ
blN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZEluU3RhdHVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAw
MjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIyMUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFi
bGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIgLyogTmF2aWdhdG9ySXNMb2dnZWRJbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI1MDdBMjEyMzRC
RjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9nZ2VkSW4uaCAqLzsgfTsKIAkJNkI2OTNBMkUx
QzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjY5M0EyRDFDNTFBODJFMDBCMDNCRUYg
LyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTIwOSw2ICs5MjEwLDggQEAKIAkJNkIwQTA3RjEyMUZBNEI1
QzAwRDU3MzkxIC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
ZENsaWNrQXR0cmlidXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFG
NDgwRjIyOTg5RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRp
dmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMy
IC8qIExvZ2dlZEluU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBM
b2dnZWRJblN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAv
KiBSZWdpc3RyYWJsZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjUwN0EyMTIzNEJGMzQxMDBCRTdDNjIg
LyogTmF2aWdhdG9ySXNMb2dnZWRJbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JJc0xvZ2dl
ZEluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNTA3QTIyMjM0QkYzNDEwMEJF
N0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZEluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmln
YXRvcklzTG9nZ2VkSW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2Njks
NiArMjA2NzIsOCBAQAogCQkJCUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5j
cHAgKi8sCiAJCQkJQkNFMUM0MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmggKi8sCiAJ
CQkJQkNFMUM0MjIwRDk4MjlGMjAwM0IwMkYyIC8qIExvY2F0aW9uLmlkbCAqLywKKwkJCQk2QjRE
NDEyQzIzOTgzRjg4MDAyNDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuY3BwICovLAorCQkJCTZCNEQ0
MTJCMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oICovLAogCQkJCTkzMUJDQzYw
MTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLywKIAkJCQk1MkUy
Q0FGQjE5RkYwMjA3MDAxRUVCNEYgLyogTWVkaWFQcm9kdWNlci5oICovLAogCQkJCTQxM0UwMDc3
MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmNwcCAqLywKQEAgLTMxMzI4LDYgKzMx
MzMzLDcgQEAKIAkJCQlBNTE2RThCNzEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0ZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9j
YWxpemVkU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMUM0MUIwRDk4Mjk4MDAwM0Iw
MkYyIC8qIExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QjRENDEyRDIzOTgzRjg4MDAy
NDk0QzIgLyogTG9nZ2VkSW5TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjM5RTAxMDlC
M0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkEyNzNGNDE3
MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEQ0Q3RjMxRDQ3RTY1NTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9u
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9nZ2Vk
SW5TdGF0dXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWFjZDY0YjY0ZjhkNmNmZjQ2NzVmMjUyOWIyM2Q3YmY0OWRjYzY1NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9nZ2VkSW5TdGF0dXMuY3BwCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TG9nZ2VkSW5TdGF0dXMuaCIKKworI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordXNpbmcgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uID0gYm9vbCAoKikoVUNoYXIpOworCitXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTG9nZ2VkSW5TdGF0dXMpOworCitFeGNlcHRpb25PcjxV
bmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIENyZWRlbnRp
YWxUb2tlblR5cGUgdG9rZW5UeXBlLCBBdXRoZW50aWNhdGlvblR5cGUgYXV0aFR5cGUpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZShkb21haW4sIHVzZXJuYW1lLCB0b2tlblR5cGUsIGF1dGhUeXBlLCBh
dXRoVHlwZSA9PSBBdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdlZCA/IFRpbWVUb0xpdmVTaG9y
dCA6IFRpbWVUb0xpdmVMb25nKTsKK30KKworRXhjZXB0aW9uT3I8VW5pcXVlUmVmPExvZ2dlZElu
U3RhdHVzPj4gTG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBlIHRva2Vu
VHlwZSwgQXV0aGVudGljYXRpb25UeXBlIGF1dGhUeXBlLCBTZWNvbmRzIHRpbWVUb0xpdmUpCit7
CisgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yLCAiSXNMb2dnZWRJbiBzdGF0dXMgY2FuIG9ubHkgYmUgc2V0IGZvciBvcmln
aW5zIHdpdGggYSByZWdpc3RyYWJsZSBkb21haW4uIiB9OworCisgICAgaWYgKHVzZXJuYW1lLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiSXNMb2dn
ZWRJbiByZXF1aXJlcyBhIG5vbi1lbXB0eSB1c2VybmFtZS4iIH07CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSB1c2VybmFtZS5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoID4gVXNlcm5hbWVNYXhM
ZW5ndGgpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgbWFrZVN0cmlu
ZygiSXNMb2dnZWRJbiB1c2VybmFtZXMgY2Fubm90IGJlIGxvbmdlciB0aGFuICIsIFVzZXJuYW1l
TWF4TGVuZ3RoKSB9OworCisgICAgYXV0byBzcGFjZU9yTmV3bGluZSA9IHVzZXJuYW1lLmZpbmQo
W10oVUNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUoY2gpOworICAg
IH0pOworICAgIGlmIChzcGFjZU9yTmV3bGluZSAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciwgIklzTG9nZ2VkSW4gdXNlcm5hbWVz
IGNhbm5vdCBjb250YWluIHdoaXRlc3BhY2Ugb3IgbmV3bGluZXMuIiB9OworCisgICAgcmV0dXJu
IG1ha2VVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+KCpuZXcgTG9nZ2VkSW5TdGF0dXMoZG9tYWlu
LCB1c2VybmFtZSwgdG9rZW5UeXBlLCBhdXRoVHlwZSwgdGltZVRvTGl2ZSkpOworfQorCitMb2dn
ZWRJblN0YXR1czo6TG9nZ2VkSW5TdGF0dXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
biwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgQ3JlZGVudGlhbFRva2VuVHlwZSB0b2tlblR5cGUs
IEF1dGhlbnRpY2F0aW9uVHlwZSBhdXRoVHlwZSwgU2Vjb25kcyB0aW1lVG9MaXZlKQorICAgIDog
bV9kb21haW4geyBkb21haW4gfQorICAgICwgbV91c2VybmFtZSB7IHVzZXJuYW1lIH0KKyAgICAs
IG1fdG9rZW5UeXBlIHsgdG9rZW5UeXBlIH0KKyAgICAsIG1fYXV0aFR5cGUgeyBhdXRoVHlwZSB9
CisgICAgLCBtX2xvZ2dlZEluVGltZSB7IFdhbGxUaW1lOjpub3coKSB9Cit7CisgICAgc2V0VGlt
ZVRvTGl2ZSh0aW1lVG9MaXZlKTsKK30KKwordm9pZCBMb2dnZWRJblN0YXR1czo6c2V0VGltZVRv
TGl2ZShTZWNvbmRzIHRpbWVUb0xpdmUpCit7CisgICAgbV90aW1lVG9MaXZlID0gc3RkOjptaW4o
dGltZVRvTGl2ZSwgbV9hdXRoVHlwZSA9PSBBdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdlZCA/
IFRpbWVUb0xpdmVTaG9ydCA6IFRpbWVUb0xpdmVMb25nKTsKK30KKworYm9vbCBMb2dnZWRJblN0
YXR1czo6aGFzRXhwaXJlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2RvbWFpbi5pc0VtcHR5
KCkgJiYgIW1fdXNlcm5hbWUuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gV2FsbFRpbWU6Om5vdygp
ID4gbV9sb2dnZWRJblRpbWUgKyBtX3RpbWVUb0xpdmU7Cit9CisKK1dhbGxUaW1lIExvZ2dlZElu
U3RhdHVzOjpleHBpcnkoKSBjb25zdAoreworICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgKyBt
X3RpbWVUb0xpdmU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9n
Z2VkSW5TdGF0dXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9nZ2VkSW5TdGF0dXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ODE2NGY1NDIxZTdlYWNjOTQ1MDY1ZDA0NjlhYmU5YjQxMjc3YzM4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2dnZWRJblN0YXR1cy5oCkBAIC0wLDAg
KzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCisjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKKyNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTG9nZ2VkSW5TdGF0
dXMgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKExvZ2dlZEluU3RhdHVzLCBX
RUJDT1JFX0VYUE9SVCk7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBV
c2VybmFtZU1heExlbmd0aCA9IDY0OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBUaW1l
VG9MaXZlU2hvcnQgeyAyNF9oICogNyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBU
aW1lVG9MaXZlTG9uZyB7IDI0X2ggKiA5MCB9OworCisgICAgZW51bSBjbGFzcyBDcmVkZW50aWFs
VG9rZW5UeXBlIDogYm9vbCB7IExlZ2FjeUNvb2tpZSwgSFRUUFN0YXRlVG9rZW4gfTsKKyAgICBl
bnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uVHlwZSA6IHVpbnQ4X3QgeyBXZWJBdXRobiwgUGFzc3dv
cmRNYW5hZ2VyLCBVbm1hbmFnZWQgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNl
cHRpb25PcjxVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBjcmVhdGUoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBlLCBB
dXRoZW50aWNhdGlvblR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25P
cjxVbmlxdWVSZWY8TG9nZ2VkSW5TdGF0dXM+PiBjcmVhdGUoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBlLCBBdXRoZW50
aWNhdGlvblR5cGUsIFNlY29uZHMgdGltZVRvTGl2ZSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFRpbWVUb0xpdmUoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNF
eHBpcmVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV2FsbFRpbWUgZXhwaXJ5KCkgY29u
c3Q7CisKKyAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQorICAgIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUoKSBj
b25zdCB7IHJldHVybiBtX3VzZXJuYW1lOyB9CisgICAgQ3JlZGVudGlhbFRva2VuVHlwZSBjcmVk
ZW50aWFsVG9rZW5UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90b2tlblR5cGU7IH0KKyAgICBBdXRo
ZW50aWNhdGlvblR5cGUgYXV0aGVudGljYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRo
VHlwZTsgfQorICAgIFdhbGxUaW1lIGxvZ2dlZEluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
Z2VkSW5UaW1lOyB9CisKK3ByaXZhdGU6CisgICAgTG9nZ2VkSW5TdGF0dXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBDcmVkZW50aWFsVG9rZW5UeXBl
LCBBdXRoZW50aWNhdGlvblR5cGUsIFNlY29uZHMgdGltZVRvTGl2ZSk7CisKKyAgICBSZWdpc3Ry
YWJsZURvbWFpbiBtX2RvbWFpbjsKKyAgICBTdHJpbmcgbV91c2VybmFtZTsKKyAgICBDcmVkZW50
aWFsVG9rZW5UeXBlIG1fdG9rZW5UeXBlOworICAgIEF1dGhlbnRpY2F0aW9uVHlwZSBtX2F1dGhU
eXBlOworICAgIFdhbGxUaW1lIG1fbG9nZ2VkSW5UaW1lOworICAgIFNlY29uZHMgbV90aW1lVG9M
aXZlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpMb2dnZWRJblN0YXR1czo6QXV0
aGVudGljYXRpb25UeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZSwKKyAgICAgICAg
V2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4sCisg
ICAgICAgIFdlYkNvcmU6OkxvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlBhc3N3
b3JkTWFuYWdlciwKKyAgICAgICAgV2ViQ29yZTo6TG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0
aW9uVHlwZTo6VW5tYW5hZ2VkCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQxZjViMmYx
NzU4YTY0MjcxYzQ1NDJjMDJkYzljZjc4NzgwYmQ0MzEuLjBiY2IzODZiNGQxYzk1NmY5NmE1Mjkw
NTVhOWY2ZDE2ODYwMTFiNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMi0xMyAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBJc0xvZ2dlZEluOiBBYnN0cmFjdCBkYXRh
IHR5cGUgZm9yIElzTG9nZ2VkSW4gc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTA0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY3MjM5
MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2VkSW5TdGF0dXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTEyLTExICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBQeXRob24gMzogU3VwcG9y
dCBzZXJpYWwgU2VydmVyUHJvY2VzcyB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4
MTNiODFmYzU5YzQxNzVmZGIzYjM5ZDc0MzBmYzFiNmM1MzhkZWFmLi42Y2RjYTczNWIwZTQ5ZmY5
ZjQ5ZjE4Y2E4YWM3NTQ1ZmRlOTA4MTFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQx
LDYgKzQ0MSw3IEBACiAJCTZCMzA2MTA2MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmll
dy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzA2
MTA1MjE4QTM3MjkwMEY1QTgwMiAvKiBDbG9zaW5nV2ViVmlldy5tbSAqLzsgfTsKIAkJNkI0RTg2
MUMyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNEU4NjFCMjIyMEE1NTIwMDIyRjM4
OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgKi87IH07CiAJCTZCOUFCRTEyMjA4Njk1MkYwMEQ3
NURFNiAvKiBIVFRQUGFyc2Vycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QjlBQkUxMTIwODY5NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3Bw
ICovOyB9OworCQk2QkY0QTY4MzIzOUVENENEMDBFMkY0NUIgLyogTG9nZ2VkSW5TdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJGNEE2ODIy
MzlFRDRDRDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNwcCAqLzsgfTsKIAkJNkJGRDI5NEMx
RDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBI
YXNoQ291bnRlZFNldC5jcHAgKi87IH07CiAJCTcyNUMzRUYzMjIwNThBNUIwMDdDMzZGQyAvKiBB
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNUMzRUYyMjIwNTg0QkEwMDdDMzZGQyAv
KiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sICovOyB9OwogCQk3MjgzQTlEMDIy
RkE3NTQ5MDBCMjFDN0QgLyogaW1nLXdpdGgtcm90YXRlZC1pbWFnZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyODNBOUNFMjJGQTZC
QkUwMEIyMUM3RCAvKiBpbWctd2l0aC1yb3RhdGVkLWltYWdlLmh0bWwgKi87IH07CkBAIC0yMDA4
LDYgKzIwMDksNyBAQAogCQk2QjMwNjEwNTIxOEEzNzI5MDBGNUE4MDIgLyogQ2xvc2luZ1dlYlZp
ZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDbG9zaW5nV2ViVmlldy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJh
YmxlRG9tYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lzdHJhYmxlRG9tYWluLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI5QUJFMTEyMDg2OTUyRjAwRDc1REU2IC8q
IEhUVFBQYXJzZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBQYXJzZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkJGNEE2ODIyMzlFRDRDRDAwRTJGNDVCIC8qIExv
Z2dlZEluU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI1QzNFRjIyMjA1ODRCQTAwN0MzNkZDIC8q
IEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjgzQTlDRTIyRkE2QkJFMDBCMjFDN0QgLyogaW1nLXdpdGgtcm90
YXRlZC1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltZy13aXRoLXJv
dGF0ZWQtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyODNBOUQx
MjJGQjFEOTcwMEIyMUM3RCAvKiBleGlmLW9yaWVudGF0aW9uLTgtbGxvLmpwZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLmpwZWc7IHBhdGgg
PSAiZXhpZi1vcmllbnRhdGlvbi04LWxsby5qcGciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzExNCw2ICszMTE2LDcgQEAKIAkJCQk3QTkwOUE3NTFEODc3NDc1MDA3RTEwRjggLyog
SW50U2l6ZS5jcHAgKi8sCiAJCQkJQ0Q1RkY0OTYyMTYyRTI3RTAwNEJEODZGIC8qIElTT0JveC5j
cHAgKi8sCiAJCQkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICov
LAorCQkJCTZCRjRBNjgyMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBMb2dnZWRJblN0YXR1cy5jcHAgKi8s
CiAJCQkJMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovLAogCQkJCUNF
MTg2NjQ3MUY3MkU4RjEwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmNwcCAqLywKIAkJCQlBNUIxNDlE
RDFGNUExOURDMDBDNkRBRkYgLyogTUlNRVR5cGVSZWdpc3RyeS5jcHAgKi8sCkBAIC00NzMxLDYg
KzQ3MzQsNyBAQAogCQkJCTQ2QzUxOURBMUQzNTVBQjIwMERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VO
dWxsRW50cmllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCThDMTBBRjk5MjA2NDY3QTkwMDE4RkQ5
MCAvKiBMb2NhbFN0b3JhZ2VQZXJzaXN0ZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNkEy
QzcwMURDQ0ZBOEMwMEMwRDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya1Rlc3QubW0gaW4gU291cmNl
cyAqLywKKwkJCQk2QkY0QTY4MzIzOUVENENEMDBFMkY0NUIgLyogTG9nZ2VkSW5TdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2RTUwN0YxRjQ1MTNENjAwNkU5RjVBIC8qIExvZ2dpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UxODY2NDkxRjcyRThGMTAwQTBDQUI2IC8qIE1hcmtl
ZFRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdDQzdERkUyMjY2MzMwOTAwRTM5MTgxIC8q
IE1lZGlhQnVmZmVyaW5nUG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2VkSW5TdGF0dXMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dlZEluU3RhdHVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYjgzM2Y3MWIyMjQzYzk5MGE2Yjg3ZTkxNjAwNzczOWJjZjc5YjZjCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dlZEluU3RhdHVzLmNw
cApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2VkSW5TdGF0dXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKy8vIFBvc2l0aXZlIHRlc3QgY2FzZXMuCisKK1RF
U1QoTG9nZ2VkSW5TdGF0dXMsIERlZmF1bHRFeHBpcnlXZWJBdXRobikKK3sKKyAgICBSZWdpc3Ry
YWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBzOi8vbG9naW4uZXhhbXBs
ZS5jb20iX3MgfSB9OworCisgICAgYXV0byBsb2dnZWRJblJlc3VsdCA9IExvZ2dlZEluU3RhdHVz
OjpjcmVhdGUobG9naW5Eb21haW4sICJhZG1pbiJfcywgTG9nZ2VkSW5TdGF0dXM6OkNyZWRlbnRp
YWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRp
b25UeXBlOjpXZWJBdXRobik7CisgICAgYXV0byYgbG9nZ2VkSW4gPSBsb2dnZWRJblJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKS5nZXQoKTsKKyAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3co
KTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4ucmVnaXN0cmFibGVEb21haW4oKS5zdHJpbmcoKSwg
ImV4YW1wbGUuY29tIl9zKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4udXNlcm5hbWUoKSwgImFk
bWluIl9zKTsKKyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uY3JlZGVudGlhbFRva2VuVHlwZSgpLCBM
b2dnZWRJblN0YXR1czo6Q3JlZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4pOworICAg
IEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6
OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZElu
LmxvZ2dlZEluVGltZSgpIDwgbm93ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4u
bG9nZ2VkSW5UaW1lKCkgPiBub3cgLSA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5l
eHBpcnkoKSA8IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyArIDYwX3MpOwor
ICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgTG9nZ2VkSW5TdGF0dXM6
OlRpbWVUb0xpdmVMb25nIC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4
cGlyZWQoKSk7Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIERlZmF1bHRFeHBpcnlQYXNzd29y
ZE1hbmFnZXIpCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21haW4geyBVUkwgeyB7
IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAgIGF1dG8gbG9nZ2Vk
SW5SZXN1bHQgPSBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGxvZ2luRG9tYWluLCAiYWRtaW4iX3Ms
IExvZ2dlZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9n
Z2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6UGFzc3dvcmRNYW5hZ2VyKTsKKyAgICBh
dXRvJiBsb2dnZWRJbiA9IGxvZ2dlZEluUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgp
OworICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOworICAgIEFTU0VSVF9FUShsb2dnZWRJ
bi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlw
ZTo6UGFzc3dvcmRNYW5hZ2VyKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8
IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyArIDYwX3MpOworICAgIEFTU0VS
VF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpID4gbm93ICsgTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xp
dmVMb25nIC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZEluLmhhc0V4cGlyZWQoKSk7
Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIERlZmF1bHRFeHBpcnlVbm1hbmFnZWQpCit7Cisg
ICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21haW4geyBVUkwgeyB7IH0sICJodHRwczovL2xv
Z2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAgIGF1dG8gbG9nZ2VkSW5SZXN1bHQgPSBMb2dn
ZWRJblN0YXR1czo6Y3JlYXRlKGxvZ2luRG9tYWluLCAiYWRtaW4iX3MsIExvZ2dlZEluU3RhdHVz
OjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9nZ2VkSW5TdGF0dXM6OkF1
dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBhdXRvJiBsb2dnZWRJbiA9IGxvZ2dl
ZEluUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpOworICAgIGF1dG8gbm93ID0gV2Fs
bFRpbWU6Om5vdygpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUo
KSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6VW5tYW5hZ2VkKTsKKyAgICBB
U1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1l
VG9MaXZlU2hvcnQgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+
IG5vdyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlU2hvcnQgLSA2MF9zKTsKKyAgICBBU1NF
UlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKK30KKworVEVTVChMb2dnZWRJblN0YXR1
cywgQ3VzdG9tRXhwaXJ5QmVsb3dMb25nKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGxvZ2lu
RG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNvbSJfcyB9IH07CisK
KyAgICBhdXRvIGN1c3RvbUV4cGlyeSA9IExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyAt
IDQ4X2g7CisgICAgYXV0byBsb2dnZWRJblJlc3VsdCA9IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUo
bG9naW5Eb21haW4sICJhZG1pbiJfcywgTG9nZ2VkSW5TdGF0dXM6OkNyZWRlbnRpYWxUb2tlblR5
cGU6OkhUVFBTdGF0ZVRva2VuLCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpX
ZWJBdXRobiwgY3VzdG9tRXhwaXJ5KTsKKyAgICBhdXRvJiBsb2dnZWRJbiA9IGxvZ2dlZEluUmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpOworICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6
Om5vdygpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9n
Z2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9U
UlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgY3VzdG9tRXhwaXJ5ICsgNjBfcyk7CisgICAg
QVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBjdXN0b21FeHBpcnkgLSA2MF9z
KTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKK30KKworVEVTVChM
b2dnZWRJblN0YXR1cywgQ3VzdG9tRXhwaXJ5QmVsb3dTaG9ydCkKK3sKKyAgICBSZWdpc3RyYWJs
ZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBzOi8vbG9naW4uZXhhbXBsZS5j
b20iX3MgfSB9OworCisgICAgYXV0byBjdXN0b21FeHBpcnkgPSBMb2dnZWRJblN0YXR1czo6VGlt
ZVRvTGl2ZVNob3J0IC0gNDhfaDsKKyAgICBhdXRvIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5T
dGF0dXM6OmNyZWF0ZShsb2dpbkRvbWFpbiwgImFkbWluIl9zLCBMb2dnZWRJblN0YXR1czo6Q3Jl
ZGVudGlhbFRva2VuVHlwZTo6SFRUUFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50
aWNhdGlvblR5cGU6OlBhc3N3b3JkTWFuYWdlciwgY3VzdG9tRXhwaXJ5KTsKKyAgICBhdXRvJiBs
b2dnZWRJbiA9IGxvZ2dlZEluUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpOworICAg
IGF1dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5hdXRo
ZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6UGFz
c3dvcmRNYW5hZ2VyKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA8IG5vdyAr
IGN1c3RvbUV4cGlyeSArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgp
ID4gbm93ICsgY3VzdG9tRXhwaXJ5IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dlZElu
Lmhhc0V4cGlyZWQoKSk7Cit9CisKK1RFU1QoTG9nZ2VkSW5TdGF0dXMsIFJlbmV3ZWRFeHBpcnkp
Cit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5Eb21haW4geyBVUkwgeyB7IH0sICJodHRw
czovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKworICAgIGF1dG8gY3VzdG9tRXhwaXJ5ID0g
TG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCAtIDQ4X2g7CisgICAgYXV0byBsb2dnZWRJ
blJlc3VsdCA9IExvZ2dlZEluU3RhdHVzOjpjcmVhdGUobG9naW5Eb21haW4sICJhZG1pbiJfcywg
TG9nZ2VkSW5TdGF0dXM6OkNyZWRlbnRpYWxUb2tlblR5cGU6OkhUVFBTdGF0ZVRva2VuLCBMb2dn
ZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobiwgY3VzdG9tRXhwaXJ5KTsK
KyAgICBhdXRvJiBsb2dnZWRJbiA9IGxvZ2dlZEluUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LmdldCgpOworICAgIGF1dG8gbm93ID0gV2FsbFRpbWU6Om5vdygpOworICAgIEFTU0VSVF9FUShs
b2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0
aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwg
bm93ICsgY3VzdG9tRXhwaXJ5ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhw
aXJ5KCkgPiBub3cgKyBjdXN0b21FeHBpcnkgLSA2MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9n
Z2VkSW4uaGFzRXhwaXJlZCgpKTsKKyAgICBhdXRvIG5ld0N1c3RvbUV4cGlyeSA9IDI0X2g7Cisg
ICAgbG9nZ2VkSW4uc2V0VGltZVRvTGl2ZShuZXdDdXN0b21FeHBpcnkpOworICAgIEFTU0VSVF9F
UShsb2dnZWRJbi5hdXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRp
Y2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgp
IDwgbm93ICsgbmV3Q3VzdG9tRXhwaXJ5ICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2Vk
SW4uZXhwaXJ5KCkgPiBub3cgKyBuZXdDdXN0b21FeHBpcnkgLSA2MF9zKTsKKyAgICBBU1NFUlRf
RkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKK30KKworLy8gTmVnYXRpdmUgdGVzdCBjYXNl
cy4KKworVEVTVChMb2dnZWRJblN0YXR1cywgSW52YWxpZFVzZXJuYW1lcykKK3sKKyAgICBSZWdp
c3RyYWJsZURvbWFpbiBsb2dpbkRvbWFpbiB7IFVSTCB7IHsgfSwgImh0dHBzOi8vbG9naW4uZXhh
bXBsZS5jb20iX3MgfSB9OworCisgICAgLy8gV2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZC4KKyAg
ICBhdXRvIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShsb2dpbkRvbWFp
biwgIkkgdXNlIHNwYWNlcyJfcywgTG9nZ2VkSW5TdGF0dXM6OkNyZWRlbnRpYWxUb2tlblR5cGU6
OkhUVFBTdGF0ZVRva2VuLCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpXZWJB
dXRobik7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW5SZXN1bHQuaGFzRXhjZXB0aW9uKCkpOwor
CisgICAgLy8gTmV3bGluZXMgYXJlIG5vdCBhbGxvd2VkLgorICAgIGxvZ2dlZEluUmVzdWx0ID0g
TG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShsb2dpbkRvbWFpbiwgIkVudGVyXG5yZXR1cm4iX3MsIExv
Z2dlZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9nZ2Vk
SW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVF
KGxvZ2dlZEluUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIC8vIFRoZXJlIGlzIGEgbWF4
IGxlbmd0aCB0byB1c2VybmFtZXMuCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPD0gTG9nZ2VkSW5TdGF0dXM6OlVzZXJuYW1lTWF4TGVuZ3Ro
OyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdhJyk7CisgICAgbG9nZ2VkSW5SZXN1bHQg
PSBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGxvZ2luRG9tYWluLCBidWlsZGVyLnRvU3RyaW5nKCks
IExvZ2dlZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwgTG9n
Z2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4pOworICAgIEFTU0VSVF9U
UlVFKGxvZ2dlZEluUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKK30KKworVEVTVChMb2dnZWRJblN0
YXR1cywgQ2xhbXBlZEV4cGlyeUxvbmcpCit7CisgICAgUmVnaXN0cmFibGVEb21haW4gbG9naW5E
b21haW4geyBVUkwgeyB7IH0sICJodHRwczovL2xvZ2luLmV4YW1wbGUuY29tIl9zIH0gfTsKKwor
ICAgIC8vIFRvbyBsb25nIGV4cGlyaWVzIGZvciBtYW5hZ2VkIGF1dGggdHlwZXMgc2hvdWxkIGJl
IGNsYW1wZWQgdG8gTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVMb25nLgorICAgIGF1dG8gbG9n
Z2VkSW5SZXN1bHQgPSBMb2dnZWRJblN0YXR1czo6Y3JlYXRlKGxvZ2luRG9tYWluLCAiYWRtaW4i
X3MsIExvZ2dlZEluU3RhdHVzOjpDcmVkZW50aWFsVG9rZW5UeXBlOjpIVFRQU3RhdGVUb2tlbiwg
TG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6V2ViQXV0aG4sIExvZ2dlZEluU3Rh
dHVzOjpUaW1lVG9MaXZlTG9uZyArIDI0X2gpOworICAgIGF1dG8mIGxvZ2dlZEluID0gbG9nZ2Vk
SW5SZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkuZ2V0KCk7CisgICAgYXV0byBub3cgPSBXYWxs
VGltZTo6bm93KCk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1dGhlbnRpY2F0aW9uVHlwZSgp
LCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpXZWJBdXRobik7CisgICAgQVNT
RVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBMb2dnZWRJblN0YXR1czo6VGltZVRv
TGl2ZUxvbmcgKyA2MF9zKTsKKyAgICBBU1NFUlRfVFJVRShsb2dnZWRJbi5leHBpcnkoKSA+IG5v
dyArIExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyAtIDYwX3MpOworICAgIEFTU0VSVF9G
QUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworCisgICAgLy8gUmVuZXdlZCwgdG9vIGxvbmcg
ZXhwaXJpZXMgZm9yIG1hbmFnZWQgYXV0aCB0eXBlcyBzaG91bGQgYWxzbyBiZSBjbGFtcGVkIHRv
IExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZy4KKyAgICBhdXRvIG5ld0N1c3RvbUV4cGly
eSA9IExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlTG9uZyArIDI0X2g7CisgICAgbG9nZ2VkSW4u
c2V0VGltZVRvTGl2ZShuZXdDdXN0b21FeHBpcnkpOworICAgIEFTU0VSVF9FUShsb2dnZWRJbi5h
dXRoZW50aWNhdGlvblR5cGUoKSwgTG9nZ2VkSW5TdGF0dXM6OkF1dGhlbnRpY2F0aW9uVHlwZTo6
V2ViQXV0aG4pOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgTG9n
Z2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVMb25nICsgNjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9n
Z2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBMb2dnZWRJblN0YXR1czo6VGltZVRvTGl2ZUxvbmcgLSA2
MF9zKTsKKyAgICBBU1NFUlRfRkFMU0UobG9nZ2VkSW4uaGFzRXhwaXJlZCgpKTsKK30KKworVEVT
VChMb2dnZWRJblN0YXR1cywgQ2xhbXBlZEV4cGlyeVNob3J0KQoreworICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGxvZ2luRG9tYWluIHsgVVJMIHsgeyB9LCAiaHR0cHM6Ly9sb2dpbi5leGFtcGxlLmNv
bSJfcyB9IH07CisKKyAgICAvLyBUb28gbG9uZyBleHBpcmllcyBmb3IgdW5tYW5hZ2VkIGF1dGgg
dHlwZXMgc2hvdWxkIGJlIGNsYW1wZWQgdG8gTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9y
dC4KKyAgICBhdXRvIGxvZ2dlZEluUmVzdWx0ID0gTG9nZ2VkSW5TdGF0dXM6OmNyZWF0ZShsb2dp
bkRvbWFpbiwgImFkbWluIl9zLCBMb2dnZWRJblN0YXR1czo6Q3JlZGVudGlhbFRva2VuVHlwZTo6
SFRUUFN0YXRlVG9rZW4sIExvZ2dlZEluU3RhdHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlVubWFu
YWdlZCwgTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCArIDI0X2gpOworICAgIGF1dG8m
IGxvZ2dlZEluID0gbG9nZ2VkSW5SZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkuZ2V0KCk7Cisg
ICAgYXV0byBub3cgPSBXYWxsVGltZTo6bm93KCk7CisgICAgQVNTRVJUX0VRKGxvZ2dlZEluLmF1
dGhlbnRpY2F0aW9uVHlwZSgpLCBMb2dnZWRJblN0YXR1czo6QXV0aGVudGljYXRpb25UeXBlOjpV
bm1hbmFnZWQpOworICAgIEFTU0VSVF9UUlVFKGxvZ2dlZEluLmV4cGlyeSgpIDwgbm93ICsgTG9n
Z2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCArIDYwX3MpOworICAgIEFTU0VSVF9UUlVFKGxv
Z2dlZEluLmV4cGlyeSgpID4gbm93ICsgTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydCAt
IDYwX3MpOworICAgIEFTU0VSVF9GQUxTRShsb2dnZWRJbi5oYXNFeHBpcmVkKCkpOworCisgICAg
Ly8gUmVuZXdlZCwgdG9vIGxvbmcgZXhwaXJpZXMgZm9yIHVubWFuYWdlZCBhdXRoIHR5cGVzIHNo
b3VsZCBhbHNvIGJlIGNsYW1wZWQgdG8gTG9nZ2VkSW5TdGF0dXM6OlRpbWVUb0xpdmVTaG9ydC4K
KyAgICBhdXRvIG5ld0N1c3RvbUV4cGlyeSA9IExvZ2dlZEluU3RhdHVzOjpUaW1lVG9MaXZlU2hv
cnQgKyAyNF9oOworICAgIGxvZ2dlZEluLnNldFRpbWVUb0xpdmUobmV3Q3VzdG9tRXhwaXJ5KTsK
KyAgICBBU1NFUlRfRVEobG9nZ2VkSW4uYXV0aGVudGljYXRpb25UeXBlKCksIExvZ2dlZEluU3Rh
dHVzOjpBdXRoZW50aWNhdGlvblR5cGU6OlVubWFuYWdlZCk7CisgICAgQVNTRVJUX1RSVUUobG9n
Z2VkSW4uZXhwaXJ5KCkgPCBub3cgKyBMb2dnZWRJblN0YXR1czo6VGltZVRvTGl2ZVNob3J0ICsg
NjBfcyk7CisgICAgQVNTRVJUX1RSVUUobG9nZ2VkSW4uZXhwaXJ5KCkgPiBub3cgKyBMb2dnZWRJ
blN0YXR1czo6VGltZVRvTGl2ZVNob3J0IC0gNjBfcyk7CisgICAgQVNTRVJUX0ZBTFNFKGxvZ2dl
ZEluLmhhc0V4cGlyZWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>