<?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>171217</bug_id>
          
          <creation_ts>2017-04-24 05:49:46 -0700</creation_ts>
          <short_desc>Support removal of authentication data through the Website data store API.</short_desc>
          <delta_ts>2017-06-07 09:51:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ansh_shukla</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jberlin</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300470</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-04-24 05:49:46 -0700</bug_when>
    <thetext>WebKit needs to support removal of authentication data through WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300509</commentid>
    <comment_count>1</comment_count>
      <attachid>307978</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-04-24 08:52:21 -0700</bug_when>
    <thetext>Created attachment 307978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300536</commentid>
    <comment_count>2</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-04-24 09:44:58 -0700</bug_when>
    <thetext>I think this needs to be tested since time comparisons are tricky. The ability to test might require a way to set the timestamp explicitly. Setting the timestamp will also be required if we are to support loading of persisted credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300565</commentid>
    <comment_count>3</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-04-24 10:45:29 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #2)
&gt; I think this needs to be tested since time comparisons are tricky. The
&gt; ability to test might require a way to set the timestamp explicitly. Setting
&gt; the timestamp will also be required if we are to support loading of
&gt; persisted credentials.

Thanks for reviewing! I will add test(s).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300736</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-04-24 17:08:24 -0700</bug_when>
    <thetext>rdar://problem/29522573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300864</commentid>
    <comment_count>5</comment_count>
      <attachid>307978</attachid>
    <who name="">mitz</who>
    <bug_when>2017-04-24 20:26:50 -0700</bug_when>
    <thetext>Comment on attachment 307978
Patch

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

At first sight, it seems very strange to treat user credentials as website data. The credentials are user data, so I don’t understand how it makes sense, even conceptually, to expose them via the website data store API. The implementation further shows how confusing or misleading this is. Because persisting website credentials isn’t under WebKit’s purview, even removing credentials from a persistent website data store doesn’t remove persistent credentials.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecord.h:59
&gt; +WK_EXTERN NSString * const WKWebsiteDataTypeCredentials WK_API_AVAILABLE(macosx(10.12), ios(10.0));

This availability attribute is clearly wrong, because this is not part of the macOS 10.12 and iOS 10 API.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:779
&gt; +    if (dataTypes.contains(WebsiteDataType::Credentials)) {
&gt; +        auto storage = WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage();
&gt; +        storage.removeCredentialsModifiedSince(modifiedSince);
&gt; +    }

So this operates on the global default storage session regardless of which WKWebsiteDataStore the client messaged?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300867</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-04-24 20:41:31 -0700</bug_when>
    <thetext>(In reply to mitz from comment #5)
&gt; Comment on attachment 307978 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307978&amp;action=review
&gt; 
&gt; At first sight, it seems very strange to treat user credentials as website
&gt; data. The credentials are user data, so I don’t understand how it makes
&gt; sense, even conceptually, to expose them via the website data store API. The
&gt; implementation further shows how confusing or misleading this is. Because
&gt; persisting website credentials isn’t under WebKit’s purview, even removing
&gt; credentials from a persistent website data store doesn’t remove persistent
&gt; credentials.

Clients tell WebKit which website datatypes to remove. Would you add another parameter type or have a whole new API for this? We need both a &quot;clear all&quot; and a &quot;clear modified since.&quot;

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecord.h:59
&gt; &gt; +WK_EXTERN NSString * const WKWebsiteDataTypeCredentials WK_API_AVAILABLE(macosx(10.12), ios(10.0));
&gt; 
&gt; This availability attribute is clearly wrong, because this is not part of
&gt; the macOS 10.12 and iOS 10 API.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:779
&gt; &gt; +    if (dataTypes.contains(WebsiteDataType::Credentials)) {
&gt; &gt; +        auto storage = WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage();
&gt; &gt; +        storage.removeCredentialsModifiedSince(modifiedSince);
&gt; &gt; +    }
&gt; 
&gt; So this operates on the global default storage session regardless of which
&gt; WKWebsiteDataStore the client messaged?

You&apos;re right. This needs to happen on either the right storage session or all storage sessions. To be able to test it we probably need to get a test runner callback when credentials have been removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300872</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-24 20:50:52 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #6)
&gt; (In reply to mitz from comment #5)
&gt; &gt; Comment on attachment 307978 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=307978&amp;action=review
&gt; &gt; 
&gt; &gt; At first sight, it seems very strange to treat user credentials as website
&gt; &gt; data. The credentials are user data, so I don’t understand how it makes
&gt; &gt; sense, even conceptually, to expose them via the website data store API. The
&gt; &gt; implementation further shows how confusing or misleading this is. Because
&gt; &gt; persisting website credentials isn’t under WebKit’s purview, even removing
&gt; &gt; credentials from a persistent website data store doesn’t remove persistent
&gt; &gt; credentials.
&gt; 
&gt; Clients tell WebKit which website datatypes to remove. Would you add another
&gt; parameter type or have a whole new API for this? We need both a &quot;clear all&quot;
&gt; and a &quot;clear modified since.&quot;

This data type isn’t a website data type, so it seems inappropriate to include in the website data API.

The notion if a website credential’s modification date is also strange. What is the use case for forgetting only credentials modified since some time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300874</commentid>
    <comment_count>8</comment_count>
      <attachid>307978</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-04-24 20:56:23 -0700</bug_when>
    <thetext>Comment on attachment 307978
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecord.h:59
&gt;&gt;&gt; +WK_EXTERN NSString * const WKWebsiteDataTypeCredentials WK_API_AVAILABLE(macosx(10.12), ios(10.0));
&gt;&gt; 
&gt;&gt; This availability attribute is clearly wrong, because this is not part of the macOS 10.12 and iOS 10 API.
&gt; 
&gt; You&apos;re right. This needs to happen on either the right storage session or all storage sessions. To be able to test it we probably need to get a test runner callback when credentials have been removed.

This should probably be WK_API_AVAILBLE(WK_MAC_TBA, WK_IOS_TBA)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301089</commentid>
    <comment_count>9</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2017-04-25 10:21:51 -0700</bug_when>
    <thetext>(In reply to mitz from comment #7)
&gt; (In reply to John Wilander from comment #6)
&gt; &gt; (In reply to mitz from comment #5)
&gt; &gt; &gt; Comment on attachment 307978 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=307978&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; At first sight, it seems very strange to treat user credentials as website
&gt; &gt; &gt; data. The credentials are user data, so I don’t understand how it makes
&gt; &gt; &gt; sense, even conceptually, to expose them via the website data store API. The
&gt; &gt; &gt; implementation further shows how confusing or misleading this is. Because
&gt; &gt; &gt; persisting website credentials isn’t under WebKit’s purview, even removing
&gt; &gt; &gt; credentials from a persistent website data store doesn’t remove persistent
&gt; &gt; &gt; credentials.
&gt; &gt; 
&gt; &gt; Clients tell WebKit which website datatypes to remove. Would you add another
&gt; &gt; parameter type or have a whole new API for this? We need both a &quot;clear all&quot;
&gt; &gt; and a &quot;clear modified since.&quot;
&gt; 
&gt; This data type isn’t a website data type, so it seems inappropriate to
&gt; include in the website data API.
&gt; 
&gt; The notion if a website credential’s modification date is also strange. What
&gt; is the use case for forgetting only credentials modified since some time?

This gives Safari the ability to include it in clearing UI that is &quot;clear for the last hour&quot; to cover tracks. HTTP auth could also be used by websites to surreptitiously track users (e.g. by putting HTTP auth credentials in the URL of a subresource).

Per Arne Vollan - is this going to clear the data that is stored in keychain as well? That seems different than what the original goal was here (clear authentication that is not stored in keychain, since the user can clear it from keychain).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301095</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-25 10:28:07 -0700</bug_when>
    <thetext>(In reply to Jessie Berlin from comment #9)
&gt; (In reply to mitz from comment #7)
&gt; &gt; (In reply to John Wilander from comment #6)
&gt; &gt; &gt; (In reply to mitz from comment #5)
&gt; &gt; &gt; &gt; Comment on attachment 307978 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=307978&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; At first sight, it seems very strange to treat user credentials as website
&gt; &gt; &gt; &gt; data. The credentials are user data, so I don’t understand how it makes
&gt; &gt; &gt; &gt; sense, even conceptually, to expose them via the website data store API. The
&gt; &gt; &gt; &gt; implementation further shows how confusing or misleading this is. Because
&gt; &gt; &gt; &gt; persisting website credentials isn’t under WebKit’s purview, even removing
&gt; &gt; &gt; &gt; credentials from a persistent website data store doesn’t remove persistent
&gt; &gt; &gt; &gt; credentials.
&gt; &gt; &gt; 
&gt; &gt; &gt; Clients tell WebKit which website datatypes to remove. Would you add another
&gt; &gt; &gt; parameter type or have a whole new API for this? We need both a &quot;clear all&quot;
&gt; &gt; &gt; and a &quot;clear modified since.&quot;
&gt; &gt; 
&gt; &gt; This data type isn’t a website data type, so it seems inappropriate to
&gt; &gt; include in the website data API.
&gt; &gt; 
&gt; &gt; The notion if a website credential’s modification date is also strange. What
&gt; &gt; is the use case for forgetting only credentials modified since some time?
&gt; 
&gt; This gives Safari the ability to include it in clearing UI that is &quot;clear
&gt; for the last hour&quot; to cover tracks.

So in this hypothetical Safari is going to also remove the corresponding Keychain items? This proposed API doesn’t seem to support something like that.

&gt; HTTP auth could also be used by websites
&gt; to surreptitiously track users (e.g. by putting HTTP auth credentials in the
&gt; URL of a subresource).
&gt; 
&gt; Per Arne Vollan - is this going to clear the data that is stored in keychain
&gt; as well? That seems different than what the original goal was here (clear
&gt; authentication that is not stored in keychain, since the user can clear it
&gt; from keychain).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301139</commentid>
    <comment_count>11</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-04-25 11:53:56 -0700</bug_when>
    <thetext>(In reply to Jessie Berlin from comment #9)
&gt; &gt; 
&gt; &gt; The notion if a website credential’s modification date is also strange. What
&gt; &gt; is the use case for forgetting only credentials modified since some time?
&gt; 
&gt; This gives Safari the ability to include it in clearing UI that is &quot;clear
&gt; for the last hour&quot; to cover tracks. HTTP auth could also be used by websites
&gt; to surreptitiously track users (e.g. by putting HTTP auth credentials in the
&gt; URL of a subresource).
&gt; 
&gt; Per Arne Vollan - is this going to clear the data that is stored in keychain
&gt; as well? That seems different than what the original goal was here (clear
&gt; authentication that is not stored in keychain, since the user can clear it
&gt; from keychain).

I believe the goal here is to only remove the items in the Credential Storage, and not remove Keychain items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301142</commentid>
    <comment_count>12</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-04-25 11:59:23 -0700</bug_when>
    <thetext>(In reply to mitz from comment #7)
&gt; (In reply to John Wilander from comment #6)
&gt; &gt; (In reply to mitz from comment #5)
&gt; &gt; &gt; Comment on attachment 307978 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=307978&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; At first sight, it seems very strange to treat user credentials as website
&gt; &gt; &gt; data. The credentials are user data, so I don’t understand how it makes
&gt; &gt; &gt; sense, even conceptually, to expose them via the website data store API. The
&gt; &gt; &gt; implementation further shows how confusing or misleading this is. Because
&gt; &gt; &gt; persisting website credentials isn’t under WebKit’s purview, even removing
&gt; &gt; &gt; credentials from a persistent website data store doesn’t remove persistent
&gt; &gt; &gt; credentials.
&gt; &gt; 
&gt; &gt; Clients tell WebKit which website datatypes to remove. Would you add another
&gt; &gt; parameter type or have a whole new API for this? We need both a &quot;clear all&quot;
&gt; &gt; and a &quot;clear modified since.&quot;
&gt; 
&gt; This data type isn’t a website data type, so it seems inappropriate to
&gt; include in the website data API.
&gt; 

I am currently working on creating a new C API for this. I will upload a modified patch soon.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301783</commentid>
    <comment_count>13</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2017-04-26 15:02:54 -0700</bug_when>
    <thetext>(In reply to mitz from comment #10)
&gt; (In reply to Jessie Berlin from comment #9)
&gt; &gt; (In reply to mitz from comment #7)
&gt; &gt; &gt; (In reply to John Wilander from comment #6)
&gt; &gt; &gt; &gt; (In reply to mitz from comment #5)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 307978 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=307978&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; At first sight, it seems very strange to treat user credentials as website
&gt; &gt; &gt; &gt; &gt; data. The credentials are user data, so I don’t understand how it makes
&gt; &gt; &gt; &gt; &gt; sense, even conceptually, to expose them via the website data store API. The
&gt; &gt; &gt; &gt; &gt; implementation further shows how confusing or misleading this is. Because
&gt; &gt; &gt; &gt; &gt; persisting website credentials isn’t under WebKit’s purview, even removing
&gt; &gt; &gt; &gt; &gt; credentials from a persistent website data store doesn’t remove persistent
&gt; &gt; &gt; &gt; &gt; credentials.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Clients tell WebKit which website datatypes to remove. Would you add another
&gt; &gt; &gt; &gt; parameter type or have a whole new API for this? We need both a &quot;clear all&quot;
&gt; &gt; &gt; &gt; and a &quot;clear modified since.&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; This data type isn’t a website data type, so it seems inappropriate to
&gt; &gt; &gt; include in the website data API.
&gt; &gt; &gt; 
&gt; &gt; &gt; The notion if a website credential’s modification date is also strange. What
&gt; &gt; &gt; is the use case for forgetting only credentials modified since some time?
&gt; &gt; 
&gt; &gt; This gives Safari the ability to include it in clearing UI that is &quot;clear
&gt; &gt; for the last hour&quot; to cover tracks.
&gt; 
&gt; So in this hypothetical Safari is going to also remove the corresponding
&gt; Keychain items? This proposed API doesn’t seem to support something like
&gt; that.
&gt; 
&gt; &gt; HTTP auth could also be used by websites
&gt; &gt; to surreptitiously track users (e.g. by putting HTTP auth credentials in the
&gt; &gt; URL of a subresource).
&gt; &gt; 
&gt; &gt; Per Arne Vollan - is this going to clear the data that is stored in keychain
&gt; &gt; as well? That seems different than what the original goal was here (clear
&gt; &gt; authentication that is not stored in keychain, since the user can clear it
&gt; &gt; from keychain).

Dan and I talked about this further - it isn&apos;t necessary for this to have a &quot;clear for the last hour&quot; functionality. I agree with him that this should be about clearing the session based data, and a separate API.

Has Geoff looked at the proposal for the new API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302045</commentid>
    <comment_count>14</comment_count>
      <attachid>308381</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-04-27 05:44:19 -0700</bug_when>
    <thetext>Created attachment 308381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304277</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-03 14:57:53 -0700</bug_when>
    <thetext>&gt; Dan and I talked about this further - it isn&apos;t necessary for this to have a
&gt; &quot;clear for the last hour&quot; functionality. I agree with him that this should
&gt; be about clearing the session based data, and a separate API.

Sorry, are you saying that you and Dan agree that this API should be separate from WKWebsiteDataStore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304283</commentid>
    <comment_count>16</comment_count>
      <attachid>308381</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-03 15:03:26 -0700</bug_when>
    <thetext>Comment on attachment 308381
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKCredentialManager.h:35
&gt; +typedef void (*WKCredentialManagerRemovedCredentialsResult)(bool, WKErrorRef, void*);

Is there any condition under which we will fail to remove and still invoke this callback? I don&apos;t think there is, so I think the bool argument doesn&apos;t make sense. (And what about the WKErrorRef and void* arguments?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304295</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-05-03 15:14:58 -0700</bug_when>
    <thetext>I have so many opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304307</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-05-03 15:26:43 -0700</bug_when>
    <thetext>(In reply to mitz from comment #7)
&gt; This data type isn’t a website data type, so it seems inappropriate to
&gt; include in the website data API.

I agree that persistent credentials are not &quot;website data&quot;

I disagree that session credentials (which this API is targeted at) are not &quot;website data&quot;

They are, exactly the same way that session cookies are. They do little more than allow for the same tracking vectors as session cookies and they can be explicitly set by websites.

(In reply to Jessie Berlin from comment #13)

&gt; Dan and I talked about this further - I agree with him that this should
&gt; be about clearing the session based data, and a separate API.

Yes, this should be about the session based data only. But I think it makes perfect sense to include it in WebsiteDataStore operations. This is website data that the user has as much control over as they do session cookies, and does not conflict with the keychain which is user data.

There&apos;s also problems with the patch I&apos;ll include in review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304310</commentid>
    <comment_count>19</comment_count>
      <attachid>308381</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-05-03 15:28:40 -0700</bug_when>
    <thetext>Comment on attachment 308381
Patch

The patch doesn&apos;t message the WebProcesses. While most credential storage operations are in the networking process, sadly there&apos;s still a bit left in WebProcesses as well.

It also can&apos;t be correct because it operates on the global session ID. Note, this came up in earlier comments but was never addressed.

The testing is also problematic. The API tests are designed to work offline, yet the added test hits a public URL. Additionally it doesn&apos;t attempt to do any validation on credentials actually being sent to the server. The test doesn&apos;t actually verify the behavior that is important; That the credentials were cleared.

I think:
- &quot;Session Credentials&quot; can be a new type on WebsiteDataStore, and that&apos;s where it should be exposed in SPI
- As long as there&apos;s any doubt that WebsiteDataStore is the wrong place, I still think that&apos;s fine as the C-API is SPI, and we&apos;ll learn whether it was right or not before adding anything to the Cocoa API (but I think it&apos;s right)
- This needs to go to the WebProcess(es) in addition to Networking
- To that effect, the &quot;Web&quot; prefix should be dropped from the CredentialManager objects and the receiver-side should be moved to Shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305152</commentid>
    <comment_count>20</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-05-05 09:36:36 -0700</bug_when>
    <thetext>Thanks for reviewing! I will upload a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305548</commentid>
    <comment_count>21</comment_count>
      <attachid>309279</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-05-06 01:14:24 -0700</bug_when>
    <thetext>Created attachment 309279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310595</commentid>
    <comment_count>22</comment_count>
      <attachid>310654</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-05-19 07:17:53 -0700</bug_when>
    <thetext>Created attachment 310654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314121</commentid>
    <comment_count>23</comment_count>
    <who name="Ansh Shukla">ansh_shukla</who>
    <bug_when>2017-05-31 02:19:44 -0700</bug_when>
    <thetext>Can we get a review on the latest patch? Three Safari bugs are blocked by progress here. Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314240</commentid>
    <comment_count>24</comment_count>
      <attachid>310654</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-05-31 11:38:51 -0700</bug_when>
    <thetext>Comment on attachment 310654
Patch

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

Thinking it was very odd that this patch adds a deleter without a completion handler, I dug in to the history of WKWebsiteDataStoreRef.

It was added in r181707 and its sole purpose was to provide a toll-free bridge from WKContextRef to WKWebsiteDataStore (the Cocoa API object) It never should&apos;ve had any API/SPI added to it. In fact some of the methods there (rightfully) have zero clients.

In my 5-3 comment I suggested adding it to the C-SPI was fine, but I misunderstood the history of WebsiteDataStoreRef - It never predated WKWebsiteDataStore and never had any API.

The rest of my 5-3 comment applies. You&apos;ll need to add this to WKWebsiteDataStore.

Look at WKWebsiteDataRecord.h and WKWebsiteDataRecordPrivate.h to see how the types are exposed - They&apos;re just strings, and you&apos;ll need to add a new string type.

Additionally, it&apos;s not okay to *only* expose a deleter. WKWebsiteDataStore supports Safari&apos;s privacy UI, and that UI needs to accurately reflect when a site has data stored against it. In other words, you&apos;ll need to add the getters as well.

&gt; Source/WebKit2/UIProcess/API/C/WKCredential.cpp:-55
&gt;  {
&gt;      return toCopiedAPI(toImpl(credentialRef)-&gt;credential().user());
&gt;  }
&gt; -

This does not need to be in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314268</commentid>
    <comment_count>25</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-05-31 12:30:27 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #24)
&gt; Comment on attachment 310654 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310654&amp;action=review
&gt; 
&gt; Thinking it was very odd that this patch adds a deleter without a completion
&gt; handler, I dug in to the history of WKWebsiteDataStoreRef.
&gt; 
&gt; It was added in r181707 and its sole purpose was to provide a toll-free
&gt; bridge from WKContextRef to WKWebsiteDataStore (the Cocoa API object) It
&gt; never should&apos;ve had any API/SPI added to it. In fact some of the methods
&gt; there (rightfully) have zero clients.
&gt; 
&gt; In my 5-3 comment I suggested adding it to the C-SPI was fine, but I
&gt; misunderstood the history of WebsiteDataStoreRef - It never predated
&gt; WKWebsiteDataStore and never had any API.
&gt; 
&gt; The rest of my 5-3 comment applies. You&apos;ll need to add this to
&gt; WKWebsiteDataStore.
&gt; 
&gt; Look at WKWebsiteDataRecord.h and WKWebsiteDataRecordPrivate.h to see how
&gt; the types are exposed - They&apos;re just strings, and you&apos;ll need to add a new
&gt; string type.
&gt; 
&gt; Additionally, it&apos;s not okay to *only* expose a deleter. WKWebsiteDataStore
&gt; supports Safari&apos;s privacy UI, and that UI needs to accurately reflect when a
&gt; site has data stored against it. In other words, you&apos;ll need to add the
&gt; getters as well.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKCredential.cpp:-55
&gt; &gt;  {
&gt; &gt;      return toCopiedAPI(toImpl(credentialRef)-&gt;credential().user());
&gt; &gt;  }
&gt; &gt; -
&gt; 
&gt; This does not need to be in this patch.

Thanks Brady! I will update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315633</commentid>
    <comment_count>26</comment_count>
      <attachid>311987</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-04 23:52:36 -0700</bug_when>
    <thetext>Created attachment 311987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315640</commentid>
    <comment_count>27</comment_count>
      <attachid>311990</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-05 00:19:04 -0700</bug_when>
    <thetext>Created attachment 311990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315642</commentid>
    <comment_count>28</comment_count>
      <attachid>311991</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-05 00:29:37 -0700</bug_when>
    <thetext>Created attachment 311991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315643</commentid>
    <comment_count>29</comment_count>
      <attachid>311992</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-05 00:33:33 -0700</bug_when>
    <thetext>Created attachment 311992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315644</commentid>
    <comment_count>30</comment_count>
      <attachid>311993</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-05 00:43:25 -0700</bug_when>
    <thetext>Created attachment 311993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315654</commentid>
    <comment_count>31</comment_count>
      <attachid>311997</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-05 01:44:06 -0700</bug_when>
    <thetext>Created attachment 311997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315897</commentid>
    <comment_count>32</comment_count>
      <attachid>311997</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-05 21:56:19 -0700</bug_when>
    <thetext>Comment on attachment 311997
Patch

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

&gt; Source/WebCore/platform/network/CredentialStorage.h:60
&gt; +    HashSet&lt;String&gt; originsWithCredentials() const { return m_originsWithCredentials; }

This makes a copy of the set on every call.

const HashSet&lt;String&gt;&amp;

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecord.h:60
&gt; +/*! @constant WKWebsiteDataTypeCredentials Credentials, such as Basic Authentication. */
&gt; +WK_EXTERN NSString * const WKWebsiteDataTypeCredentials WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +

I don&apos;t think we intend to actually go through API review for this... do we?

If you&apos;re planning to, then fine... If not, this has to be moved to the private header.

I do not think it&apos;s important to make this API (and, in fact, discussion in this bug has been centered around *not* making it API for now)

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:208
&gt; +void TestController::removeAllSessionCredentials()
&gt; +{
&gt; +#if WK_API_ENABLED
&gt; +    [globalWebViewConfiguration.websiteDataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() { }];
&gt; +#endif
&gt; +}

I&apos;m very concerned about inherent flakiness in this test.

Since the UI process doesn&apos;t wait on the completion handler for this call, the iframe that is loaded can definitely end up having the credentials still applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316398</commentid>
    <comment_count>33</comment_count>
      <attachid>312165</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-06 23:35:31 -0700</bug_when>
    <thetext>Created attachment 312165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316407</commentid>
    <comment_count>34</comment_count>
      <attachid>312167</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-07 01:24:36 -0700</bug_when>
    <thetext>Created attachment 312167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316411</commentid>
    <comment_count>35</comment_count>
      <attachid>312168</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-07 01:39:38 -0700</bug_when>
    <thetext>Created attachment 312168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316414</commentid>
    <comment_count>36</comment_count>
      <attachid>312170</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-07 01:52:10 -0700</bug_when>
    <thetext>Created attachment 312170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316428</commentid>
    <comment_count>37</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-07 03:14:52 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #32)
&gt; Comment on attachment 311997 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311997&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/CredentialStorage.h:60
&gt; &gt; +    HashSet&lt;String&gt; originsWithCredentials() const { return m_originsWithCredentials; }
&gt; 
&gt; This makes a copy of the set on every call.
&gt; 
&gt; const HashSet&lt;String&gt;&amp;
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecord.h:60
&gt; &gt; +/*! @constant WKWebsiteDataTypeCredentials Credentials, such as Basic Authentication. */
&gt; &gt; +WK_EXTERN NSString * const WKWebsiteDataTypeCredentials WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; +
&gt; 
&gt; I don&apos;t think we intend to actually go through API review for this... do we?
&gt; 
&gt; If you&apos;re planning to, then fine... If not, this has to be moved to the
&gt; private header.
&gt; 
&gt; I do not think it&apos;s important to make this API (and, in fact, discussion in
&gt; this bug has been centered around *not* making it API for now)
&gt; 
&gt; &gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:208
&gt; &gt; +void TestController::removeAllSessionCredentials()
&gt; &gt; +{
&gt; &gt; +#if WK_API_ENABLED
&gt; &gt; +    [globalWebViewConfiguration.websiteDataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() { }];
&gt; &gt; +#endif
&gt; &gt; +}
&gt; 
&gt; I&apos;m very concerned about inherent flakiness in this test.
&gt; 
&gt; Since the UI process doesn&apos;t wait on the completion handler for this call,
&gt; the iframe that is loaded can definitely end up having the credentials still
&gt; applied.

Thanks for reviewing! I have updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316500</commentid>
    <comment_count>38</comment_count>
      <attachid>312170</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-07 09:06:13 -0700</bug_when>
    <thetext>Comment on attachment 312170
Patch

👍🏻👍🏻👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316506</commentid>
    <comment_count>39</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-06-07 09:20:39 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #38)
&gt; Comment on attachment 312170 [details]
&gt; Patch
&gt; 
&gt; 👍🏻👍🏻👍🏻

Thanks, Brady :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316512</commentid>
    <comment_count>40</comment_count>
      <attachid>312170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 09:51:28 -0700</bug_when>
    <thetext>Comment on attachment 312170
Patch

Clearing flags on attachment: 312170

Committed r217886: &lt;http://trac.webkit.org/changeset/217886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316513</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 09:51:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307978</attachid>
            <date>2017-04-24 08:52:21 -0700</date>
            <delta_ts>2017-04-27 05:44:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170424085220.patch</filename>
            <type>text/plain</type>
            <size>12737</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA0LTI0ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIFdlYnNpdGVEYXRhU3RvcmUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQgbmVlZHMgdG8g
c3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCBXZWJzaXRlRGF0
YVN0b3JlLgorICAgICAgICBDcmVkZW50aWFscyBtb2RpZmllZCBhZnRlciBhIHNwZWNpZmllZCB0
aW1lIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OkNyZWRlbnRp
YWxCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYXNlOjpsYXN0TW9kaWZpZWRT
aW5jZVVuaXhFcG9jaCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFz
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OnJlbW92ZUNyZWRlbnRpYWxzTW9k
aWZpZWRTaW5jZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5oOgorCiAyMDE3LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE1NjU3IGFuZCByMjE1Njc2
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5jcHAJKHJldmlzaW9uIDIxNTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwu
aCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zNiw2ICszNyw3IEBAIENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZSgpCiAgICAg
OiBtX3VzZXIoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcGFzc3dvcmQoZW1wdHlTdHJpbmcoKSkK
ICAgICAsIG1fcGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkKKyAgICAsIG1f
bGFzdE1vZGlmaWVkU2luY2VVbml4RXBvY2goV1RGOjpjdXJyZW50VGltZSgpKQogewogfQogICAg
CkBAIC00NSw2ICs0Nyw3IEBAIENyZWRlbnRpYWxCYXNlOjpDcmVkZW50aWFsQmFzZShjb25zdCBT
dHIKICAgICA6IG1fdXNlcih1c2VyLmxlbmd0aCgpID8gdXNlciA6IGVtcHR5U3RyaW5nKCkpCiAg
ICAgLCBtX3Bhc3N3b3JkKHBhc3N3b3JkLmxlbmd0aCgpID8gcGFzc3dvcmQgOiBlbXB0eVN0cmlu
ZygpKQogICAgICwgbV9wZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkKKyAgICAsIG1fbGFzdE1vZGlm
aWVkU2luY2VVbml4RXBvY2goV1RGOjpjdXJyZW50VGltZSgpKQogewogfQogICAgIApAQCAtNTIs
NiArNTUsNyBAQCBDcmVkZW50aWFsQmFzZTo6Q3JlZGVudGlhbEJhc2UoY29uc3QgQ3JlCiAgICAg
OiBtX3VzZXIob3JpZ2luYWwudXNlcigpKQogICAgICwgbV9wYXNzd29yZChvcmlnaW5hbC5wYXNz
d29yZCgpKQogICAgICwgbV9wZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkKKyAgICAsIG1fbGFzdE1v
ZGlmaWVkU2luY2VVbml4RXBvY2goV1RGOjpjdXJyZW50VGltZSgpKQogewogfQogCkBAIC04MCw2
ICs4NCwxMSBAQCBDcmVkZW50aWFsUGVyc2lzdGVuY2UgQ3JlZGVudGlhbEJhc2U6OnBlCiAgICAg
cmV0dXJuIG1fcGVyc2lzdGVuY2U7IAogfQogCit0aW1lX3QgQ3JlZGVudGlhbEJhc2U6Omxhc3RN
b2RpZmllZFNpbmNlVW5peEVwb2NoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXN0TW9kaWZp
ZWRTaW5jZVVuaXhFcG9jaDsKK30KKwogYm9vbCBDcmVkZW50aWFsQmFzZTo6Y29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKQogewogICAgIC8vIENoZWNrIHBl
cnNpc3RlbmNlIGZpcnN0IHNpbmNlIGFsbCBjcmVkZW50aWFsIHR5cGVzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oCShyZXZpc2lv
biAyMTU2ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGhhc1Bhc3N3b3JkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dGltZV90IGxhc3RNb2RpZmllZFNpbmNlVW5peEVwb2NoKCkgY29uc3Q7CiAKICAgICBib29sIGVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBA
IC02NCw2ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXNlcjsKICAgICBTdHJpbmcg
bV9wYXNzd29yZDsKICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2UgbV9wZXJzaXN0ZW5jZTsKKyAg
ICB0aW1lX3QgbV9sYXN0TW9kaWZpZWRTaW5jZVVuaXhFcG9jaCB7IDAgfTsKIH07CiAKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYg
YikgeyByZXR1cm4gQ3JlZGVudGlhbEJhc2U6OmNvbXBhcmUoYSwgYik7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwCShyZXZpc2lvbiAyMTU2ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsMTkgQEAg
dm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cgogICAgIG1fcHJvdGVjdGlv
blNwYWNlVG9DcmVkZW50aWFsTWFwLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihwYXJ0aXRpb25OYW1l
LCBwcm90ZWN0aW9uU3BhY2UpKTsKIH0KIAordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3Zl
Q3JlZGVudGlhbHNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgdGltZSkKK3sKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgUHJvdGVjdGlvblNw
YWNlPj4gY3JlZGVudGlhbHNUb0RlbGV0ZTsKKyAgICAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX3Byb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCkgeworICAgICAgICBpZiAocGFp
ci52YWx1ZS5sYXN0TW9kaWZpZWRTaW5jZVVuaXhFcG9jaCgpID49IHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRvX3RpbWVfdCh0aW1lKSkKKyAgICAgICAgICAgIGNyZWRlbnRpYWxzVG9EZWxl
dGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIua2V5LmZpcnN0LCBwYWlyLmtleS5zZWNvbmQp
KTsKKyAgICB9CisgICAgCisgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBjcmVkZW50aWFsc1Rv
RGVsZXRlKQorICAgICAgICBtX3Byb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcC5yZW1vdmUo
a2V5KTsKK30KKyAgICAKIEhhc2hNYXA8U3RyaW5nLCBQcm90ZWN0aW9uU3BhY2U+OjppdGVyYXRv
ciBDcmVkZW50aWFsU3RvcmFnZTo6ZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbFN0b3JhZ2UuaAkocmV2aXNpb24gMjE1NjgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChjb25zdCBTdHJpbmcm
LCBjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgVVJMJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbCBnZXQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW1vdmVDcmVkZW50aWFsc01vZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCk7CiAKICAgICAvLyBPUyBwZXJzaXN0ZW50IHN0b3JhZ2UuCiAgICAgV0VC
Q09SRV9FWFBPUlQgQ3JlZGVudGlhbCBnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJv
dGVjdGlvblNwYWNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU2ODEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAx
Ny0wNC0yNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCBXZWJzaXRlRGF0
YVN0b3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0IG5lZWRzIHRvIHN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNhdGlvbiBkYXRhIHRo
cm91Z2ggV2Vic2l0ZURhdGFTdG9yZS4KKyAgICAgICAgQ3JlZGVudGlhbHMgbW9kaWZpZWQgYWZ0
ZXIgYSBzcGVjaWZpZWQgdGltZSB3aWxsIGJlIHJlbW92ZWQuCisKKworICAgICAgICAqIFNoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2Vi
S2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxXZWJzaXRlRGF0YVR5cGVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpy
ZW1vdmVEYXRhKToKKwogMjAxNy0wNC0yMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFttYWNPU10gV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGhhcyBh
IHB1YmxpYyBpdmFyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCShyZXZpc2lvbiAyMTU2ODApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAgIE1lZGlh
RGV2aWNlSWRlbnRpZmllciA9IDEgPDwgMTIsCiAjZW5kaWYKICAgICBXZWJzaXRlRGF0YVR5cGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gMSA8PCAxMywKKyAgICBDcmVkZW50aWFscyA9IDEgPDwg
MTQKIH07CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQuaAkocmV2aXNpb24gMjE1NjgwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29u
c3QgV0tXZWJzaXRlRGF0YQogLyohIEBjb25zdGFudCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcyBJbmRleGVkREIgZGF0YWJhc2VzLiAqLwogV0tfRVhURVJOIE5TU3RyaW5nICog
Y29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKKy8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0
YVR5cGVDcmVkZW50aWFscyBDcmVkZW50aWFscywgc3VjaCBhcyBCYXNpYyBBdXRoZW50aWNhdGlv
bi4gKi8KK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVu
dGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOworCiAvKiEg
QSBXS1dlYnNpdGVEYXRhUmVjb3JkIHJlcHJlc2VudHMgd2Vic2l0ZSBkYXRhLCBncm91cGVkIGJ5
IGRvbWFpbiBuYW1lIHVzaW5nIHRoZSBwdWJsaWMgc3VmZml4IGxpc3QuICovCiBXS19DTEFTU19B
VkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURh
dGFSZWNvcmQgOiBOU09iamVjdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkocmV2aXNpb24gMjE1
NjgwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIE5TU3RyaW5nICogY29u
c3QgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFMKIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0
YVR5cGVXZWJTUUxEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2Vz
IjsKIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMg
PSBAIldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIjsKIAorTlNTdHJpbmcgKiBj
b25zdCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzIjsKKwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtl
eXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hl
IjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyI7
CkBAIC05MSw2ICs5Myw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNT
ZXQKICNlbmRpZgogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAiUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFp
bnNPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFsc10pCisgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6QCJDcmVkZW50aWFscyJdOwogCiAgICAgcmV0dXJuIFthcnJheSBjb21wb25lbnRz
Sm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oCShyZXZpc2lvbiAyMTU2ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw2ICs3MCw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVQKICNl
bmRpZgogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJzaXRl
RGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVE
YXRhVHlwZTo6V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKyAgICBpZiAo
W3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6V0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50
aWFsc10pCisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzOwogCiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KQEAgLTExOCw2ICsxMjAsOCBAQCBzdGF0aWMgaW5s
aW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpCiAjZW5kaWYKICAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OldlYnNpdGVEYXRhVHlwZVJlc291cmNl
TG9hZFN0YXRpc3RpY3MpKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXTsKKyAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkKKyAgICAg
ICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50
aWFsc107CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0JKHJldmlzaW9uIDIxNTY4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5
MCw3IEBAICsgKE5TU2V0ICopYWxsV2Vic2l0ZURhdGFUeXBlcwogICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOwogICAgIHN0YXRpYyBOU1NldCAqYWxsV2Vic2l0ZURhdGFUeXBl
czsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGFsbFdlYnNpdGVE
YXRhVHlwZXMgPSBbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbIFdLV2Vic2l0ZURhdGFU
eXBlRGlza0NhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZU1lbW9yeUNhY2hlLCBXS1dlYnNpdGVEYXRh
VHlwZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZUNvb2tpZXMs
IFdLV2Vic2l0ZURhdGFUeXBlU2Vzc2lvblN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlTG9jYWxT
dG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgV0tXZWJzaXRlRGF0
YVR5cGVXZWJTUUxEYXRhYmFzZXMgXV07CisgICAgICAgIGFsbFdlYnNpdGVEYXRhVHlwZXMgPSBb
W05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbIFdLV2Vic2l0ZURhdGFUeXBlRGlza0NhY2hl
LCBXS1dlYnNpdGVEYXRhVHlwZU1lbW9yeUNhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZU9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCBXS1dlYnNpdGVEYXRhVHlwZUNvb2tpZXMsIFdLV2Vic2l0ZURh
dGFUeXBlU2Vzc2lvblN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlLCBXS1dl
YnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxE
YXRhYmFzZXMsIFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgXV07CiAgICAgfSk7CiAKICAg
ICByZXR1cm4gYWxsV2Vic2l0ZURhdGFUeXBlczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJl
dmlzaW9uIDIxNTY4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTc3Miw2
ICs3NzMsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvbgogICAg
IGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSht
b2RpZmllZFNpbmNlKTsKIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3Rv
cmFnZSgpOworICAgICAgICBzdG9yYWdlLnJlbW92ZUNyZWRlbnRpYWxzTW9kaWZpZWRTaW5jZSht
b2RpZmllZFNpbmNlKTsKKyAgICB9CisKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2Ug
ZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3Bh
dGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308381</attachid>
            <date>2017-04-27 05:44:19 -0700</date>
            <delta_ts>2017-05-06 01:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170427054417.patch</filename>
            <type>text/plain</type>
            <size>53306</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTg1NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE3LTA0LTI2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJLaXQgQVBJLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzI5NTIyNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGEgbmV3IGNyZWRlbnRpYWwgbWFuYWdlciBXZWJLaXQyIEMg
QVBJIHRvIHN1cHBvcnQgcmVtb3ZhbCBvZiBzZXNzaW9uIGNyZWRlbnRpYWxzLgorCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJv
Y2Vzcyk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tD
b250ZXh0R2V0Q3JlZGVudGlhbE1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcDoK
KyAgICAgICAgKFdLQ3JlZGVudGlhbE1hbmFnZXJSZW1vdmVBbGxDcmVkZW50aWFscyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6V2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk6On5XZWJDcmVkZW50
aWFsTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXJQ
cm94eTo6cmVtb3ZlQWxsQ3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50
aWFsTWFuYWdlclByb3h5OjpkaWRSZW1vdmVDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4
dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5
OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ3Jl
ZGVudGlhbE1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVu
dGlhbE1hbmFnZXJQcm94eTo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1faGlk
ZGVuUGFnZVRocm90dGxpbmdUaW1lcik6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ3JlZGVudGlhbHM6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQ3JlZGVudGlhbHMvV2ViQ3JlZGVudGlhbE1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXI6OldlYkNyZWRl
bnRpYWxNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbE1hbmFnZXI6OnJl
bW92ZUFsbENyZWRlbnRpYWxzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NyZWRlbnRpYWxzL1dl
YkNyZWRlbnRpYWxNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvQ3JlZGVu
dGlhbHMvV2ViQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW46IEFkZGVkLgorCiAyMDE3LTA0
LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2hvdWxkIG5vdCBzeW5jaHJvbm91c2x5IGxvYWQgcHJv
dmlkZWQgZGF0YQpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxNTg1NykKKysr
IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvQ29va2ll
cyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9DcmVkZW50aWFscyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9EYXRhYmFzZXMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9GaWxlQVBJIgpAQCAtMjk5LDYgKzMwMCw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHlD
bGllbnQuY3BwCisgICAgVUlQcm9jZXNzL1dlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkuY3BwCiAg
ICAgVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkZv
cm1DbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94
eS5jcHAKQEAgLTM2MCw2ICszNjIsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29va2llTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFs
LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxNYW5hZ2VyLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Zvcm1T
dWJtaXNzaW9uTGlzdGVuZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCkBA
IC00NTQsNiArNDU3LDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCiAKKyAgICBXZWJQcm9jZXNzL0NyZWRlbnRpYWxz
L1dlYkNyZWRlbnRpYWxNYW5hZ2VyLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2Vi
RGF0YWJhc2VQcm92aWRlci5jcHAKICAgICBXZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiAKQEAgLTYyMCw2ICs2MjUsNyBAQCBzZXQoV2ViS2l0
Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmlu
CiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJ
UHJvY2Vzcy9XZWJDcmVkZW50aWFsTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2Vi
SWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluCkBAIC02NTMsNiArNjU5LDggQEAgc2V0KFdlYktpdDJf
TUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAKKyAgICBXZWJQcm9jZXNzL0NyZWRlbnRpYWxzL1dlYkNyZWRlbnRp
YWxNYW5hZ2VyLm1lc3NhZ2VzLmluCisKICAgICBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAKICAgICBXZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjE1ODU3KQorKysgU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBW
UEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCiAg
ICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dG9tYXRpb24gXAogICAgICQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9Db29raWVzIFwKKyAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQ3JlZGVudGlhbHMg
XAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCIFwKICAgICAk
KFdlYktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIFwKQEAgLTEzNiw2ICsxMzcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKICAgICBXZWJDb25uZWN0aW9uIFwKICAgICBXZWJDb29raWVNYW5hZ2VyIFwKICAgICBXZWJD
b29raWVNYW5hZ2VyUHJveHkgXAorICAgIFdlYkNyZWRlbnRpYWxNYW5hZ2VyIFwKKyAgICBXZWJD
cmVkZW50aWFsTWFuYWdlclByb3h5IFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlciBcCiAgICAg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIFwK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDIxNTg1NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRp
YWxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAg
LTExMCw2ICsxMTEsNyBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoKQogCiAgICAg
YWRkU3VwcGxlbWVudDxBdXRoZW50aWNhdGlvbk1hbmFnZXI+KCk7CiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyPigpOworICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ3JlZGVudGlhbE1h
bmFnZXI+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+
KCk7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgTmV0
d29ya1Nlc3Npb25Db2NvYTo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKHN1cHBsZW1l
bnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMjE1ODU3KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBA
IHB1YmxpYzoKICAgICAgICAgQ29udGVudEV4dGVuc2lvblN0b3JlLAogICAgICAgICBDb250ZXh0
TWVudUxpc3RlbmVyLAogICAgICAgICBDb29raWVNYW5hZ2VyLAorICAgICAgICBDcmVkZW50aWFs
TWFuYWdlciwKICAgICAgICAgRG93bmxvYWQsCiAgICAgICAgIEV4cGVyaW1lbnRhbEZlYXR1cmUs
CiAgICAgICAgIEZvcm1TdWJtaXNzaW9uTGlzdGVuZXIsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAyMTU4NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDcgQEAgdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDb250ZXh0KiBXSwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tDb250ZXh0Q29uZmlndXJhdGlvbiogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQ29udGV4dE1lbnVMaXN0ZW5lciogV0tDb250
ZXh0TWVudUxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDb29raWVN
YW5hZ2VyKiBXS0Nvb2tpZU1hbmFnZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0NyZWRlbnRpYWxNYW5hZ2VyKiBXS0NyZWRlbnRpYWxNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tDcmVkZW50aWFsKiBXS0NyZWRlbnRpYWxSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0Rvd25sb2FkKiBXS0Rvd25sb2FkUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyKiBXS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXJSZWY7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ3JlZGVudGlh
bE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbE1hbmFnZXJNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgY2hhciogV2ViQ3JlZGVudGlhbE1hbmFnZXJQ
cm94eTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiV2ViQ3JlZGVudGlhbE1hbmFn
ZXJQcm94eSI7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eT4gV2Vi
Q3JlZGVudGlhbE1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHko
cHJvY2Vzc1Bvb2wpKTsKK30KKworV2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6V2ViQ3JlZGVu
dGlhbE1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCisgICAgOiBXZWJD
b250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKK3sKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVu
dDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDcmVkZW50
aWFsTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworV2Vi
Q3JlZGVudGlhbE1hbmFnZXJQcm94eTo6fldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkoKQorewor
fQorCit2b2lkIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk6OnJlbW92ZUFsbENyZWRlbnRpYWxz
KFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gUmVtb3Zl
ZENyZWRlbnRpYWxzQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
KyAgICAKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICBtX3JlbW92ZWRDcmVkZW50aWFsc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIAorICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ3JlZGVudGlhbE1hbmFn
ZXI6OlJlbW92ZUFsbENyZWRlbnRpYWxzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOworfQorCit2
b2lkIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk6OnJlbW92ZUNyZWRlbnRpYWxzUmVzdWx0KHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGJvb2wgcmVtb3ZlZENyZWRlbnRpYWxzKQoreworICAgIG1fcmVt
b3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShyZW1vdmVkQ3JlZGVudGlhbHMpOworCit9CisKKy8vIFdlYkNvbnRl
eHRTdXBwbGVtZW50CisKK3ZvaWQgV2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQoreworICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3JlbW92ZWRDcmVk
ZW50aWFsc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRl
ZCk7Cit9CisKK3ZvaWQgV2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3Nl
KFdlYlByb2Nlc3NQcm94eSopCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fcmVtb3Zl
ZENyZWRlbnRpYWxzQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVk
KTsKK30KKwordm9pZCBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2Uo
TmV0d29ya1Byb2Nlc3NQcm94eSopCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fcmVt
b3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKK30KKwordm9pZCBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpCit7CisgICAgQVBJOjpPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdlYkNy
ZWRlbnRpYWxNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAg
IEFQSTo6T2JqZWN0OjpkZXJlZigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNyZWRlbnRpYWxNYW5hZ2Vy
UHJveHkuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ3Jl
ZGVudGlhbE1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5OworCit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1bnNpZ25lZD4g
UmVtb3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2s7CisgICAgCitjbGFzcyBXZWJDcmVkZW50aWFsTWFu
YWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q3Jl
ZGVudGlhbE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBw
bGVtZW50TmFtZSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ3JlZGVudGlhbE1hbmFn
ZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgdmlydHVhbCB+V2ViQ3JlZGVu
dGlhbE1hbmFnZXJQcm94eSgpOworCisgICAgdm9pZCByZW1vdmVBbGxDcmVkZW50aWFscyhXZWJD
b3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbik7CisKKyAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzUmVzdWx0
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGJvb2wpOworICAgIAorICAgIHVzaW5nIEFQSTo6T2JqZWN0
OjpyZWY7CisgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOworCitwcml2YXRlOgorICAgIFdl
YkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKKworICAgIC8vIFdlYkNv
bnRleHRTdXBwbGVtZW50CisgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOwor
ICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CisKKyAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
UmVtb3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2s+PiBtX3JlbW92ZWRDcmVkZW50aWFsc0NhbGxiYWNr
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNy
ZWRlbnRpYWxNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdl
cyAtPiBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5IHsKKyAgICBSZW1vdmVDcmVkZW50aWFsc1Jl
c3VsdCh1aW50NjRfdCBjYWxsYmFja0lELCBib29sIHJlc3VsdCk7Cit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIxNTg1NykK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5o
IgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYklj
b25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCkBAIC0yNTksNiAr
MjYwLDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogICAgIG1f
aWNvbkRhdGFiYXNlID0gV2ViSWNvbkRhdGFiYXNlOjpjcmVhdGUodGhpcyk7CiAKICAgICBhZGRT
dXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKyAgICBhZGRTdXBwbGVtZW50PFdl
YkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eT4oKTsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDIxNTg1NykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtODYsNiArODYsNyBAQCBjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHk7CiBjbGFzcyBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJDb29raWVN
YW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJDcmVkZW50aWFsOworY2xhc3MgV2ViQ3JlZGVudGlhbE1h
bmFnZXJQcm94eTsKIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTsKIGNsYXNz
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC0x
MjQsNiArMTI1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQ29udGV4dFJlZiwgV2ViUHJvYwog
V0tfQUREX0FQSV9NQVBQSU5HKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYsIEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQ29udGV4dE1lbnVMaXN0
ZW5lclJlZiwgV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQ29va2llTWFuYWdlclJlZiwgV2ViQ29va2llTWFuYWdlclByb3h5KQorV0tfQUREX0FQSV9N
QVBQSU5HKFdLQ3JlZGVudGlhbE1hbmFnZXJSZWYsIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tDcmVkZW50aWFsUmVmLCBXZWJDcmVkZW50aWFsKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLRG93bmxvYWRSZWYsIERvd25sb2FkUHJveHkpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyUmVmLCBXZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAkocmV2aXNpb24gMjE1ODU3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAog
Ly8gU3VwcGxlbWVudHMKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aCIKIApAQCAtNDAyLDYgKzQwMywxMSBAQCBXS0Nvb2tpZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0
Q29va2llTWFuCiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCkpOwogfQogCitXS0NyZWRlbnRpYWxNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldENyZWRlbnRpYWxNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQor
eworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViQ3Jl
ZGVudGlhbE1hbmFnZXJQcm94eT4oKSk7Cit9CisKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS0Nv
bnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKFdLQ29udGV4dFJlZiBjb250ZXh0KQogewogICAgIHJl
dHVybiB0b0FQSSgmdG9JbXBsKGNvbnRleHQpLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNpb24gMjE1
ODU3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDcgQEAgV0tfRVhQT1JUIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBXS0NvbnRleAogCiBXS19FWFBPUlQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBX
S0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7
CiBXS19FWFBPUlQgV0tDb29raWVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIo
V0tDb250ZXh0UmVmIGNvbnRleHQpOworV0tfRVhQT1JUIFdLQ3JlZGVudGlhbE1hbmFnZXJSZWYg
V0tDb250ZXh0R2V0Q3JlZGVudGlhbE1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tf
RVhQT1JUIFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldEdlb2xvY2F0aW9uTWFu
YWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tJY29uRGF0YWJhc2VSZWYg
V0tDb250ZXh0R2V0SWNvbkRhdGFiYXNlKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9S
VCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdl
TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAkocmV2aXNpb24gMjE1ODU3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDQgKzUyLDMgQEAgV0tTdHJpbmdSZWYgV0tDcmVkZW50aWFsQ29weVVzZXIo
V0tDcmVkZQogewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY3JlZGVudGlhbFJlZikt
PmNyZWRlbnRpYWwoKS51c2VyKCkpOwogfQotCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDcmVkZW50aWFsTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbE1hbmFnZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ3JlZGVudGlhbE1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS0NyZWRlbnRpYWxNYW5hZ2VyUmVt
b3ZlQWxsQ3JlZGVudGlhbHMoV0tDcmVkZW50aWFsTWFuYWdlclJlZiBjcmVkZW50aWFsTWFuYWdl
ciwgdm9pZCogY29udGV4dCwgV0tDcmVkZW50aWFsTWFuYWdlclJlbW92ZWRDcmVkZW50aWFsc1Jl
c3VsdCBjYWxsYmFjaykKK3sKKyAgICB0b0ltcGwoY3JlZGVudGlhbE1hbmFnZXIpLT5yZW1vdmVB
bGxDcmVkZW50aWFscyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9H
ZW5lcmljQ2FsbGJhY2tGdW5jdGlvbjxib29sLCBib29sPihjb250ZXh0LCBjYWxsYmFjaykpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbE1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVk
ZW50aWFsTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NyZWRlbnRpYWxNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFz
ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0NyZWRlbnRpYWxUeXBlcy5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKldLQ3JlZGVu
dGlhbE1hbmFnZXJSZW1vdmVkQ3JlZGVudGlhbHNSZXN1bHQpKGJvb2wsIFdLRXJyb3JSZWYsIHZv
aWQqKTsKKyAgICAKK1dLX0VYUE9SVCB2b2lkIFdLQ3JlZGVudGlhbE1hbmFnZXJSZW1vdmVBbGxD
cmVkZW50aWFscyhXS0NyZWRlbnRpYWxNYW5hZ2VyUmVmLCB2b2lkKiwgV0tDcmVkZW50aWFsTWFu
YWdlclJlbW92ZWRDcmVkZW50aWFsc1Jlc3VsdCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTU4NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NDQsNiArMTg0
NCwxNCBAQAogCQlDMEUzQUE3QTEyMDlFODMwMDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDgxMjA5RTQ1
MDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0IxMjA5RTgzNTAwQTQ5
RDAxIC8qIE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEUzQUE0NTEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmNwcCAqLzsgfTsKIAkJ
QzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1v
ZHVsZS5oICovOyB9OworCQlDMUQ4RDBDNjFFQjFFMzQ3MDAyRjJCNEIgLyogV0tDcmVkZW50aWFs
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzFEOEQwQzQxRUIxQ0E3NDAwMkYyQjRCIC8qIFdLQ3JlZGVudGlhbE1hbmFnZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMUQ4RDBDNzFFQjFF
MzRDMDAyRjJCNEIgLyogV0tDcmVkZW50aWFsTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4RDBDNTFFQjFDQkJEMDAyRjJCNEIgLyog
V0tDcmVkZW50aWFsTWFuYWdlci5jcHAgKi87IH07CisJCUMxRUZCNDNDMUVBRjdEMTIwMEY5RjhB
MSAvKiBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRUZCNDM3MUVBRjc3OTgwMEY5RjhBMSAvKiBXZWJD
cmVkZW50aWFsTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKKwkJQzFFRkI0M0QxRUFGN0QxNjAwRjlG
OEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRUZCNDM4MUVBRjc3OTgwMEY5RjhBMSAvKiBXZWJD
cmVkZW50aWFsTWFuYWdlclByb3h5LmggKi87IH07CisJCUMxRUZCNDQ0MUVBRjg1MzYwMEY5RjhB
MSAvKiBXZWJDcmVkZW50aWFsTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMUVGQjQ0MzFFQUY4NEJDMDBGOUY4QTEgLyogV2ViQ3JlZGVu
dGlhbE1hbmFnZXIuY3BwICovOyB9OworCQlDMUVGQjQ0NTFFQUY4NTNBMDBGOUY4QTEgLyogV2Vi
Q3JlZGVudGlhbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxRUZCNDQxMUVBRjgzRkIwMEY5RjhBMSAvKiBXZWJDcmVkZW50aWFsTWFuYWdl
ci5oICovOyB9OworCQlDMUVGQjQ0QzFFQUZBRUNBMDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMUVGQjQ0QjFFQUZBRTQ4MDBGOUY4QTEgLyogV2ViQ3JlZGVu
dGlhbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUMxRUZCNDREMUVB
RkFFQ0QwMEY5RjhBMSAvKiBXZWJDcmVkZW50aWFsTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUVGQjQ0QTFF
QUZBRDI1MDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MTcz
ODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovOyB9OwogCQlD
NTIzN0Y2MDEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUyMzdGNUYxMjQ0MUNBMzAw
NzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLzsgfTsKIAkJQzU0MjU2QjUxOEJFQzE4
QzAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9y
bUlucHV0Q29udHJvbC5oICovOyB9OwpAQCAtNDE2OCw2ICs0MTc2LDE4IEBACiAJCUMwRTNBQTQ0
MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwRTNBQTQ1MTIw
OUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFM0FB
NDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vZHVsZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzFEOEQwQzQxRUIxQ0E3NDAwMkYyQjRCIC8qIFdLQ3JlZGVudGlhbE1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDcmVkZW50aWFsTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUQ4RDBDNTFFQjFDQkJEMDAyRjJCNEIgLyogV0tD
cmVkZW50aWFsTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS0NyZWRlbnRpYWxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzFFQ0RDNzQxRUFGNUM2RDAwNUUyNzg5IC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxNYW5hZ2VyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUVGQjQzNzFFQUY3Nzk4MDBGOUY4
QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRkI0MzgxRUFGNzc5ODAwRjlGOEExIC8qIFdlYkNyZWRl
bnRpYWxNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q3JlZGVudGlhbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MUVGQjQzQjFFQUY3QTc4MDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUVGQjQ0MTFFQUY4
M0ZCMDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ3JlZGVudGlhbE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzFFRkI0NDMxRUFGODRCQzAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRp
YWxNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRkI0NEExRUFG
QUQyNTAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRkI0
NEIxRUFGQUU0ODAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ3JlZGVu
dGlhbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMxRUZCNDRFMUVBRkNGQkMwMEY5RjhBMSAvKiBXZWJDcmVkZW50aWFsTWFuYWdl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNyZWRlbnRp
YWxNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFFRkI0
NEYxRUFGQ0ZCQzAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVkZW50aWFsTWFuYWdlclBy
b3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRG
OEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JD
bGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMx
OEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tGb3JtSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3Jt
SW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTA5LDYgKzY1
MjksNyBAQAogCQkJCTFDMEExOTQzMUM4RkYxQTgwMEZFMEVCQiAvKiBBdXRvbWF0aW9uICovLAog
CQkJCTdDNkU3MEY4MThCMkQ0N0UwMEYyNEUyRSAvKiBjb2NvYSAqLywKIAkJCQkzMzA5MzQ0QjEz
MTVCOTNBMDA5N0E3QkMgLyogQ29va2llcyAqLywKKwkJCQlDMUVDREM3MjFFQUY1QkNCMDA1RTI3
ODkgLyogQ3JlZGVudGlhbHMgKi8sCiAJCQkJNTEyQTk3NTQxODBERjkyNzAwMzlBMTQ5IC8qIERh
dGFiYXNlcyAqLywKIAkJCQlCQ0FDQzQzQjE2QjI0QzVEMDBCNkUwOTIgLyogRW50cnlQb2ludCAq
LywKIAkJCQlFMTcwODc2RDE2RDZDQTcyMDBGOTkyMjYgLyogRmlsZUFQSSAqLywKQEAgLTY2NTcs
NiArNjY3OCw5IEBACiAJCUJDMDMyREMzMTBGNDM4MjYwMDU4QzE1QSAvKiBVSVByb2Nlc3MgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMxRUZCNDNCMUVB
RjdBNzgwMEY5RjhBMSAvKiBXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCUMxRUZCNDM3MUVBRjc3OTgwMEY5RjhBMSAvKiBXZWJDcmVkZW50aWFsTWFuYWdlclBy
b3h5LmNwcCAqLywKKwkJCQlDMUVGQjQzODFFQUY3Nzk4MDBGOUY4QTEgLyogV2ViQ3JlZGVudGlh
bE1hbmFnZXJQcm94eS5oICovLAogCQkJCUJDMDMyREM0MTBGNDM4N0MwMDU4QzE1QSAvKiBBUEkg
Ki8sCiAJCQkJMUFCMUY3NzYxRDFCMzBBOTAwN0M5QkQxIC8qIEFwcGxlUGF5ICovLAogCQkJCTUx
MkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLywKQEAgLTY5MjYsNiAr
Njk1MCw4IEBACiAJCQkJMzMwOTM0NTkxMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdl
ci5oICovLAogCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3Bw
ICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCAqLywK
KwkJCQlDMUQ4RDBDNTFFQjFDQkJEMDAyRjJCNEIgLyogV0tDcmVkZW50aWFsTWFuYWdlci5jcHAg
Ki8sCisJCQkJQzFEOEQwQzQxRUIxQ0E3NDAwMkYyQjRCIC8qIFdLQ3JlZGVudGlhbE1hbmFnZXIu
aCAqLywKIAkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMu
aCAqLywKIAkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAgKi8s
CiAJCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLywKQEAgLTc3
MTAsNiArNzczNiwxMCBAQAogCQlDMENFNzI5RDEyNDdFNzFEMDBCQzBFQzQgLyogRGVyaXZlZCBT
b3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlD
MUVGQjQ0RTFFQUZDRkJDMDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlcy5o
ICovLAorCQkJCUMxRUZCNDRGMUVBRkNGQkMwMEY5RjhBMSAvKiBXZWJDcmVkZW50aWFsTWFuYWdl
clByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDMUVGQjQ0QjFFQUZBRTQ4MDBGOUY4QTEgLyogV2Vi
Q3JlZGVudGlhbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQzFFRkI0
NEExRUFGQUQyNTAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQk1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUMwQjE3NzUxRTdDODc5QzAwRTkxMjND
IC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oICovLAogCQkJCTVDMEIxNzc2MUU3Qzg3
OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAt
Nzg5OCw2ICs3OTI4LDE2IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJ
CX07CisJCUMxRUNEQzcyMUVBRjVCQ0IwMDVFMjc4OSAvKiBDcmVkZW50aWFscyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzFFRkI0NDMxRUFGODRCQzAw
RjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyLmNwcCAqLywKKwkJCQlDMUVGQjQ0MTFFQUY4
M0ZCMDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXIuaCAqLywKKwkJCQlDMUVDREM3NDFF
QUY1QzZEMDA1RTI3ODkgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IENyZWRlbnRpYWxzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1zICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgwNjAsMTQgKzgxMDAsNiBAQAogCQkJ
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL2NhY2hlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKLQkJRjREN0JDQ0ExRUE0OTRGQTAwQzQyMUQzIC8qIFJlY292ZXJlZCBSZWZlcmVuY2Vz
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlDNThDREYy
ODE4ODc1NDhCMDA4NzE1MzYgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCAq
LywKLQkJCSk7Ci0JCQluYW1lID0gIlJlY292ZXJlZCBSZWZlcmVuY2VzIjsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY2Mzg5NTVBMTMzQkY1N0QwMDg5NDFENSAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtODE2Niw2ICs4
MTk4LDcgQEAKIAkJCQkxQUZCNEM3MjFBREYxNTVEMDBCMzMzMzkgLyogX1dLV2Vic2l0ZURhdGFT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyMEM4MzUxRTVCNzRCOTAwMjVCMjUwIC8qIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRB
OTNCNzFBRUIwOEVBMDAxNTBFOUMgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDMUVGQjQ0NTFFQUY4NTNBMDBGOUY4QTEgLyogV2ViQ3JlZGVudGlh
bE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjIzNzhDMURGMERFNkUwMDExN0FBMyAv
KiBfV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjIzNzhFMURGMEUw
RDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzcwLDYgKzg4MDMsNyBAQAogCQkJCTI5Q0Q1NUFBMTI4
RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEI3MjQ0MTlGNUI5QkUw
MEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMx
RDhEMEM2MUVCMUUzNDcwMDJGMkI0QiAvKiBXS0NyZWRlbnRpYWxNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzlGNDAxQzE5RkIwQkJDMDAyQjJCNDIgLyogV0tBY3Rpb25NZW51VHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTQ4MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0FjdGlv
blNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0QTE4QkJFMDQ0MDAwRkNGQzkgLyog
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTAwLDYgKzkxMzQs
NyBAQAogCQkJCTFGNzUwNkI1MTg1OTE2NTQwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5T
Y3JpcHRXb3JsZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJDQzFBOUJDNDY1
MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
ODMyQ0UxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzFFRkI0M0QxRUFGN0QxNjAwRjlGOEExIC8qIFdlYkNyZWRlbnRp
YWxNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTY1NEQxMUIxNEY3MTQwMEJG
MUQzRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzVBOEQyQzgxODdDQ0ZBQjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzVBOEQyRDYxODdEMUMwRTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MTMsNiArOTc0OCw3IEBACiAJCQkJMzE3
RkU3Q0UxQzQ4N0RCODAwQTBDQTg5IC8qIF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzNEMTIyMjE4QTQ3MzAxMDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0E4OEIzOTFCQzcwRjNGMDBBQkE1QzIgLyogX1dLSGl0
VGVzdFJlc3VsdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxRUZCNDQ0MUVBRjg1MzYwMEY5RjhB
MSAvKiBXZWJDcmVkZW50aWFsTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTBGNTkx
MjFEREUyOTc3MDA0MTJGRjUgLyogX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0Q0OTFCMEQxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMThBOUYyMTkwOEI4
RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC05ODgxLDYgKzk5MTcsNyBAQAogCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QThDNkE4MTFFM0JBNUYwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MTQ3QUExMkY2NENEQTAwN0IyQzMyIC8qIEluamVj
dGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMUVGQjQ0
RDFFQUZBRUNEMDBGOUY4QTEgLyogV2ViQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU5QzU1MUUxMzAwMDY0MTAwMjVDMEMyIC8qIEluamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0E4QzZBRjExRTNDMDg3MDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzM0UwRDIxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05OTg2LDYgKzEwMDIzLDcg
QEAKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29ya1JU
Q1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2
QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzFFRkI0M0MxRUFGN0QxMjAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2Vy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMyMTU5NTMxREJBRTcxODAwNTRBQTNDIC8q
IE5ldHdvcmtTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMjBDQjlEMUJCMERDRkEw
MDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFB
MkVDNTUxNDg5OTgyRTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMTAxNTUsNiArMTAxOTMsNyBAQAogCQkJCUNFREExMkUyMTUy
Q0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTk1NUE2RUQxQzc5ODBDQTAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5QzNBRTI3MURBRDk0ODkwMEFGNUMxNiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzFFRkI0NEMxRUFG
QUVDQTAwRjlGOEExIC8qIFdlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlDM0FFMjQxREFEOEUzNzAwQUY1QzE2IC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMwQTE5NTcxQzkwMDY4
RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDMEExOTQ2MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA1NjYsNiArMTA2MDUsNyBAQAog
CQkJCTMxRDc1NUMyMUQ5MUI4MUIwMDg0M0JEMSAvKiBXS1RleHRDaGVja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJERDY3QTM2MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGll
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU2OTE4QkJFM0Q5MDAwRkNGQzkgLyogV0tU
ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzFEOEQwQzcx
RUIxRTM0QzAwMkYyQjRCIC8qIFdLQ3JlZGVudGlhbE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM0MDc2MDcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0Q1RUJCRTE3NDZCMDRDMDAwQzFDNDUgLyogV0tUeXBlUmVmV3JhcHBlci5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDNDA3NjA5MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1VSTC5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ3JlZGVudGlh
bHMvV2ViQ3JlZGVudGlhbE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ3JlZGVudGlhbHMvV2ViQ3JlZGVudGlhbE1hbmFnZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ3JlZGVudGlhbHMvV2ViQ3JlZGVu
dGlhbE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbE1hbmFnZXIu
aCIKKworI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJDcmVkZW50aWFsTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGNoYXIqIFdlYkNyZWRlbnRpYWxNYW5h
Z2VyOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJXZWJDcmVkZW50aWFsTWFuYWdl
ciI7Cit9CisKK1dlYkNyZWRlbnRpYWxNYW5hZ2VyOjpXZWJDcmVkZW50aWFsTWFuYWdlcihDaGls
ZFByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKKyAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ3JlZGVudGlhbE1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCit2b2lkIFdlYkNyZWRlbnRpYWxN
YW5hZ2VyOjpyZW1vdmVBbGxDcmVkZW50aWFscyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBjYWxsYmFja0lEKQoreworICAgIGJvb2wgY3JlZGVudGlhbHNSZW1vdmVkID0gZmFsc2U7CisK
KyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRl
bnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgICAgICBjcmVkZW50aWFsc1Jl
bW92ZWQgPSB0cnVlOworICAgIH0KKworICAgIGlmIChjYWxsYmFja0lEKQorICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNyZWRlbnRpYWxNYW5hZ2VyUHJveHk6OlJlbW92ZUNy
ZWRlbnRpYWxzUmVzdWx0KGNhbGxiYWNrSUQsIGNyZWRlbnRpYWxzUmVtb3ZlZCksIDApOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q3JlZGVudGlhbHMvV2ViQ3JlZGVudGlhbE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0NyZWRlbnRpYWxzL1dlYkNyZWRlbnRpYWxNYW5hZ2VyLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9DcmVkZW50aWFscy9XZWJD
cmVkZW50aWFsTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NT
dXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIENoaWxkUHJvY2VzczsKKworY2xhc3MgV2ViQ3JlZGVudGlhbE1h
bmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViQ3JlZGVudGlhbE1hbmFnZXIpOworcHVibGljOgorICAgIFdlYkNyZWRl
bnRpYWxNYW5hZ2VyKENoaWxkUHJvY2VzcyopOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CisgICAgCisgICAgdm9pZCByZW1vdmVBbGxDcmVkZW50aWFscyhXZWJD
b3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCisgICAgQ2hpbGRQcm9jZXNz
KiBtX3Byb2Nlc3M7CisgICAgCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0NyZWRlbnRpYWxzL1dlYkNyZWRlbnRpYWxNYW5hZ2VyLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ3JlZGVu
dGlhbHMvV2ViQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9DcmVkZW50aWFscy9XZWJDcmVkZW50aWFsTWFuYWdl
ci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KyAKKyBtZXNzYWdlcyAtPiBXZWJDcmVkZW50aWFsTWFuYWdlciB7CisgICAgdm9pZCBSZW1vdmVB
bGxDcmVkZW50aWFscyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxs
YmFja0lEKQorfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjE1ODU3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDQtMjYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNhdGlv
biBkYXRhIHRocm91Z2ggdGhlIFdlYktpdCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY3JlZGVudGlhbCBtYW5hZ2VyIEFQSSB0ZXN0Lgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0NyZWRlbnRp
YWxNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDcmVkZW50aWFs
TWFuYWdlclJlbW92ZWRDcmVkZW50aWFscyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTctMDQtMjYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNvbWUgbW9yZSB0ZXN0aW5nIG1vZGVzIGZvciBXYXNtIHRlc3RzIG5vdyB0aGF0IHdlIGhhdmUg
dGllciB1cApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNTg1NykKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsNiArNTQzLDcgQEAKIAkJQzBBREJFOTYxMkZDQTc5
QjAwRDJDMTI5IC8qIHNpbXBsZS1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8qIHNp
bXBsZS1mb3JtLmh0bWwgKi87IH07CiAJCUMwQkQ2NjlGMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEJENjY5RTEzMUQzQ0ZGMDBFMThGMkEg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwICovOyB9Owog
CQlDMEM1RDNDNjE0NTk5MTI5MDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRs
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVE
M0JEMTQ1OThCNkYwMEE4MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tICov
OyB9OworCQlDMUVGQjQ1MjFFQjA5NkZBMDBGOUY4QTEgLyogQ3JlZGVudGlhbE1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFRkI0NTEx
RUIwOTZFODAwRjlGOEExIC8qIENyZWRlbnRpYWxNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQzI1Q0NB
MDYxRTUxMzgwQjAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUNDQTA1MUU1MTM4MEIwMDI2Q0I4QSAvKiBM
aW5lQnJlYWtpbmcubW0gKi87IH07CiAJCUMyNUNDQTBCMUU1MTQwQzEwMDI2Q0I4QSAvKiBMaW5l
QnJlYWtpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjVDQ0EwQTFFNTEzRjQ5MDAyNkNCOEEgLyogTGluZUJyZWFraW5nLmh0bWwg
Ki87IH07CiAJCUMyNUNDQTBEMUU1MTQxODQwMDI2Q0I4QSAvKiBBbGxBaGVtLnN2ZyBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVDQ0EwQzFF
NTE0MEU1MDAyNkNCOEEgLyogQWxsQWhlbS5zdmcgKi87IH07CkBAIC0xNDA3LDYgKzE0MDgsNyBA
QAogCQlDMEJENjY5RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNu
dEZpcmVFYXJseV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFj
a2luZ1NjYWxlRmFjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRs
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdT
Y2FsZUZhY3Rvcl9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRUZC
NDUxMUVCMDk2RTgwMEY5RjhBMSAvKiBDcmVkZW50aWFsTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUNDQTA1MUU1MTM4MEIwMDI2Q0I4QSAvKiBMaW5lQnJl
YWtpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBMaW5lQnJl
YWtpbmcubW07IHBhdGggPSAuLi9XZWJDb3JlL0xpbmVCcmVha2luZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzI1Q0NBMEExRTUxM0Y0OTAwMjZDQjhBIC8qIExpbmVCcmVha2lu
Zy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTGluZUJyZWFraW5nLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUNDQTBDMUU1MTQwRTUwMDI2Q0I4QSAvKiBB
bGxBaGVtLnN2ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbGxBaGVtLnN2Zzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMjksNiArMjAzMSw3IEBACiAJCQkJMUE1MEFBMUMxQTJB
NEU3MDAwRjRDMzQ1IC8qIENsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwICovLAogCQkJCTdD
OEREQUE5MTczNURFMUQwMEVBNUFDMCAvKiBDbG9zZVRoZW5UZXJtaW5hdGUuY3BwICovLAogCQkJ
CUY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLywKKwkJCQlD
MUVGQjQ1MTFFQjA5NkU4MDBGOUY4QTEgLyogQ3JlZGVudGlhbE1hbmFnZXIuY3BwICovLAogCQkJ
CUY2QjdCRTkzMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3Bw
ICovLAogCQkJCUY2QjdCRTkyMTc0NjkxRUYwMDhBMzQ0NSAvKiBEaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHNfQnVuZGxlLmNwcCAqLywKIAkJCQk5MzMxNDA3QjE3QjQ0MTkwMDBGMDgzQjEgLyogRGlk
Tm90SGFuZGxlS2V5RG93bi5jcHAgKi8sCkBAIC0yODI2LDYgKzI4MjksNyBAQAogCQkJCTJENTFB
MEM3MUM4QkYwMEMwMDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTQ2Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE5OEEyNDAxRUE3RTU5RjAwODkxMEI3IC8qIEluaXRpYWxXYXJt
ZWRQcm9jZXNzVXNlZC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxRUZCNDUyMUVCMDk2RkEwMEY5
RjhBMSAvKiBDcmVkZW50aWFsTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VC
QzFBNDExQTdFMDA0NDdDNEMgLyogRE9NTm9kZUZyb21KU09iamVjdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUJEMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01SYW5nZU9mU3RyaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9DcmVkZW50aWFsTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0NyZWRlbnRpYWxNYW5hZ2VyLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ3Jl
ZGVudGlhbE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgor
I2luY2x1ZGUgPFdlYktpdC9XS0NyZWRlbnRpYWxNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJv
b2wgdGVzdERvbmU7CitzdGF0aWMgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiB3a0NvbnRleHQ7
CisKK3ZvaWQgQ3JlZGVudGlhbE1hbmFnZXJSZW1vdmVkQ3JlZGVudGlhbHNSZXN1bHQoYm9vbCBy
ZXN1bHQsIFdLRXJyb3JSZWYsIHZvaWQqKQoreworICAgIEFTU0VSVF9UUlVFKHJlc3VsdCk7Cisg
ICAgdGVzdERvbmUgPSB0cnVlOworfQorICAgIAorc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sK
KyAgICBXS0NyZWRlbnRpYWxNYW5hZ2VyUmVmIGNyZWRlbnRpYWxNYW5hZ2VyID0gV0tDb250ZXh0
R2V0Q3JlZGVudGlhbE1hbmFnZXIod2tDb250ZXh0LmdldCgpKTsKKyAgICBXS0NyZWRlbnRpYWxN
YW5hZ2VyUmVtb3ZlQWxsQ3JlZGVudGlhbHMoY3JlZGVudGlhbE1hbmFnZXIsIG51bGxwdHIsIENy
ZWRlbnRpYWxNYW5hZ2VyUmVtb3ZlZENyZWRlbnRpYWxzUmVzdWx0KTsKK30KKworVEVTVChXZWJL
aXQyLCBDcmVkZW50aWFsTWFuYWdlcikKK3sKKyAgICB3a0NvbnRleHQuYWRvcHQoV0tDb250ZXh0
Q3JlYXRlKCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHdrQ29udGV4dC5nZXQoKSk7
CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgbWVtc2V0KCZs
b2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgIGxvYWRlckNsaWVu
dC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJh
bWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tQYWdlTG9h
ZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
aHR0cHM6Ly91c2VybmFtZTpwYXN3b3JkQHd3dy53ZWJraXQub3JnIikpLmdldCgpKTsKKworICAg
IFV0aWw6OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309279</attachid>
            <date>2017-05-06 01:14:24 -0700</date>
            <delta_ts>2017-05-19 07:17:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170506011423.patch</filename>
            <type>text/plain</type>
            <size>33987</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjI0NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA1LTA2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJLaXQgQVBJLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIHRvIHRoZSBXZWJzaXRl
IERhdGEgU3RvcmUgQyBBUEksCisgICAgICAgIHdoaWNoIHdpbGwgcmVtb3ZlIGFsbCBjcmVkZW50
aWFscyBpbiB0aGUgV2Vic2l0ZSBEYXRhIFN0b3JlIHNlc3Npb24uCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOgorICAgICAgICAqIFNoYXJlZC9DcmVkZW50aWFsczogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL0NyZWRlbnRpYWxzL0NyZWRlbnRpYWxNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkNyZWRlbnRpYWxNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OkNyZWRlbnRpYWxNYW5hZ2VyOjpDcmVkZW50aWFsTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OkNyZWRlbnRpYWxNYW5hZ2VyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMpOgorICAg
ICAgICAqIFNoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ3JlZGVudGlhbHMvQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwOgorICAg
ICAgICAoV0tDcmVkZW50aWFsQ29weVVzZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpy
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ3JlZGVudGlhbHM6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKwogMjAxNy0wNS0wNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQXNzZXJ0aW9u
IGZhaWx1cmUgaW4gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3Rv
ckNsaWVudCB3aGVuIGRpc3Bvc2luZyBXZWJLaXRXZWJDb250ZXh0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjE2MjQ1KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJL2MiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1NoYXJlZC9BdXRoZW50aWNhdGlvbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hh
cmVkL0NvcmVJUENTdXBwb3J0IgorICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ3JlZGVudGlh
bHMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9EYXRhYmFzZXMiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCIgogICAgICIke1dFQktJVDJfRElSfS9T
aGFyZWQvRmlsZUFQSSIKQEAgLTE2NSw2ICsxNjYsOSBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL0NhY2hlTW9kZWwuY3BwCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKICAg
ICBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKworICAgIFNoYXJlZC9DcmVkZW50
aWFscy9DcmVkZW50aWFsTWFuYWdlci5jcHAKKwogICAgIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAK
ICAgICBTaGFyZWQvRm9udEluZm8uY3BwCiAgICAgU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCkBA
IC02MTUsNiArNjE5LDggQEAgc2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFNo
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KIAor
ICAgIFNoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5tZXNzYWdlcy5pbgorCiAg
ICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIubWVzc2FnZXMuaW4KIAog
ICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIxNjI0NSkKKysrIFNvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgVlBB
VEggPSBcCiAgICAgJChXZWJLaXQyKS9TaGFyZWQgXAogICAgICQoV2ViS2l0MikvU2hhcmVkL0FQ
SS9Db2NvYSBcCiAgICAgJChXZWJLaXQyKS9TaGFyZWQvQXV0aGVudGljYXRpb24gXAorICAgICQo
V2ViS2l0MikvU2hhcmVkL0NyZWRlbnRpYWxzIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9tYWMg
XAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BcHBsZVBheSBcCiAgICAgJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXApAQCAtOTAsNiArOTEsNyBAQCBlbmRpZgogTUVT
U0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKICAgICBDaGls
ZFByb2Nlc3MgXAorICAgIENyZWRlbnRpYWxNYW5hZ2VyIFwKICAgICBEYXRhYmFzZVByb2Nlc3Mg
XAogICAgIERhdGFiYXNlUHJvY2Vzc1Byb3h5IFwKICAgICBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24gXApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE2MjQ1KQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
Q3JlZGVudGlhbE1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgiCkBAIC0xMTAsNiArMTExLDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQ
cm9jZXNzKCkKIAogICAgIGFkZFN1cHBsZW1lbnQ8QXV0aGVudGljYXRpb25NYW5hZ2VyPigpOwog
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKTsKKyAgICBhZGRTdXBwbGVtZW50
PENyZWRlbnRpYWxNYW5hZ2VyPigpOwogICAgIGFkZFN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyPigpOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENP
Q09BKQogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcihzdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDIxNjI0NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRlbnRFeHRlbnNpb25TdG9yZSwKICAg
ICAgICAgQ29udGV4dE1lbnVMaXN0ZW5lciwKICAgICAgICAgQ29va2llTWFuYWdlciwKKyAgICAg
ICAgQ3JlZGVudGlhbE1hbmFnZXIsCiAgICAgICAgIERvd25sb2FkLAogICAgICAgICBFeHBlcmlt
ZW50YWxGZWF0dXJlLAogICAgICAgICBGb3JtU3VibWlzc2lvbkxpc3RlbmVyLApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0NyZWRlbnRpYWxzL0NyZWRlbnRpYWxNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ3JlZGVudGlhbHMvQ3JlZGVudGlhbE1h
bmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50
aWFscy9DcmVkZW50aWFsTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcmVkZW50aWFs
TWFuYWdlci5oIgorCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiQ3JlZGVu
dGlhbE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgY2hhciogQ3Jl
ZGVudGlhbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIkNyZWRlbnRp
YWxNYW5hZ2VyIjsKK30KKworQ3JlZGVudGlhbE1hbmFnZXI6OkNyZWRlbnRpYWxNYW5hZ2VyKENo
aWxkUHJvY2VzcyogcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworICAgIG1f
cHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDcmVkZW50aWFsTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbE1hbmFn
ZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhTZXNzaW9uSUQgc2Vzc2lvbklEKQorewor
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50aWFscy9D
cmVkZW50aWFsTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENoaWxkUHJvY2VzczsKKworY2xhc3Mg
Q3JlZGVudGlhbE1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3JlZGVudGlhbE1hbmFnZXIpOworcHVibGljOgorICAg
IENyZWRlbnRpYWxNYW5hZ2VyKENoaWxkUHJvY2VzcyopOworCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKKworICAgIENoaWxkUHJvY2VzcyogbV9wcm9j
ZXNzOworICAgIAorcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL0NyZWRlbnRpYWxzL0NyZWRlbnRpYWxNYW5hZ2VyLm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFu
YWdlci5tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q3JlZGVudGlhbHMvQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisgbWVzc2FnZXMgLT4gQ3JlZGVudGlhbE1h
bmFnZXIgeworICAgIHZvaWQgUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tDcmVkZW50aWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAkocmV2aXNpb24gMjE2MjQ1KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDQgKzUyLDMgQEAgV0tTdHJpbmdSZWYgV0tDcmVkZW50aWFsQ29weVVzZXIoV0tDcmVkZQog
ewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY3JlZGVudGlhbFJlZiktPmNyZWRlbnRp
YWwoKS51c2VyKCkpOwogfQotCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjE2MjQ1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDMgKzYwLDggQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVSZW1vdmVBbGxJbmRleGVkRAogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKICAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ6Om1pbigpLCBbXSB7IH0pOwogfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFscyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
KQoreworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHJl
dmlzaW9uIDIxNjI0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBXS19FWFBP
UlQgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0CiBXS19FWFBPUlQgYm9vbCBXS1dlYnNp
dGVEYXRhU3RvcmVHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZik7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjE2
MjQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2luY2x1ZGUg
IkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
UmVjb3JkLmgiCisjaW5jbHVkZSAiQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0xMDU5LDYgKzEwNTksMTQgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhRm9yVG9wUAogICAgIH0pOwogfQogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7CisgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIHByb2Nlc3NQb29sLT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OkNyZWRlbnRpYWxNYW5hZ2VyOjpSZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMobV9zZXNzaW9uSUQpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNl
bmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpDcmVkZW50aWFsTWFuYWdlcjo6UmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKG1fc2Vzc2lvbklEKSk7CisgICAgfQorfQorCiAjaWYgSEFW
RShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZp
c2lvbiAyMTYyNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
RmV0Y2hPcHRpb24+LCBWZWN0b3I8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoVmVjdG9yPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxl
cik7CiAKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworICAgIAogI2lm
IEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIHZvaWQgc2hvdWxkUGFy
dGl0aW9uQ29va2llc0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
LCBib29sIGNsZWFyRmlyc3QpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTYyNDUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NDgsNiArMTg0OCwxMCBAQAogCQlDMEUzQUE3QTEyMDlFODMwMDBBNDlEMDEg
LyogTW9kdWxlQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBFM0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCAqLzsgfTsKIAkJ
QzBFM0FBN0IxMjA5RTgzNTAwQTQ5RDAxIC8qIE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0NTEyMDlFMkJBMDBBNDlEMDEgLyog
TW9kdWxlLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDQx
MjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovOyB9OworCQlDMTY4QkY0NjFFQkI0NTAyMDBG
QkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjhCRjQ0MUVCQjQ0OTMwMEZCQTJFOSAvKiBDcmVkZW50aWFs
TWFuYWdlci5oICovOyB9OworCQlDMTY4QkY0NzFFQkI0NTBEMDBGQkEyRTkgLyogQ3JlZGVudGlh
bE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzE2OEJGNDMxRUJCNDQ5MzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLmNwcCAqLzsg
fTsKKwkJQzE2OEJGNEIxRUJCNEMyMzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjhC
RjRBMUVCQjRDMUEwMEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlck1lc3NhZ2VzLmggKi87IH07
CisJCUMxNjhCRjRDMUVCQjRDMjYwMEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTY4QkY0OTFFQkI0QzFBMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRy
b2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICov
OyB9OwogCQlDNTIzN0Y2MDEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUyMzdGNUYx
MjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLzsgfTsKIAkJQzU0MjU2
QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICovOyB9OwpAQCAtNDE3Niw2ICs0MTgwLDExIEBACiAJ
CUMwRTNBQTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMw
RTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzBFM0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzE2OEJGNDMxRUJCNDQ5MzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyZWRlbnRpYWxNYW5h
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2OEJGNDQxRUJCNDQ5MzAw
RkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMxNjhCRjQ1MUVCQjQ0OTMwMEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlci5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDcmVkZW50aWFsTWFuYWdlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2OEJGNDkxRUJCNEMxQTAwRkJBMkU5IC8q
IENyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2OEJGNEExRUJCNEMxQTAwRkJBMkU5IC8q
IENyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcy
IC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1JbnB1dENvbnRyb2wuaDsgcGF0
aCA9IGlvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ4NjksNiArNDg3OCw3IEBACiAJCTFBQURERjRCMTBEODJBRjAwMEQzRDYzRCAv
KiBTaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUMxNjhCRjQyMUVCQjQ0NDUwMEZCQTJFOSAvKiBDcmVkZW50aWFscyAqLywKIAkJCQlCQ0REQjMx
NDEyNEVCQ0VGMDA0OEQxM0MgLyogQVBJICovLAogCQkJCTUxOEU4RUYxMTZCMjA4RjAwMEU5MTQy
OSAvKiBBdXRoZW50aWNhdGlvbiAqLywKIAkJCQkxQUFGMEM0NzEyQjE2MzI4MDA4RTQ5RTIgLyog
Y2YgKi8sCkBAIC03NzIyLDYgKzc3MzIsOCBAQAogCQlDMENFNzI5RDEyNDdFNzFEMDBCQzBFQzQg
LyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlDMTY4QkY0OTFFQkI0QzFBMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUMxNjhCRjRBMUVCQjRDMUEwMEZCQTJFOSAvKiBD
cmVkZW50aWFsTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJNUMwQjE3NzQxRTdDODc5QzAwRTkx
MjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTVD
MEIxNzc1MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCAq
LywKIAkJCQk1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKQEAgLTc5MTAsNiArNzkyMiwxNiBAQAogCQkJdGFiV2lkdGggPSA4
OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMTY4QkY0MjFFQkI0NDQ1MDBGQkEyRTkgLyog
Q3JlZGVudGlhbHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUMxNjhCRjQzMUVCQjQ0OTMwMEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlci5jcHAgKi8s
CisJCQkJQzE2OEJGNDQxRUJCNDQ5MzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLmggKi8s
CisJCQkJQzE2OEJGNDUxRUJCNDQ5MzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLm1lc3Nh
Z2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBDcmVkZW50aWFsczsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC04Mzc3LDYgKzgz
OTksNyBAQAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENv
bmZpZ3VyYXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhB
QzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTY4QkY0NjFFQkI0
NTAyMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJN
YXAuaCBpbiBIZWFkZXJzICovLApAQCAtOTEyMSw2ICs5MTQ0LDcgQEAKIAkJCQkyREM2RDlDMzE4
QzQ0QTYxMDA0M0JBRDQgLyogV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNjZCRjhGMThBMDUyRUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGOUE4M0IxOEEzNDY4MTAwQUVCODhBIC8qIFdL
V2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjhCRjRCMUVCQjRDMjMwMEZC
QTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUQ2MEY1RTE4RTIwRjRDMDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFENjBGNjAxOEUyMEY3NDAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3QzBERjcxQjdEMUYxMDAwQTlCODQ4IC8qIFdL
V2luZG93RmVhdHVyZXNSZWYuaCBpbiBIZWFkZXJzICovLApAQCAtOTkxNiw2ICs5OTQwLDcgQEAK
IAkJCQkyRDEwODc2MDFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQxMDg3NjMxRDJDNjQxQjAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJz
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTFEOEJBMTE3MzFBMzYzMDAxNDFEQTQgLyog
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzE2OEJGNEMxRUJC
NEMyNjAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBOEM3MjhDMTczODQ3N0MwMDBBNjU1NCAvKiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyMEM4MzExRTU0RURERTAw
MjVCMjUwIC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcklPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxQTdGMkY1MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTAzMjAsNiArMTAzNDUsNyBAQAogCQkJCTFBQjFGNzk4MUQxQjM2MTMwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTNFNzM2MjExQ0MyNjU5MDA3QkQ1MzkgLyogV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwMzM3REREMTI3QTUyMUMwMDhGRjRGNCAv
KiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzE2OEJGNDcx
RUJCNDUwRDAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEQTk0NEEyMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMUExQ0JEQkY0MTAwOTAxQ0NGIC8qIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEyODFDQkVC
NjdBMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMjE2MjQ1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkFQSVBhZ2VIYW5kbGUuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNp
bmNsdWRlICJDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWxNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNo
ZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgpAQCAtMTgxLDYgKzE4Miw3IEBAIFdl
YlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyPigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKKyAgICBhZGRTdXBwbGVtZW50
PENyZWRlbnRpYWxNYW5hZ2VyPigpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBhZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI+KCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTYzMDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0wNS0wNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRp
Y2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2ViS2l0IEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTctMDUt
MDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFQSSB0ZXN0
IFdlYktpdDIuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzIGlzIGZhaWxpbmcgb24gaW9zLXNp
bXVsYXRvci4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CShyZXZpc2lvbiAyMTYyNDUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIwLDYgKzgyMCwxMSBAQCBXS1JldGFpblB0cjxX
S1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIikpIHsKKyAgICAgICAgV0tXZWJzaXRlRGF0YVN0
b3JlUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3Rv
cmUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSkpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25uZWN0TW9ja0dhbWVwYWQiKSkg
ewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLVUludDY0R2V0
VHlwZUlEKCkpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMTYyNDUpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdDJfQy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNTgyLDQgKzE1ODMsMTIgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbAogICAgIFdLQnVuZGxlUGFn
ZVBvc3RNZXNzYWdlKHBhZ2UsIG1lc3NhZ2VOYW1lLmdldCgpLCBmaWxlVVJMcy5nZXQoKSk7CiB9
CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVh
bkNyZWF0ZSh0cnVlKSk7CisgICAgCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAkocmV2aXNpb24gMjE2MjQ1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2ICszNzEsOCBA
QCBwdWJsaWM6CiAgICAgLy8gT3BlbiBwYW5lbAogICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZXMo
SlNWYWx1ZVJlZik7CiAKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwor
ICAgIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAogcHJpdmF0ZToKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMjE2MjQ1KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3Myw4IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhvYmplY3QgZmls
ZXNBcnJheSk7CiAKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworCiAg
ICAgdm9pZCBzZXRXZWJSVENMZWdhY3lBUElFbmFibGVkKGJvb2xlYW4gdmFsdWUpOwogCiAgICAg
dm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MjQ1
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTctMDUtMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNhdGlvbiBkYXRhIHRocm91Z2ggdGhl
IFdlYktpdCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzEyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWNyZWRlbnRpYWxzLXJlbW92ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1yZW1vdmUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTA1LTA1
ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjE1OTUxKTogTGF5b3V0VGVzdCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvcGxhY2Fy
ZC1zdXBwb3J0L3BsYWNhcmQtc3VwcG9ydC1waXAuaHRtbCBpcyBhIGZsYWt5IGNyYXNoCkluZGV4
OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIxNjI0NSkKKysrIExheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgaHR0cC90ZXN0cy9x
dWlja2xvb2sgWyBTa2lwIF0KICMgVGhlc2UgdGVzdHMgYXJlIFdlYktpdDItb25seQogaHR0cC90
ZXN0cy9hcHBjYWNoZS9kZWNpZGUtbmF2aWdhdGlvbi1wb2xpY3ktYWZ0ZXItZGVsYXkuaHRtbCBb
IFNraXAgXQogaHR0cC90ZXN0cy9taXNjL3dpbGwtc2VuZC1yZXF1ZXN0LXdpdGgtY2xpZW50LXBy
b3ZpZGVkLWh0dHAtYm9keS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMt
Y3JlZGVudGlhbHMtcmVtb3ZlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLyBbIFNraXAgXQogCiAjIE9ubHkgTWFjIGFuZCBpT1MgaGF2ZSBh
biBpbXBsZW1lbnRhdGlvbiBvZiBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKCkuCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtcmVt
b3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
YWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtcmVtb3ZlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtcmVt
b3ZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACittYWluIGZy
YW1lIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZENv
bW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZQorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggZmlyc3Q6Zmlyc3QtcHcKK2ZyYW1l
ICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9yRnJh
bWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+
LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQor
ZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRG
b3JGcmFtZQorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgLSBSZXNwb25kaW5nIHdpdGggc2Vjb25kOnNlY29uZC1wdworZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVu
dHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQor
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGNyZWRlbnRpYWxz
LCBieSBjaGVja2luZyB0aGF0IHdlIGdldCBhbiBhdXRoZW50aWNhdG9uLgorY2hhbGxlbmdlIGZv
ciBhIHBhdGggd2Ugbm9ybWFsbHkgd291bGQgbm90IGdldCBhIGNoYWxsZW5nZSBmb3IsIGFmdGVy
IGhhdmluZyByZW1vdmVkIGFsbCBjcmVkZW50aWFscy4KK1RoZSBmaXJzdCBmcmFtZSdzIHBhdGgg
aXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91
bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZp
cnN0L2ZpcnN0LXB3LgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGggaXMgaWRlbnRpY2FsIHRvIHRo
ZSBmaXJzdCBmcmFtZSwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LCBiZWNh
dXNlIGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBkZWxldGVkLgorSXQgd2lsbCBiZSBhdXRob3JpemVk
IHdpdGggc2Vjb25kL3NlY29uZC1wdy4KKyAgCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0ZWQgYXMgdXNl
cjogZmlyc3QgcGFzc3dvcmQ6IGZpcnN0LXB3CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0ZWQgYXMgdXNl
cjogc2Vjb25kIHBhc3N3b3JkOiBzZWNvbmQtcHcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtcmVtb3ZlLmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2lj
LWNyZWRlbnRpYWxzLXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZXModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJmaXJz
dCIpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgiZmlyc3QtcHci
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gZmlyc3RG
cmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgic2Vjb25kIik7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgic2Vjb25kLXB3Iik7CisgICAgICAg
IHRlc3RSdW5uZXIucmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisgICAgfQorICAgIHZh
ciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNl
dEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJvbmxv
YWQiLCAic2Vjb25kRnJhbWVMb2FkZWQoKSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBzZWNvbmRGcmFtZUxvYWRlZCgpCit7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
KworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdl
IGFyZSBhYmxlIHRvIHJlbW92ZSBjcmVkZW50aWFscywgYnkgY2hlY2tpbmcgdGhhdCB3ZSBnZXQg
YW4gYXV0aGVudGljYXRvbi48YnI+CitjaGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3
b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNy
ZWRlbnRpYWxzLjxicj4KK1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3Vy
Y2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdl
IGZvciBpdC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy48
YnI+CitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IGZy
YW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVu
dGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGgg
c2Vjb25kL3NlY29uZC1wdy48YnI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Byb3RlY3RlZC1y
ZXNvdXJjZS5waHAiIG9ubG9hZD0iZmlyc3RGcmFtZUxvYWRlZCgpOyI+PC9pZnJhbWU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMTYyNDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAg
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdgogCiBbIFNpZXJyYSsgXSBo
dHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBQYXNzIF0KIAoraHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWNyZWRlbnRpYWxzLXJlbW92ZS5odG1sIFsgUGFzcyBdCisKIGZhc3QvdmlzdWFsLXZpZXdw
b3J0L3J1YmJlcmJhbmRpbmctdmlld3BvcnQtcmVjdHMuaHRtbCBbIFBhc3MgXQogZmFzdC92aXN1
YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9ydC1yZWN0cy1oZWFkZXItZm9vdGVyLmh0
bWwgIFsgUGFzcyBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310654</attachid>
            <date>2017-05-19 07:17:53 -0700</date>
            <delta_ts>2017-06-04 23:52:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170519071820.patch</filename>
            <type>text/plain</type>
            <size>34046</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzEyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA1LTE5ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJLaXQgQVBJLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTUyMjU3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBmdW5jdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMgdG8gdGhlIFdlYnNpdGUgRGF0YSBTdG9yZSBDIEFQSSwKKyAg
ICAgICAgd2hpY2ggd2lsbCByZW1vdmUgYWxsIGNyZWRlbnRpYWxzIGluIHRoZSBXZWJzaXRlIERh
dGEgU3RvcmUgc2Vzc2lvbi4gVGhlIG5ldyBDcmVkZW50aWFsTWFuYWdlcgorICAgICAgICBjbGFz
cyBpcyByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgdGhlIGNyZWRlbnRpYWxzLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ3JlZGVudGlhbHM6IEFkZGVkLgorICAgICAg
ICAqIFNoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpDcmVkZW50aWFsTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpDcmVkZW50aWFsTWFuYWdlcjo6Q3JlZGVudGlhbE1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpDcmVkZW50aWFsTWFuYWdlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KToKKyAgICAgICAgKiBTaGFyZWQvQ3JlZGVudGlhbHMvQ3JlZGVudGlhbE1hbmFnZXIuaDogQWRk
ZWQuCisgICAgICAgICogU2hhcmVkL0NyZWRlbnRpYWxzL0NyZWRlbnRpYWxNYW5hZ2VyLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNw
cDoKKyAgICAgICAgKFdLQ3JlZGVudGlhbENvcHlVc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NyZWRlbnRpYWxzOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisKIDIwMTctMDUtMTkgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtUaHJlYWRl
ZCBDb21wb3NpdG9yXSBSZW1vdmUgcGxhdGZvcm0gaWZkZWZzIGZyb20gdGhyZWFkZWQgY29tcG9z
aXRvciBpbXBsZW1lbnRhdGlvbgpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIx
NzEyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xOSw2ICsxOSw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL0FQSS9jIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQXV0
aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db3JlSVBDU3VwcG9ydCIK
KyAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0NyZWRlbnRpYWxzIgogICAgICIke1dFQktJVDJf
RElSfS9TaGFyZWQvRGF0YWJhc2VzIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvRGF0YWJh
c2VzL0luZGV4ZWREQiIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0ZpbGVBUEkiCkBAIC0x
NjUsNiArMTY2LDkgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9DYWNoZU1vZGVs
LmNwcAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCiAgICAgU2hhcmVkL0NvbnRleHRNZW51
Q29udGV4dERhdGEuY3BwCisKKyAgICBTaGFyZWQvQ3JlZGVudGlhbHMvQ3JlZGVudGlhbE1hbmFn
ZXIuY3BwCisKICAgICBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwCiAgICAgU2hhcmVkL0ZvbnRJbmZv
LmNwcAogICAgIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcApAQCAtNjExLDYgKzYxNSw4IEBAIHNl
dChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBTaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAKKyAgICBTaGFyZWQvQ3JlZGVudGlh
bHMvQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW4KKwogICAgIFNoYXJlZC9QbHVnaW5zL05Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAKICAgICBVSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eS5tZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAyMTcxMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0
MikvU2hhcmVkIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9BUEkvQ29jb2EgXAogICAgICQoV2Vi
S2l0MikvU2hhcmVkL0F1dGhlbnRpY2F0aW9uIFwKKyAgICAkKFdlYktpdDIpL1NoYXJlZC9DcmVk
ZW50aWFscyBcCiAgICAgJChXZWJLaXQyKS9TaGFyZWQvbWFjIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvQXBwbGVQYXkgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BcHBsaWNhdGlv
bkNhY2hlIFwKQEAgLTkwLDYgKzkxLDcgQEAgZW5kaWYKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
ICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlciBcCiAgICAgQ2hpbGRQcm9jZXNzIFwKKyAgICBDcmVk
ZW50aWFsTWFuYWdlciBcCiAgICAgRGF0YWJhc2VQcm9jZXNzIFwKICAgICBEYXRhYmFzZVByb2Nl
c3NQcm94eSBcCiAgICAgRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uIFwKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDIxNzEyMykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWxNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgpAQCAtMTEx
LDYgKzExMiw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcygpCiAKICAgICBhZGRT
dXBwbGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdl
YkNvb2tpZU1hbmFnZXI+KCk7CisgICAgYWRkU3VwcGxlbWVudDxDcmVkZW50aWFsTWFuYWdlcj4o
KTsKICAgICBhZGRTdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoc3VwcGxlbWVudDxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oCShyZXZpc2lvbiAyMTcxMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAgcHVibGlj
OgogICAgICAgICBDb250ZW50UnVsZUxpc3RTdG9yZSwKICAgICAgICAgQ29udGV4dE1lbnVMaXN0
ZW5lciwKICAgICAgICAgQ29va2llTWFuYWdlciwKKyAgICAgICAgQ3JlZGVudGlhbE1hbmFnZXIs
CiAgICAgICAgIERvd25sb2FkLAogICAgICAgICBFeHBlcmltZW50YWxGZWF0dXJlLAogICAgICAg
ICBGb3JtU3VibWlzc2lvbkxpc3RlbmVyLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Ny
ZWRlbnRpYWxzL0NyZWRlbnRpYWxNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ3JlZGVudGlhbHMvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcmVkZW50aWFsTWFuYWdlci5oIgorCisjaW5jbHVk
ZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgY2hhciogQ3JlZGVudGlhbE1hbmFnZXI6OnN1cHBs
ZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIkNyZWRlbnRpYWxNYW5hZ2VyIjsKK30KKworQ3Jl
ZGVudGlhbE1hbmFnZXI6OkNyZWRlbnRpYWxNYW5hZ2VyKENoaWxkUHJvY2VzcyogcHJvY2VzcykK
KyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpDcmVkZW50aWFsTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbE1hbmFnZXI6OnJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFscyhTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVk
ZW50aWFscygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50
aWFsTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVt
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIENoaWxkUHJvY2VzczsKKworY2xhc3MgQ3JlZGVudGlhbE1hbmFnZXIgOiBw
dWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ3JlZGVudGlhbE1hbmFnZXIpOworcHVibGljOgorICAgIENyZWRlbnRpYWxNYW5hZ2VyKENo
aWxkUHJvY2VzcyopOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7
CisgICAgCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoV2ViQ29yZTo6U2Vz
c2lvbklEKTsKKworICAgIENoaWxkUHJvY2VzcyogbV9wcm9jZXNzOworICAgIAorcHJpdmF0ZToK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NyZWRlbnRpYWxz
L0NyZWRlbnRpYWxNYW5hZ2VyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DcmVkZW50aWFscy9DcmVkZW50aWFsTWFuYWdlci5tZXNzYWdlcy5pbgkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ3JlZGVudGlhbHMvQ3JlZGVudGlh
bE1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisgCisgbWVzc2FnZXMgLT4gQ3JlZGVudGlhbE1hbmFnZXIgeworICAgIHZvaWQgUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFs
LmNwcAkocmV2aXNpb24gMjE3MTIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDQgKzUyLDMgQEAgV0tTdHJp
bmdSZWYgV0tDcmVkZW50aWFsQ29weVVzZXIoV0tDcmVkZQogewogICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwoY3JlZGVudGlhbFJlZiktPmNyZWRlbnRpYWwoKS51c2VyKCkpOwogfQotCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjE3MTIzKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDMgKzYwLDggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVk
RAogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlczsKICAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlw
ZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpLCBbXSB7IH0p
OwogfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
cyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQoreworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgJKHJldmlzaW9uIDIxNzEyMykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBXS19FWFBPUlQgV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIFdLV2Vic2l0CiBXS19FWFBPUlQgYm9vbCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5h
YmxlKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWRE
YXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CitXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjE3MTIzKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAi
Q3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgi
CkBAIC0xMDczLDYgKzEwNzMsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
Rm9yVG9wUAogICAgIH0pOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpCit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CisgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OkNyZWRlbnRpYWxNYW5hZ2VyOjpSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMobV9z
ZXNzaW9uSUQpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
KE1lc3NhZ2VzOjpDcmVkZW50aWFsTWFuYWdlcjo6UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KG1fc2Vzc2lvbklEKSk7CisgICAgfQorfQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVh
ckZpcnN0KQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMTcxMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYnNpdGVEYXRhUmVj
b3JkPiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZv
aWQgcmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFZlY3Rv
cjxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMsIHN0ZDo6ZnVuY3Rpb248
dm9pZChWZWN0b3I8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyKTsKIAorICAgIHZvaWQgcmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisgICAgCiAjaWYgSEFWRShDRk5FVFdPUktfU1RP
UkFHRV9QQVJUSVRJT05JTkcpCiAgICAgdm9pZCBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9w
UHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1v
dmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNzEyMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg1MSw2ICsx
ODUxLDEwIEBACiAJCUMwRTNBQTdBMTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0ODEyMDlF
NDUwMDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwICovOyB9OwogCQlDMEUzQUE3QjEyMDlFODM1MDBB
NDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMwRTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICovOyB9Owog
CQlDMEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0NDEyMDlFMkJBMDBBNDlEMDEgLyog
TW9kdWxlLmggKi87IH07CisJCUMxNjhCRjQ2MUVCQjQ1MDIwMEZCQTJFOSAvKiBDcmVkZW50aWFs
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzE2OEJGNDQxRUJCNDQ5MzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLmggKi87IH07CisJ
CUMxNjhCRjQ3MUVCQjQ1MEQwMEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY4QkY0MzFFQkI0NDkz
MDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXIuY3BwICovOyB9OworCQlDMTY4QkY0QjFFQkI0
QzIzMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OEJGNEExRUJCNEMxQTAwRkJBMkU5
IC8qIENyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJQzE2OEJGNEMxRUJCNEMy
NjAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjhCRjQ5MUVCQjRDMUEw
MEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0
RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi87IH07CiAJCUM1MjM3RjYwMTI0
NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTIzN0Y1RjEyNDQxQ0EzMDA3ODA0NzIgLyog
V2ViRWRpdG9yQ2xpZW50TWFjLm1tICovOyB9OwogCQlDNTQyNTZCNTE4QkVDMThDMDBERTQxNzkg
LyogV0tGb3JtSW5wdXRDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250
cm9sLmggKi87IH07CkBAIC00MTgzLDYgKzQxODcsMTEgQEAKIAkJQzBFM0FBNDQxMjA5RTJCQTAw
QTQ5RDAxIC8qIE1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFM0FBNDUxMjA5RTJCQTAwQTQ5
RDAxIC8qIE1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEUzQUE0ODEyMDlFNDUw
MDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9kdWxlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTY4QkY0
MzFFQkI0NDkzMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlhbE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMTY4QkY0NDFFQkI0NDkzMDBGQkEyRTkgLyogQ3JlZGVudGlh
bE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbE1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE2OEJGNDUxRUJCNDQ5MzAw
RkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IENyZWRlbnRpYWxNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMTY4QkY0OTFFQkI0QzFBMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3JlZGVudGlhbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMTY4QkY0QTFFQkI0QzFBMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsTWFu
YWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MTczODgwMTJE
RjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEcmFnQ29udHJvbGxlckFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTIzN0Y1RjEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRWRpdG9y
Q2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQyNTZBRjE4QkVD
MThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLRm9ybUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9y
bUlucHV0Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDg3Niw2ICs0
ODg1LDcgQEAKIAkJMUFBRERGNEIxMEQ4MkFGMDAwRDNENjNEIC8qIFNoYXJlZCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzE2OEJGNDIxRUJCNDQ0NTAw
RkJBMkU5IC8qIENyZWRlbnRpYWxzICovLAogCQkJCUJDRERCMzE0MTI0RUJDRUYwMDQ4RDEzQyAv
KiBBUEkgKi8sCiAJCQkJNTE4RThFRjExNkIyMDhGMDAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9u
ICovLAogCQkJCTFBQUYwQzQ3MTJCMTYzMjgwMDhFNDlFMiAvKiBjZiAqLywKQEAgLTc3MzIsNiAr
Nzc0Miw4IEBACiAJCUMwQ0U3MjlEMTI0N0U3MUQwMEJDMEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMxNjhCRjQ5
MUVCQjRDMUEwMEZCQTJFOSAvKiBDcmVkZW50aWFsTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCisJCQkJQzE2OEJGNEExRUJCNEMxQTAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyTWVz
c2FnZXMuaCAqLywKIAkJCQk1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tl
dFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUMwQjE3NzUxRTdDODc5QzAwRTkx
MjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oICovLAogCQkJCTVDMEIxNzc2MUU3
Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtNzkyMCw2ICs3OTMyLDE2IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7
CiAJCX07CisJCUMxNjhCRjQyMUVCQjQ0NDUwMEZCQTJFOSAvKiBDcmVkZW50aWFscyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzE2OEJGNDMxRUJCNDQ5
MzAwRkJBMkU5IC8qIENyZWRlbnRpYWxNYW5hZ2VyLmNwcCAqLywKKwkJCQlDMTY4QkY0NDFFQkI0
NDkzMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXIuaCAqLywKKwkJCQlDMTY4QkY0NTFFQkI0
NDkzMDBGQkEyRTkgLyogQ3JlZGVudGlhbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IENyZWRlbnRpYWxzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IAkJQzU0MjU2QUUxOEJFQzE2MTAwREU0MTc5IC8qIGZvcm1zICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgzODgsNiArODQxMCw3IEBACiAJCQkJMUEyNEI1
RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMxNjhCRjQ2MUVCQjQ1MDIwMEZCQTJFOSAvKiBDcmVk
ZW50aWFsTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlE
Q0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNE
NjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVE
MEYxNjFBNTM1NDAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MTMzLDYgKzkxNTYsNyBAQAogCQkJCTJEQzZEOUMzMThDNDRBNjEwMDQzQkFENCAvKiBX
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2
NkJGOEYxOEEwNTJFRDAwMjA3MUI0IC8qIFdLV2ViVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNkY5QTgzQjE4QTM0NjgxMDBBRUI4OEEgLyogV0tXZWJWaWV3UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzE2OEJGNEIxRUJCNEMyMzAwRkJBMkU5IC8qIENyZWRlbnRpYWxN
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDYwRjVFMThFMjBGNEMwMDIw
QzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ2MEY2MDE4
RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTdDMERGNzFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5o
IGluIEhlYWRlcnMgKi8sCkBAIC05OTI3LDYgKzk5NTEsNyBAQAogCQkJCTJEMTA4NzYwMUQyQzU3
M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDEw
ODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMUQ4QkExMTczMUEzNjMwMDE0MURBNCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTY4QkY0QzFFQkI0QzI2MDBGQkEyRTkgLyogQ3Jl
ZGVudGlhbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4
QzcyOEMxNzM4NDc3QzAwMEE2NTU0IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTIwQzgzMTFFNTRFRERFMDAyNUIyNTAgLyogTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBN0YyRjUxMjVC
RjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDMzMiw2ICsx
MDM1Nyw3IEBACiAJCQkJMUFCMUY3OTgxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0U3
MzYyMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzAzMzdEREQxMjdBNTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMTY4QkY0NzFFQkI0NTBEMDBGQkEyRTkgLyog
Q3JlZGVudGlhbE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QTIxODg0RTRG
MDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREEyOUExQTFDQkRCRjQxMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAy
MTcxMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQVBJUGFnZUhhbmRsZS5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vz
c01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiQ3JlZGVudGlhbE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
cmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlLmgiCkBAIC0xODIsNiArMTgzLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vz
cygpCiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCk7CiAgICAgYWRk
U3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpOwogICAgIGFkZFN1cHBsZW1lbnQ8QXV0aGVu
dGljYXRpb25NYW5hZ2VyPigpOworICAgIGFkZFN1cHBsZW1lbnQ8Q3JlZGVudGlhbE1hbmFnZXI+
KCk7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBhZGRTdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI+KCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTcxMjMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0wNS0xOSAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1
dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2ViS2l0IEFQSS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIw
MTctMDUtMTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dLMV0gTWluaUJyb3dzZXIgc2hvdWxkIG5hdmlnYXRlIHdoZW4gaGFuZGxpbmcgYSBkcm9w
cGVkIFVSTApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJ
KHJldmlzaW9uIDIxNzEyMykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsNiArODIwLDExIEBAIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMiKSkgeworICAgICAgICBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9y
ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNvbm5lY3RNb2NrR2FtZXBhZCIpKSB7
CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tVSW50NjRHZXRU
eXBlSUQoKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIxNzEyMykKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Ml9DLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTE2MzYsNCArMTYzNywxMiBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKEpTVmFsCiAgICAgV0tCdW5kbGVQYWdl
UG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGZpbGVVUkxzLmdldCgpKTsKIH0K
IAordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIikpOworICAg
IFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKHRydWUpKTsKKyAgICAKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCShyZXZpc2lvbiAyMTcxMjMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDYgKzM3Niw4IEBA
IHB1YmxpYzoKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhK
U1ZhbHVlUmVmKTsKIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7Cisg
ICAgCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCiBwcml2YXRlOgpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyMTcxMjMpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewog
ICAgIC8vIE9wZW4gcGFuZWwKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKG9iamVjdCBmaWxl
c0FycmF5KTsKIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisKICAg
ICB2b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAKICAgICB2
b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTcxMjMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxNy0wNS0xOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUg
V2ViS2l0IEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFz
aWMtY3JlZGVudGlhbHMtcmVtb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXJlbW92ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDUtMTkg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgR1RLKyBnYXJkZW5pbmcuIEFkZGluZyBvciB1cGRhdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyBm
b3IKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjE3MTIzKQorKysgTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBodHRw
L3Rlc3RzL3F1aWNrbG9vayBbIFNraXAgXQogIyBUaGVzZSB0ZXN0cyBhcmUgV2ViS2l0Mi1vbmx5
CiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlY2lkZS1uYXZpZ2F0aW9uLXBvbGljeS1hZnRlci1kZWxh
eS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL21pc2Mvd2lsbC1zZW5kLXJlcXVlc3Qtd2l0aC1j
bGllbnQtcHJvdmlkZWQtaHR0cC1ib2R5Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvbG9hZGlu
Zy9iYXNpYy1jcmVkZW50aWFscy1yZW1vdmUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9sb2Fk
aW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvIFsgU2tpcCBdCiAKICMgT25seSBNYWMgYW5kIGlP
UyBoYXZlIGFuIGltcGxlbWVudGF0aW9uIG9mIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rh
c2soKS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50
aWFscy1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1yZW1vdmUtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50
aWFscy1yZW1vdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAK
K21haW4gZnJhbWUgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1l
IC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAt
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJzdC1w
dworZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExv
YWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmlu
aXNoTG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBzZWNvbmQ6c2Vjb25kLXB3CitmcmFtZSAiPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitm
cmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIg
LSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4t
LT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3Jl
ZGVudGlhbHMsIGJ5IGNoZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uCitjaGFs
bGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZv
ciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0IGZyYW1l
J3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5k
IHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LgorSXQgd2lsbCBiZSBhdXRob3JpemVk
IHdpdGggZmlyc3QvZmlyc3QtcHcuCitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGlj
YWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3Ig
aXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxsIGJlIGF1
dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAn
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRl
ZCBhcyB1c2VyOiBmaXJzdCBwYXNzd29yZDogZmlyc3QtcHcKKworLS0tLS0tLS0KK0ZyYW1lOiAn
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRl
ZCBhcyB1c2VyOiBzZWNvbmQgcGFzc3dvcmQ6IHNlY29uZC1wdwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXJlbW92ZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1y
ZW1vdmUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtY3JlZGVudGlhbHMtcmVtb3ZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5h
bWUoImZpcnN0Iik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJm
aXJzdC1wdyIpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biBmaXJzdEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJzZWNvbmQiKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJzZWNvbmQtcHciKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICB9
CisgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAg
ZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1
dGUoIm9ubG9hZCIsICJzZWNvbmRGcmFtZUxvYWRlZCgpIik7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChmcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEZyYW1lTG9hZGVkKCkKK3sK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGNyZWRlbnRpYWxzLCBieSBjaGVja2luZyB0aGF0
IHdlIGdldCBhbiBhdXRoZW50aWNhdG9uLjxicj4KK2NoYWxsZW5nZSBmb3IgYSBwYXRoIHdlIG5v
cm1hbGx5IHdvdWxkIG5vdCBnZXQgYSBjaGFsbGVuZ2UgZm9yLCBhZnRlciBoYXZpbmcgcmVtb3Zl
ZCBhbGwgY3JlZGVudGlhbHMuPGJyPgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGlu
Zy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBj
aGFsbGVuZ2UgZm9yIGl0Ljxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZpcnN0L2Zp
cnN0LXB3Ljxicj4KK1RoZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlzIGlkZW50aWNhbCB0byB0aGUg
Zmlyc3QgZnJhbWUsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVz
ZSBjcmVkZW50aWFscyBoYXZlIGJlZW4gZGVsZXRlZC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6
ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3Ljxicj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvcHJv
dGVjdGVkLXJlc291cmNlLnBocCIgb25sb2FkPSJmaXJzdEZyYW1lTG9hZGVkKCk7Ij48L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIxNzEyMykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsOCBAQCBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2CiBbIFNpZXJy
YSsgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3NsL2Fw
cGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFNraXAgXQogCitodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtY3JlZGVudGlhbHMtcmVtb3ZlLmh0bWwgWyBQYXNzIF0KKwogZmFzdC92aXN1YWwtdmll
d3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9ydC1yZWN0cy5odG1sIFsgUGFzcyBdCiBmYXN0L3Zp
c3VhbC12aWV3cG9ydC9ydWJiZXJiYW5kaW5nLXZpZXdwb3J0LXJlY3RzLWhlYWRlci1mb290ZXIu
aHRtbCAgWyBQYXNzIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311987</attachid>
            <date>2017-06-04 23:52:36 -0700</date>
            <delta_ts>2017-06-05 00:19:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170605085234.patch</filename>
            <type>text/plain</type>
            <size>26050</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA0ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE2LTEyLTA4ICBCYWJhayBT
aGFmaWVpICA8YnNoYWZpZWlAYXBwbGUuY29tPgogCiAgICAgICAgIE1lcmdlIHIyMDk0MTUuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
U3RvcmFnZS5oCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IENyZWRlbnRpYWwm
LCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8g
YSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVk
LgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFVSTCYpOwogCisgICAg
SGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7IH0KKwogcHJpdmF0ZToKICAgICBIYXNoTWFwPFByb3Rl
Y3Rpb25TcGFjZSwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA2LTA0ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVu
dGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8g
cmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRh
IHN0b3JlIEFQSS4KKyAgICAgICAgQ3JlZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5kIGZldGNo
ZWQgZnJvbSBib3RoIHRoZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgorICAgICAg
ICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBub3QgYmUg
Y2xlYXJlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0YVR5cGVz
VG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIwMTYtMTIt
MTIgIE1hdHRoZXcgSGFuc29uICA8bWF0dGhld19oYW5zb25AYXBwbGUuY29tPgogCiAgICAgICAg
IE1lcmdlIHIyMDk0ODUuIHJkYXI6Ly9wcm9ibGVtLzI5NTAyMDU1CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAy
MTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShTZQogICAgICAgICAgICAgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBp
ZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3Jl
ZGVudGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgIH0K
KwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKSkgewogICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoc2Vzc2lvbklELCBmZXRj
aE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRv
cildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CkBAIC0zOTMs
NiArMzk4LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFMKICAg
ICAgICAgICAgIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIG1vZGlmaWVkU2luY2UpOwogICAgIH0KIAorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAgICAgIGlmIChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAg
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNy
ZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIH0KKyAgICAKICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNhbGxiYWNrSURdIHsKICAgICAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwogICAgIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJ
KHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIGVuY29kZXIgPDwgaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7CiAjZW5kaWYK
KyAgICBlbmNvZGVyIDw8IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CiB9CiAKIGJvb2wgV2Vic2l0
ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQp
CkBAIC03NCw3ICs3NSw4IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXIm
IGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0TmFtZXNXaXRoUGx1Z2luRGF0
YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQub3JpZ2luc1dpdGhDcmVkZW50aWFscykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw2ICs1Niw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgSGFzaFNldDxTdHJp
bmc+IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCiAKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKKwogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBXZWJzaXRl
RGF0YSYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNiArNDcsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAgICAgTWVkaWFE
ZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMiwKICNlbmRpZgogICAgIFdlYnNpdGVEYXRhVHlwZVJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSAxIDw8IDEzLAorICAgIENyZWRlbnRpYWxzID0gMSA8PCAx
NCwKIH07CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQuaAkocmV2aXNpb24gMjE1NTU2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29u
c3QgV0tXZWJzaXRlRGF0YQogLyohIEBjb25zdGFudCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcyBJbmRleGVkREIgZGF0YWJhc2VzLiAqLwogV0tfRVhURVJOIE5TU3RyaW5nICog
Y29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSk7CiAKKy8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0
YVR5cGVDcmVkZW50aWFscyBDcmVkZW50aWFscywgc3VjaCBhcyBCYXNpYyBBdXRoZW50aWNhdGlv
bi4gKi8KK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVu
dGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKIC8qISBBIFdLV2Vic2l0ZURhdGFSZWNvcmQgcmVwcmVzZW50cyB3ZWJzaXRlIGRhdGEs
IGdyb3VwZWQgYnkgZG9tYWluIG5hbWUgdXNpbmcgdGhlIHB1YmxpYyBzdWZmaXggbGlzdC4gKi8K
IFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSkKIEBpbnRlcmZhY2Ug
V0tXZWJzaXRlRGF0YVJlY29yZCA6IE5TT2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCShy
ZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgTlNT
dHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsUwogTlNTdHJpbmcgKiBjb25zdCBX
S1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcyA9IEAiV0tXZWJzaXRlRGF0YVR5cGVXZWJT
UUxEYXRhYmFzZXMiOwogTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWRE
QkRhdGFiYXNlcyA9IEAiV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMiOwogCitO
U1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIldLV2Vic2l0
ZURhdGFUeXBlQ3JlZGVudGlhbHMiOworCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRh
VHlwZU1lZGlhS2V5cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIjsKIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlID0gQCJfV0tXZWJzaXRlRGF0YVR5
cGVIU1RTQ2FjaGUiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hG
aWVsZFJlY2VudFNlYXJjaGVzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2Vu
dFNlYXJjaGVzIjsKQEAgLTc5LDYgKzgxLDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhVHlwZXNU
b1N0cmluZyhOU1NldAogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiV2ViIFNRTCJdOwogICAg
IGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERC
RGF0YWJhc2VzXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkluZGV4ZWREQiJdOworICAg
IGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHNdKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQ3JlZGVudGlhbHMiXTsKICAgICBpZiAo
W2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGVdKQog
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiSFNUUyBDYWNoZSJdOwogICAgIGlmIChbZGF0YVR5
cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5c10pCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDggQEAgc3RhdGljIGlubGluZSBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVEYXRhVAogI2VuZGlmCiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNF
cXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQog
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOwotCisgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5n
OldLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFUeXBlOjpDcmVkZW50aWFsczsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC0x
MTgsNiArMTE5LDggQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaQog
I2VuZGlmCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKICAgICAgICAgW3drV2Vi
c2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc107CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpDcmVkZW50aWFscykpCisgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0
OldLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdOwogCiAgICAgcmV0dXJuIHdrV2Vic2l0ZURh
dGFUeXBlczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMTU1NTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRh
VHlwZXMKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBzdGF0aWMg
TlNTZXQgKmFsbFdlYnNpdGVEYXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2Vu
LCBeewotICAgICAgICBhbGxXZWJzaXRlRGF0YVR5cGVzID0gW1tOU1NldCBhbGxvY10gaW5pdFdp
dGhBcnJheTpAWyBXS1dlYnNpdGVEYXRhVHlwZURpc2tDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVN
ZW1vcnlDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwg
V0tXZWJzaXRlRGF0YVR5cGVDb29raWVzLCBXS1dlYnNpdGVEYXRhVHlwZVNlc3Npb25TdG9yYWdl
LCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVk
REJEYXRhYmFzZXMsIFdLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIF1dOworICAgICAg
ICBhbGxXZWJzaXRlRGF0YVR5cGVzID0gW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBX
S1dlYnNpdGVEYXRhVHlwZURpc2tDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVNZW1vcnlDYWNoZSwg
V0tXZWJzaXRlRGF0YVR5cGVPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgV0tXZWJzaXRlRGF0
YVR5cGVDb29raWVzLCBXS1dlYnNpdGVEYXRhVHlwZVNlc3Npb25TdG9yYWdlLCBXS1dlYnNpdGVE
YXRhVHlwZUxvY2FsU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMs
IFdLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzIF1dOwogICAgIH0pOwogCiAgICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNCw0ICsxMDQsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkUGx1
Z2luRGF0YUhvcwogfQogI2VuZGlmCiAKK3ZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZE9yaWdp
bldpdGhDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIHR5cGVzIHw9IFdl
YnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHM7CisgICAgCisgICAgb3JpZ2luc1dpdGhDcmVkZW50
aWFscy5hZGQob3JpZ2luKTsKK30KKyAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCShyZXZp
c2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBzdHJ1Y3Qg
V2Vic2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAg
IHZvaWQgYWRkUGx1Z2luRGF0YUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOwogI2Vu
ZGlmCisgICAgdm9pZCBhZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmKTsKIAog
ICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0
eXBlczsKQEAgLTY4LDYgKzY5LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBIYXNoU2V0PFN0cmluZz4gcGx1Z2luRGF0
YUhvc3ROYW1lczsKICNlbmRpZgorICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zV2l0aENyZWRl
bnRpYWxzOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjE1NTU2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDEyIEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblMKICAgICAgICAgICAgIH0KICNlbmRpZgogCisgICAg
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHdlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtX3dlYnNpdGVEYXRhUmVj
b3Jkcy5hZGQob3JpZ2luLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZWNvcmQuYWRkT3JpZ2luV2l0aENy
ZWRlbnRpYWwob3JpZ2luKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FsbElmTmVl
ZGVkKCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE5LDYgKzEyMTksMTEgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcgogICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hlKHNlc3Np
b25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0
YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2lu
KSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9CisKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkg
eworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQorICAgICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhDcmVkZW50aWFscyA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVu
dGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7CisgICAgfQogfQogCiB2b2lk
IFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKQEAgLTEyMzEsNiArMTIzNiwxMSBA
QCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3NpCiAKICAgICAgICAgQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuZW1wdHkoKTsKICAgICB9
CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFnZSgpLmNs
ZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcykKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA2LTA0
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0
IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEg
c3RvcmUgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50
aWFscyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKToKKwogMjAxNi0xMi0xMiAgTWF0dGhldyBIYW5zb24gIDxtYXR0aGV3X2hh
bnNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2UgcjIwOTQ4NS4gcmRhcjovL3Byb2JsZW0v
Mjk1MDIwNTUKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0U2hvdWxkRG93bmxvYWRVbmRpc3BsYXlhYmxlTUlNRVR5cGVzKGJvb2wgdmFsdWUpIHsgbV9z
aG91bGREb3dubG9hZFVuZGlzcGxheWFibGVNSU1FVHlwZXMgPSB2YWx1ZTsgfQogCisgICAgdm9p
ZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgV0tS
ZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlv
bihXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKCkgY29uc3Q7Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24g
MjE1NTU2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg3NSw2ICs4NzUsMTAgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBU
ZXN0SW52b2NhdGlvbjo6ZAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vz
c2lvbkNyZWRlbnRpYWxzIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjE1NTU2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3Nyw0
ICsxMjc3LDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dhbWVwYWRCdXR0b25WYWwKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsU2Vz
c2lvbkNyZWRlbnRpYWxzKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh0cnVlKSk7CisgICAgCisgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjE1NTU2KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0NCw2ICszNDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrR2FtZXBh
ZEF4aXNWYWx1ZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgYXhpc0luZGV4LCBkb3VibGUgdmFs
dWUpOwogICAgIHZvaWQgc2V0TW9ja0dhbWVwYWRCdXR0b25WYWx1ZSh1bnNpZ25lZCBpbmRleCwg
dW5zaWduZWQgYnV0dG9uSW5kZXgsIGRvdWJsZSB2YWx1ZSk7CiAKKyAgICB2b2lkIHJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFscygpOworCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyMTU1NTYpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNCArMjQ0LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIg
ewogICAgIHZvaWQgc2V0TW9ja0dhbWVwYWRCdXR0b25WYWx1ZSh1bnNpZ25lZCBsb25nIGluZGV4
LCB1bnNpZ25lZCBsb25nIGJ1dHRvbkluZGV4LCBkb3VibGUgdmFsdWUpOwogICAgIHZvaWQgY29u
bmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHZvaWQgZGlzY29ubmVj
dE1vY2tHYW1lcGFkKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCisgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKTsKIH07CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyMTU1NTYpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw0ICsxNzgsOSBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6
aW1hZ2VDb3VudEluR2VuCiAgICAgcmV0dXJuIGltYWdlc0FycmF5LmNvdW50OwogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFtn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeyB9XTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU1NTYpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNi0w
NCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRh
IHN0b3JlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFz
aWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDE2LTEyLTAxICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W01vZGVybiBNZWRpYSBDb250cm9sc10gRmFkZSBjb250cm9scyBpbiB3aGVuIGVudGVyaW5nIGFu
ZCBleGl0aW5nIGZ1bGxzY3JlZW4KSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjE1
NTU2KQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
NzUsNiArNzUsNyBAQCBmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0CiBm
YXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0ZS1pbi1zdWJmcmFtZXMuaHRt
bCBbIFNraXAgXQogZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLmh0bWwgWyBT
a2lwIF0KIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0ZS5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVu
dGlhbHMuaHRtbCBbIFNraXAgXQogCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgt
cmVtb3ZlLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK21haW4gZnJhbWUgLSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJzdC1wdworZnJhbWUgIjwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJh
bWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0g
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAi
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1l
CisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJl
c3BvbmRpbmcgd2l0aCBzZWNvbmQ6c2Vjb25kLXB3CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTEtLT4tLT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUK
K2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNo
TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3JlZGVudGlhbHMsIGJ5IGNo
ZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uCitjaGFsbGVuZ2UgZm9yIGEgcGF0
aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZvciwgYWZ0ZXIgaGF2aW5n
IHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9h
ZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQg
YSBjaGFsbGVuZ2UgZm9yIGl0LgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmlyc3QvZmly
c3QtcHcuCitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0
IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3Jl
ZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBz
ZWNvbmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBmaXJz
dCBwYXNzd29yZDogZmlyc3QtcHcKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBzZWNv
bmQgcGFzc3dvcmQ6IHNlY29uZC1wdwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxz
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5h
bWUoImZpcnN0Iik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJm
aXJzdC1wdyIpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biBmaXJzdEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJzZWNvbmQiKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJzZWNvbmQtcHciKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICB9
CisgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAg
ZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1
dGUoIm9ubG9hZCIsICJzZWNvbmRGcmFtZUxvYWRlZCgpIik7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChmcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEZyYW1lTG9hZGVkKCkKK3sK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGNyZWRlbnRpYWxzLCBieSBjaGVja2luZyB0aGF0
IHdlIGdldCBhbiBhdXRoZW50aWNhdG9uLjxicj4KK2NoYWxsZW5nZSBmb3IgYSBwYXRoIHdlIG5v
cm1hbGx5IHdvdWxkIG5vdCBnZXQgYSBjaGFsbGVuZ2UgZm9yLCBhZnRlciBoYXZpbmcgcmVtb3Zl
ZCBhbGwgY3JlZGVudGlhbHMuPGJyPgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGlu
Zy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBj
aGFsbGVuZ2UgZm9yIGl0Ljxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZpcnN0L2Zp
cnN0LXB3Ljxicj4KK1RoZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlzIGlkZW50aWNhbCB0byB0aGUg
Zmlyc3QgZnJhbWUsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVz
ZSBjcmVkZW50aWFscyBoYXZlIGJlZW4gZGVsZXRlZC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6
ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3Ljxicj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvcHJv
dGVjdGVkLXJlc291cmNlLnBocCIgb25sb2FkPSJmaXJzdEZyYW1lTG9hZGVkKCk7Ij48L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIxNTU1NikKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTksNiAr
MTksOCBAQCBmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0CiBmYXN0L21l
ZGlhL21xLW1vbm9jaHJvbWUtbGl2ZS11cGRhdGUuaHRtbCBbIFBhc3MgXQogZmFzdC9tZWRpYS9t
cS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwgWyBQYXNzIF0KIAoraHR0
cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBQYXNz
IF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0t
c3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311990</attachid>
            <date>2017-06-05 00:19:04 -0700</date>
            <delta_ts>2017-06-05 00:29:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170605092041.patch</filename>
            <type>text/plain</type>
            <size>26054</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA0LTIwICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZWdpc3RlciBtaXNzaW5n
IEFFU19DVFIsIEVDRFNBIGFuZCBIS0RGIGFsZ29yaXRobXMgaW4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlz
aW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgQ3JlZGVudGlhbCYs
IGNvbnN0IFVSTCYpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBh
IGtub3duIHByb3RlY3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQu
CiAgICAgV0VCQ09SRV9FWFBPUlQgQ3JlZGVudGlhbCBnZXQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VVJMJik7CiAKKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFscygpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luc1dpdGhDcmVkZW50aWFsczsgfQorCiBwcml2YXRlOgogICAg
IEhhc2hNYXA8c3RkOjpwYWlyPFN0cmluZyAvKiBwYXJ0aXRpb25OYW1lICovLCBQcm90ZWN0aW9u
U3BhY2U+LCBDcmVkZW50aWFsPiBtX3Byb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcDsKICAg
ICBIYXNoU2V0PFN0cmluZz4gbV9vcmlnaW5zV2l0aENyZWRlbnRpYWxzOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjE1NTU2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTctMDYtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNh
dGlvbiBkYXRhIHRocm91Z2ggdGhlIFdlYnNpdGUgZGF0YSBzdG9yZSBBUEkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCB0byByZW1v
dmUgYW5kIGZldGNoIGNyZWRlbnRpYWwgZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3Rv
cmUgQVBJLgorICAgICAgICBDcmVkZW50aWFsIGRhdGEgaXMgcmVtb3ZlZCBhbmQgZmV0Y2hlZCBm
cm9tIGJvdGggdGhlIG5ldHdvcmsgcHJvY2VzcyBhbmQgd2ViIHByb2Nlc3MuCisgICAgICAgIEF1
dGhlbnRpY2F0aW9uIGRhdGEgc3RvcmVkIGluIHRoZSBrZXljaGFpbiB3aWxsIG5vdCBiZSBjbGVh
cmVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgICog
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0
cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3Jk
SW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAg
ICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmZldGNoRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKwogMjAxNy0wNC0xOSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBX
ZWJLaXRUZXN0UnVubmVyIGNvZGUgZm9yIGVuYWJsaW5nIGZlYXR1cmVzIHRoYXQgYXJlIGFscmVh
ZHkgZW5hYmxlZCBieSBkZWZhdWx0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4Myw2ICszODMsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0
YShTZQogICAgICAgICAgICAgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoKm5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhD
b29raWVzKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgIH0KKwogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewogICAgICAg
ICBmZXRjaERpc2tDYWNoZUVudHJpZXMoc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildKGF1dG8gZW50cmllcykg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CkBAIC00MDQsNiArNDA5LDExIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFMKICAgICAgICAgICAgIGRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2lu
Y2UpOwogICAgIH0KIAorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAgICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCku
Y2xlYXJDcmVkZW50aWFscygpOworICAgIH0KKyAgICAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIGNhbGxiYWNrSURdIHsKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0
ZURhdGEoY2FsbGJhY2tJRCksIDApOwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHJldmlzaW9uIDIxNTU1NikK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGVuY29k
ZXIgPDwgaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IG9y
aWdpbnNXaXRoQ3JlZGVudGlhbHM7CiB9CiAKIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhJiByZXN1bHQpCkBAIC03NCw3ICs3NSw4IEBA
IGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5ob3N0TmFtZXNXaXRoUGx1Z2luRGF0YSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICNlbmRpZgotCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2lu
c1dpdGhDcmVkZW50aWFscykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBA
IHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhQ
bHVnaW5EYXRhOwogI2VuZGlmCiAKKyAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVk
ZW50aWFsczsKKwogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBXZWJzaXRlRGF0YSYpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFU
eXBlLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBl
bnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAgICAgTWVkaWFEZXZpY2VJZGVudGlmaWVyID0g
MSA8PCAxMiwKICNlbmRpZgogICAgIFdlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSAxIDw8IDEzLAorICAgIENyZWRlbnRpYWxzID0gMSA8PCAxNCwKIH07CiAKIH07CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmQuaAkocmV2aXNpb24gMjE1NTU2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDkgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YQog
LyohIEBjb25zdGFudCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyBJbmRleGVk
REIgZGF0YWJhc2VzLiAqLwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0
YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBp
b3MoOS4wKSk7CiAKKy8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBD
cmVkZW50aWFscywgc3VjaCBhcyBCYXNpYyBBdXRoZW50aWNhdGlvbi4gKi8KK1dLX0VYVEVSTiBO
U1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qISBBIFdLV2Vi
c2l0ZURhdGFSZWNvcmQgcmVwcmVzZW50cyB3ZWJzaXRlIGRhdGEsIGdyb3VwZWQgYnkgZG9tYWlu
IG5hbWUgdXNpbmcgdGhlIHB1YmxpYyBzdWZmaXggbGlzdC4gKi8KIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSkKIEBpbnRlcmZhY2UgV0tXZWJzaXRlRGF0YVJlY29y
ZCA6IE5TT2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCShyZXZpc2lvbiAyMTU1NTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgTlNTdHJpbmcgKiBjb25zdCBXS1dl
YnNpdGVEYXRhVHlwZUxvY2FsUwogTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZVdl
YlNRTERhdGFiYXNlcyA9IEAiV0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMiOwogTlNT
dHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IEAiV0tX
ZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMiOwogCitOU1N0cmluZyAqIGNvbnN0IFdL
V2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIldLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMiOworCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyA9IEAi
X1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlSFNUU0NhY2hlID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUiOwogTlNT
dHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVz
ID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzIjsKQEAgLTc5
LDYgKzgxLDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhVHlwZXNUb1N0cmluZyhOU1NldAogICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiV2ViIFNRTCJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNv
bnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzXSkKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpAIkluZGV4ZWREQiJdOworICAgIGlmIChbZGF0YVR5cGVzIGNv
bnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdKQorICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OkAiQ3JlZGVudGlhbHMiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWlu
c09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGVdKQogICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OkAiSFNUUyBDYWNoZSJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0
Ol9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5c10pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZEludGVybmFsLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDggQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRh
VAogI2VuZGlmCiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dl
YnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICByZXR1cm4gV2Vi
c2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotCisg
ICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOldLV2Vic2l0ZURhdGFUeXBl
Q3JlZGVudGlhbHNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
czsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC0xMTgsNiArMTE5LDggQEAgc3Rh
dGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaQogI2VuZGlmCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRP
YmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc107CisgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykp
CisgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBl
Q3JlZGVudGlhbHNdOwogCiAgICAgcmV0dXJuIHdrV2Vic2l0ZURhdGFUeXBlczsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTAsNyArOTAsNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMKICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBzdGF0aWMgTlNTZXQgKmFsbFdlYnNpdGVE
YXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBhbGxX
ZWJzaXRlRGF0YVR5cGVzID0gW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBXS1dlYnNp
dGVEYXRhVHlwZURpc2tDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVNZW1vcnlDYWNoZSwgV0tXZWJz
aXRlRGF0YVR5cGVPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVD
b29raWVzLCBXS1dlYnNpdGVEYXRhVHlwZVNlc3Npb25TdG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlw
ZUxvY2FsU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIFdLV2Vi
c2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIF1dOworICAgICAgICBhbGxXZWJzaXRlRGF0YVR5
cGVzID0gW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAWyBXS1dlYnNpdGVEYXRhVHlwZURp
c2tDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVNZW1vcnlDYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgV0tXZWJzaXRlRGF0YVR5cGVDb29raWVzLCBXS1dl
YnNpdGVEYXRhVHlwZVNlc3Npb25TdG9yYWdlLCBXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFn
ZSwgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIFdLV2Vic2l0ZURhdGFUeXBl
V2ViU1FMRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIF1dOwogICAgIH0p
OwogCiAgICAgcmV0dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5jcHAJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw0ICsx
MzcsMTEgQEAgYm9vbCBXZWJzaXRlRGF0YVJlY29yZDo6bWF0Y2hlc1RvcFByaXZhdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkT3JpZ2luV2l0aENy
ZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgdHlwZXMgfD0gV2Vic2l0ZURh
dGFUeXBlOjpDcmVkZW50aWFsczsKKyAgICAKKyAgICBvcmlnaW5zV2l0aENyZWRlbnRpYWxzLmFk
ZChvcmlnaW4pOworfQorICAgIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDIx
NTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHN0cnVjdCBXZWJzaXRl
RGF0YVJlY29yZCB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBh
ZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CiAjZW5kaWYKKyAg
ICB2b2lkIGFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3Ry
aW5nIGRpc3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzOwpA
QCAtNjgsNyArNjksOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEhhc2hTZXQ8U3RyaW5nPiBwbHVnaW5EYXRhSG9zdE5h
bWVzOwogI2VuZGlmCi0gICAgCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHM7CisKICAgICBib29sIG1hdGNoZXNUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNp
b24gMjE1NTU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDEyIEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblMKICAgICAgICAgICAgIH0KICNlbmRp
ZgogCisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHdlYnNpdGVEYXRhLm9yaWdpbnNX
aXRoQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtX3dlYnNp
dGVEYXRhUmVjb3Jkcy5hZGQob3JpZ2luLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZWNvcmQuYWRkT3Jp
Z2luV2l0aENyZWRlbnRpYWwob3JpZ2luKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y2FsbElmTmVlZGVkKCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMxLDYgKzEyMzEs
MTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcgogICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENh
Y2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChX
ZWJzaXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9CisK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRl
bnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhDcmVk
ZW50aWFscyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7CisgICAgfQog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKQEAgLTEyNDMsNiAr
MTI0OCwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3NpCiAKICAg
ICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuZW1wdHko
KTsKICAgICB9CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3Rv
cmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcykKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3
NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDE3LTA2LTA1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJz
aXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFscyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wMyAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEFkZCBjb250ZXh0bWFuYWdl
ciB0byBkaXNhYmxlIGxvZ2dpbmcgZm9yIGEgYmxvY2sKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKICAgICAK
KyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworCiBwcml2YXRlOgogICAg
IFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3Vy
YXRpb24oV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNvbnN0
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlz
aW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUyLDYgKzEwNTIsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0SW52b2NhdGlvbjo6ZAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NjMsNCArMTU2MywxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVz
KEpTVmFsCiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5hbWUuZ2V0
KCksIGZpbGVVUkxzLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVtb3ZlQWxsU2Vz
c2lvbkNyZWRlbnRpYWxzIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHRydWUpKTsKKyAgICAKKyAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAyMTU1NTYpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcyLDYgKzM3Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKTsKIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7
CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwJKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3
Miw0ICsyNzIsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRXZWJSVENM
ZWdhY3lBUElFbmFibGVkKGJvb2xlYW4gdmFsdWUpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcygpOworCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsK
IH07CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyMTU1NTYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMCw0
ICsyMDAsOSBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuCiAgICAg
cmV0dXJuIGltYWdlc0FycmF5LmNvdW50OwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeyB9XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTU1NTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNi0wNSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRp
Y2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVu
dGlhbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTA0LTIwICBKb2FubWFyaWUg
RGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVRLXSBJbXBsZW1lbnQgc3Vw
cG9ydCBmb3IgRFB1YiBBUklBIHJvbGVzCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9u
IDIxNTU1NikKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDYgKzk0LDcgQEAgZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRh
dAogZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUtaW4tc3ViZnJhbWVz
Lmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS5odG1s
IFsgU2tpcCBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRh
dGUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNy
ZWRlbnRpYWxzLmh0bWwgWyBTa2lwIF0KIAogIyBBcHBsZVBheSBpcyBvbmx5IGF2YWlsYWJsZSBv
biBpT1MgKGdyZWF0ZXIgdGhhbiBpT1MgMTApIGFuZCBtYWNPUyAoZ3JlYXRlciB0aGFuIG1hY09T
IDEwLjEyKSBhbmQgb25seSBmb3IgV2ViS2l0Mi4KIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5LyBb
IFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgt
cmVtb3ZlLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9i
YXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNCBAQAorbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUKK21haW4gZnJhbWUgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKKzEyNy4wLjAu
MTo4MDAwIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3
aXRoIGZpcnN0OmZpcnN0LXB3CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKKzEyNy4wLjAuMTo4MDAwIC0gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIHNlY29uZDpzZWNv
bmQtcHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRDb21t
aXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCittYWluIGZy
YW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRo
IC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUg
LSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGFyZSBh
YmxlIHRvIHJlbW92ZSBjcmVkZW50aWFscywgYnkgY2hlY2tpbmcgdGhhdCB3ZSBnZXQgYW4gYXV0
aGVudGljYXRvbi4KK2NoYWxsZW5nZSBmb3IgYSBwYXRoIHdlIG5vcm1hbGx5IHdvdWxkIG5vdCBn
ZXQgYSBjaGFsbGVuZ2UgZm9yLCBhZnRlciBoYXZpbmcgcmVtb3ZlZCBhbGwgY3JlZGVudGlhbHMu
CitUaGUgZmlyc3QgZnJhbWUncyBwYXRoIGlzIC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQt
cmVzb3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQuCitJdCB3
aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy4KK1RoZSBzZWNvbmQgZnJhbWUn
cyBwYXRoIGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3QgZnJhbWUsIGFuZCB3ZSBzaG91bGQgZ2V0
IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBjcmVkZW50aWFscyBoYXZlIGJlZW4gZGVsZXRl
ZC4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcuCisgIAorCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IGZpcnN0IHBhc3N3b3JkOiBmaXJzdC1wdworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0t
LS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IHNlY29uZCBwYXNzd29yZDogc2Vjb25kLXB3Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3Jl
ZGVudGlhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlh
bHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOworICAgIHRl
c3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgiZmlyc3QiKTsKKyAgICB0ZXN0UnVu
bmVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoImZpcnN0LXB3Iik7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0RnJhbWVMb2FkZWQoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldEF1dGhl
bnRpY2F0aW9uVXNlcm5hbWUoInNlY29uZCIpOworICAgICAgICB0ZXN0UnVubmVyLnNldEF1dGhl
bnRpY2F0aW9uUGFzc3dvcmQoInNlY29uZC1wdyIpOworICAgICAgICB0ZXN0UnVubmVyLnJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworICAgIH0KKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIs
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291
cmNlLnBocCIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgInNlY29uZEZyYW1l
TG9hZGVkKCkiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKK30KKwor
ZnVuY3Rpb24gc2Vjb25kRnJhbWVMb2FkZWQoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1v
dmUgY3JlZGVudGlhbHMsIGJ5IGNoZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24u
PGJyPgorY2hhbGxlbmdlIGZvciBhIHBhdGggd2Ugbm9ybWFsbHkgd291bGQgbm90IGdldCBhIGNo
YWxsZW5nZSBmb3IsIGFmdGVyIGhhdmluZyByZW1vdmVkIGFsbCBjcmVkZW50aWFscy48YnI+CitU
aGUgZmlyc3QgZnJhbWUncyBwYXRoIGlzIC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVz
b3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQuPGJyPgorSXQg
d2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmlyc3QvZmlyc3QtcHcuPGJyPgorVGhlIHNlY29uZCBm
cmFtZSdzIHBhdGggaXMgaWRlbnRpY2FsIHRvIHRoZSBmaXJzdCBmcmFtZSwgYW5kIHdlIHNob3Vs
ZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LCBiZWNhdXNlIGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBk
ZWxldGVkLjxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcu
PGJyPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIiBvbmxv
YWQ9ImZpcnN0RnJhbWVMb2FkZWQoKTsiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2
aXNpb24gMjE1NTU2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBAIGZhc3QvbWVkaWEvbXEtcHJl
ZmVycy1yZWR1Y2VkLW1vdGlvbi1saXYKIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3J1YmJlcmJhbmRp
bmctdmlld3BvcnQtcmVjdHMuaHRtbCBbIFBhc3MgXQogZmFzdC92aXN1YWwtdmlld3BvcnQvcnVi
YmVyYmFuZGluZy12aWV3cG9ydC1yZWN0cy1oZWFkZXItZm9vdGVyLmh0bWwgIFsgUGFzcyBdCiAK
K2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sIFsg
UGFzcyBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRm
b3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311991</attachid>
            <date>2017-06-05 00:29:37 -0700</date>
            <delta_ts>2017-06-05 00:33:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170605093113.patch</filename>
            <type>text/plain</type>
            <size>26073</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmNlbnRhZ2VzIGFy
ZSBjYWxjdWxhdGVkIHdyb25nIGluIFNWRyB0cmFuc2Zvcm0gQ1NTIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENy
ZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVz
cG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBi
ZSB1cGRhdGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYpOwogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7IH0KKwogcHJp
dmF0ZToKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcgLyogcGFydGl0aW9uTmFtZSAqLywg
UHJvdGVjdGlvblNwYWNlPiwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRp
YWxNYXA7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA2LTA1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2Yg
YXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0
ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3JlZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5k
IGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgor
ICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBu
b3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0
YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIw
MTctMDYtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgU29ydCB0aGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTAsNiArMzkwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoU2UKICAgICAgICAgICAgIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKCpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoQ29va2llcyk7CiAgICAgfQogCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAgICAgaWYgKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICB9CisKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAg
ICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJp
ZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwpAQCAtNDExLDYgKzQxNiwxMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTCiAgICAgICAgICAgICBkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAgCiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdl
YnNpdGVEYXRhKGNhbGxiYWNrSUQpLCAwKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCShyZXZpc2lvbiAyMTc3
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGUKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBl
bmNvZGVyIDw8IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCisgICAgZW5jb2RlciA8
PCBvcmlnaW5zV2l0aENyZWRlbnRpYWxzOwogfQogCiBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YSYgcmVzdWx0KQpAQCAtNzQsNyArNzUs
OCBAQCBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKLQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9y
aWdpbnNXaXRoQ3JlZGVudGlhbHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
OCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNX
aXRoUGx1Z2luRGF0YTsKICNlbmRpZgogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRo
Q3JlZGVudGlhbHM7CisKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcg
QEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAgIE1lZGlhRGV2aWNlSWRlbnRpZmll
ciA9IDEgPDwgMTIsCiAjZW5kaWYKICAgICBXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gMSA8PCAxMywKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTQsCiB9OwogCiB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw5IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURh
dGEKIC8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgSW5k
ZXhlZERCIGRhdGFiYXNlcy4gKi8KIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0
ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogCisvKiEgQGNvbnN0YW50IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMgQ3JlZGVudGlhbHMsIHN1Y2ggYXMgQmFzaWMgQXV0aGVudGljYXRpb24uICovCitXS19FWFRF
Uk4gTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQSBX
S1dlYnNpdGVEYXRhUmVjb3JkIHJlcHJlc2VudHMgd2Vic2l0ZSBkYXRhLCBncm91cGVkIGJ5IGRv
bWFpbiBuYW1lIHVzaW5nIHRoZSBwdWJsaWMgc3VmZml4IGxpc3QuICovCiBXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFS
ZWNvcmQgOiBOU09iamVjdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkocmV2aXNpb24gMjE3Nzc2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIE5TU3RyaW5nICogY29uc3Qg
V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFMKIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5
cGVXZWJTUUxEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIjsK
IE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSBA
IldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIjsKIAorTlNTdHJpbmcgKiBjb25z
dCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzIjsKKwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlIjsK
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyI7CkBA
IC03OSw2ICs4MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQK
ICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldlYiBTUUwiXTsKICAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc10pCiAg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRleGVkREIiXTsKKyAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29u
dGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXSkKICAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAIkhTVFMgQ2FjaGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRl
RGF0YVQKICNlbmRpZgogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXSkKICAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsK
LQorICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVu
dGlhbHM7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTE4LDYgKzExOSw4IEBA
IHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2kKICNlbmRpZgogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMg
YWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdOworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAgKyAoTlNTZXQgKilhbGxXZWJzaXRlRGF0YVR5cGVzCiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5TU2V0ICphbGxXZWJz
aXRlRGF0YVR5cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAg
YWxsV2Vic2l0ZURhdGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tX
ZWJzaXRlRGF0YVR5cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdL
V2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlQ29va2llcywgV0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0
YVR5cGVMb2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBX
S1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcyBdXTsKKyAgICAgICAgYWxsV2Vic2l0ZURh
dGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tXZWJzaXRlRGF0YVR5
cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlQ29va2llcywg
V0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0
b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRh
VHlwZVdlYlNRTERhdGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBdXTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NSArMTU1LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAg
ICAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0
YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7
CisgICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMuYWRkKG9yaWdpbik7CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5o
CShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBz
dHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIHZvaWQgYWRkUGx1Z2luRGF0YUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUp
OwogI2VuZGlmCisgICAgdm9pZCBhZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25zdCBTdHJpbmcm
KTsKIAogICAgIFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiB0eXBlczsKQEAgLTY4LDcgKzY5LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBIYXNoU2V0PFN0cmluZz4gcGx1
Z2luRGF0YUhvc3ROYW1lczsKICNlbmRpZgotICAgIAorICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmln
aW5zV2l0aENyZWRlbnRpYWxzOworCiAgICAgYm9vbCBtYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9u
IDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1MiwxMiBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TCiAgICAgICAgICAgICB9CiAjZW5kaWYK
IAorICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB3ZWJzaXRlRGF0YS5vcmlnaW5zV2l0
aENyZWRlbnRpYWxzKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRl
RGF0YVJlY29yZHMuYWRkKG9yaWdpbiwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+
dmFsdWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmVjb3JkLmFkZE9yaWdp
bldpdGhDcmVkZW50aWFsKG9yaWdpbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNh
bGxJZk5lZWRlZCgpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0NCw2ICsxMjQ0LDEx
IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3IKICAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW4gOiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhDYWNo
ZShzZXNzaW9uSUQpKQogICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vi
c2l0ZURhdGE6OkVudHJ5IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
Km9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQorCisg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50
aWFscykpIHsKKyAgICAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIHdlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkt
PmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgIH0KIH0K
IAogdm9pZCBXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCkBAIC0xMjU2LDYgKzEy
NjEsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaQogCiAgICAg
ICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmVtcHR5KCk7
CiAgICAgfQorCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMpCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc3NzYp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
Ny0wNi0wNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0
ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpyZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFscyk6CisKIDIwMTctMDYtMDMgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBBZGQgY29udGV4dG1hbmFnZXIg
dG8gZGlzYWJsZSBsb2dnaW5nIGZvciBhIGJsb2NrCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgCisg
ICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKwogcHJpdmF0ZToKICAgICBX
S1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0
aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oKSBjb25zdDsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShyZXZpc2lv
biAyMTc3NzYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEwMSw2ICsxMTAxLDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4gVGVzdEludm9jYXRpb246OmQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkucmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjM4LDQgKzE2MzgsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhK
U1ZhbAogICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIG1lc3NhZ2VOYW1lLmdldCgp
LCBmaWxlVVJMcy5nZXQoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFscyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VC
b2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh0cnVlKSk7CisgICAgCisgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjE3Nzc2KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3OCw2ICszNzgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwor
CiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCShyZXZpc2lvbiAyMTc3NzYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yODAs
NCArMjgwLDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0V2ViUlRDTGVn
YWN5QVBJRW5hYmxlZChib29sZWFuIHZhbHVlKTsKIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29y
a1Byb2Nlc3MoKTsKKworICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiB9
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQkocmV2aXNpb24gMjE3Nzc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNCAr
MjAwLDkgQEAgdW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbgogICAgIHJl
dHVybiBpbWFnZXNBcnJheS5jb3VudDsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsgfV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjE3Nzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNh
dGlvbiBkYXRhIHRocm91Z2ggdGhlIFdlYnNpdGUgZGF0YSBzdG9yZSBBUEkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRp
YWxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0wNi0wNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQZXJjZW50YWdlcyBhcmUgY2Fs
Y3VsYXRlZCB3cm9uZyBpbiBTVkcgdHJhbnNmb3JtIENTUyBwcm9wZXJ0eQpJbmRleDogTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCShyZXZpc2lvbiAyMTc3NzYpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIGZhc3QvbWVkaWEvbXEtaW52ZXJ0
ZWQtY29sb3JzLWxpdmUtdXBkYXQKIGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUt
dXBkYXRlLWluLXN1YmZyYW1lcy5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhL21xLW1vbm9jaHJv
bWUtbGl2ZS11cGRhdGUuaHRtbCBbIFNraXAgXQogZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVj
ZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvbG9hZGluZy9i
YXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sIFsgU2tpcCBdCiAKICMgQXBwbGVQYXkg
aXMgb25seSBhdmFpbGFibGUgb24gaU9TIChncmVhdGVyIHRoYW4gaU9TIDEwKSBhbmQgbWFjT1Mg
KGdyZWF0ZXIgdGhhbiBtYWNPUyAxMC4xMikgYW5kIG9ubHkgZm9yIFdlYktpdDIuCiBodHRwL3Rl
c3RzL3NzbC9hcHBsZXBheS8gWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3Zl
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK21haW4gZnJhbWUgLSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkQ29tbWl0TG9hZEZvckZy
YW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJzdC1wdworZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCisxMjcu
MC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRp
bmcgd2l0aCBzZWNvbmQ6c2Vjb25kLXB3CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTEtLT4tLT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1l
ICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVu
dHNGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitm
cmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3JlZGVudGlhbHMsIGJ5IGNoZWNraW5n
IHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uCitjaGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBu
b3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92
ZWQgYWxsIGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9y
ZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFs
bGVuZ2UgZm9yIGl0LgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmlyc3QvZmlyc3QtcHcu
CitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1l
LCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlh
bHMgaGF2ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQv
c2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBmaXJzdCBwYXNz
d29yZDogZmlyc3QtcHcKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBzZWNvbmQgcGFz
c3dvcmQ6IHNlY29uZC1wdwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1
dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImZp
cnN0Iik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJmaXJzdC1w
dyIpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBmaXJz
dEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJzZWNvbmQiKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJzZWNvbmQtcHciKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAg
dmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUu
c2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoIm9u
bG9hZCIsICJzZWNvbmRGcmFtZUxvYWRlZCgpIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChmcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEZyYW1lTG9hZGVkKCkKK3sKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
d2UgYXJlIGFibGUgdG8gcmVtb3ZlIGNyZWRlbnRpYWxzLCBieSBjaGVja2luZyB0aGF0IHdlIGdl
dCBhbiBhdXRoZW50aWNhdG9uLjxicj4KK2NoYWxsZW5nZSBmb3IgYSBwYXRoIHdlIG5vcm1hbGx5
IHdvdWxkIG5vdCBnZXQgYSBjaGFsbGVuZ2UgZm9yLCBhZnRlciBoYXZpbmcgcmVtb3ZlZCBhbGwg
Y3JlZGVudGlhbHMuPGJyPgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNv
dXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVu
Z2UgZm9yIGl0Ljxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZpcnN0L2ZpcnN0LXB3
Ljxicj4KK1RoZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3Qg
ZnJhbWUsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBjcmVk
ZW50aWFscyBoYXZlIGJlZW4gZGVsZXRlZC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0
aCBzZWNvbmQvc2Vjb25kLXB3Ljxicj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvcHJvdGVjdGVk
LXJlc291cmNlLnBocCIgb25sb2FkPSJmaXJzdEZyYW1lTG9hZGVkKCk7Ij48L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIxNzc3NikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBA
QCBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WCiBmYXN0L3Zpc3VhbC12
aWV3cG9ydC9ydWJiZXJiYW5kaW5nLXZpZXdwb3J0LXJlY3RzLmh0bWwgWyBQYXNzIF0KIGZhc3Qv
dmlzdWFsLXZpZXdwb3J0L3J1YmJlcmJhbmRpbmctdmlld3BvcnQtcmVjdHMtaGVhZGVyLWZvb3Rl
ci5odG1sICBbIFBhc3MgXQogCitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUt
Y3JlZGVudGlhbHMuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311992</attachid>
            <date>2017-06-05 00:33:33 -0700</date>
            <delta_ts>2017-06-05 00:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170605093509.patch</filename>
            <type>text/plain</type>
            <size>26078</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmNlbnRhZ2VzIGFy
ZSBjYWxjdWxhdGVkIHdyb25nIGluIFNWRyB0cmFuc2Zvcm0gQ1NTIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENy
ZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVz
cG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBi
ZSB1cGRhdGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYpOwogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7IH0KKwogcHJp
dmF0ZToKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcgLyogcGFydGl0aW9uTmFtZSAqLywg
UHJvdGVjdGlvblNwYWNlPiwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRp
YWxNYXA7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA2LTA1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2Yg
YXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0
ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3JlZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5k
IGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgor
ICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBu
b3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0
YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIw
MTctMDYtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgU29ydCB0aGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTAsNiArMzkwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoU2UKICAgICAgICAgICAgIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKCpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoQ29va2llcyk7CiAgICAgfQogCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAgICAgaWYgKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICB9CisKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAg
ICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJp
ZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwpAQCAtNDExLDYgKzQxNiwxMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTCiAgICAgICAgICAgICBkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAgCiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdl
YnNpdGVEYXRhKGNhbGxiYWNrSUQpLCAwKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCShyZXZpc2lvbiAyMTc3
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGUKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBl
bmNvZGVyIDw8IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCisgICAgZW5jb2RlciA8
PCBvcmlnaW5zV2l0aENyZWRlbnRpYWxzOwogfQogCiBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YSYgcmVzdWx0KQpAQCAtNzQsNyArNzUs
OCBAQCBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKLQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9y
aWdpbnNXaXRoQ3JlZGVudGlhbHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
OCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNX
aXRoUGx1Z2luRGF0YTsKICNlbmRpZgogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRo
Q3JlZGVudGlhbHM7CisKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcg
QEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAgIE1lZGlhRGV2aWNlSWRlbnRpZmll
ciA9IDEgPDwgMTIsCiAjZW5kaWYKICAgICBXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gMSA8PCAxMywKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTQsCiB9OwogCiB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw5IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURh
dGEKIC8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgSW5k
ZXhlZERCIGRhdGFiYXNlcy4gKi8KIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0
ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogCisvKiEgQGNvbnN0YW50IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMgQ3JlZGVudGlhbHMsIHN1Y2ggYXMgQmFzaWMgQXV0aGVudGljYXRpb24uICovCitXS19FWFRF
Uk4gTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQSBX
S1dlYnNpdGVEYXRhUmVjb3JkIHJlcHJlc2VudHMgd2Vic2l0ZSBkYXRhLCBncm91cGVkIGJ5IGRv
bWFpbiBuYW1lIHVzaW5nIHRoZSBwdWJsaWMgc3VmZml4IGxpc3QuICovCiBXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFS
ZWNvcmQgOiBOU09iamVjdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkocmV2aXNpb24gMjE3Nzc2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIE5TU3RyaW5nICogY29uc3Qg
V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFMKIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5
cGVXZWJTUUxEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIjsK
IE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSBA
IldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIjsKIAorTlNTdHJpbmcgKiBjb25z
dCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzIjsKKwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlIjsK
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyI7CkBA
IC03OSw2ICs4MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQK
ICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldlYiBTUUwiXTsKICAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc10pCiAg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRleGVkREIiXTsKKyAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29u
dGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXSkKICAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAIkhTVFMgQ2FjaGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRl
RGF0YVQKICNlbmRpZgogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXSkKICAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsK
LQorICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVu
dGlhbHM7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTE4LDYgKzExOSw4IEBA
IHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2kKICNlbmRpZgogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMg
YWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdOworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAgKyAoTlNTZXQgKilhbGxXZWJzaXRlRGF0YVR5cGVzCiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5TU2V0ICphbGxXZWJz
aXRlRGF0YVR5cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAg
YWxsV2Vic2l0ZURhdGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tX
ZWJzaXRlRGF0YVR5cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdL
V2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlQ29va2llcywgV0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0
YVR5cGVMb2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBX
S1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcyBdXTsKKyAgICAgICAgYWxsV2Vic2l0ZURh
dGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tXZWJzaXRlRGF0YVR5
cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlQ29va2llcywg
V0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0
b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRh
VHlwZVdlYlNRTERhdGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBdXTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NSArMTU1LDEzIEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAg
ICAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0
YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7
CisgICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMuYWRkKG9yaWdpbik7CisKK30KKwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3
IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgdm9pZCBhZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0
TmFtZSk7CiAjZW5kaWYKKyAgICB2b2lkIGFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IHR5cGVzOwpAQCAtNjgsNyArNjksOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNv
cmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEhhc2hTZXQ8U3RyaW5n
PiBwbHVnaW5EYXRhSG9zdE5hbWVzOwogI2VuZGlmCi0gICAgCisgICAgSGFzaFNldDxTdHJpbmc+
IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CisKICAgICBib29sIG1hdGNoZXNUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKCk7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2
aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDEyIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblMKICAgICAgICAgICAgIH0KICNl
bmRpZgogCisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHdlYnNpdGVEYXRhLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtX3dl
YnNpdGVEYXRhUmVjb3Jkcy5hZGQob3JpZ2luLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZWNvcmQuYWRk
T3JpZ2luV2l0aENyZWRlbnRpYWwob3JpZ2luKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgY2FsbElmTmVlZGVkKCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ0LDYgKzEy
NDQsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcgogICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0
aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChXZWJzaXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9
CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhD
cmVkZW50aWFscyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7CisgICAg
fQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKQEAgLTEyNTYs
NiArMTI2MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3NpCiAK
ICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuZW1w
dHkoKTsKICAgICB9CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcykKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
Nzc3NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTA2LTA1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBX
ZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wMyAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEFkZCBjb250ZXh0bWFu
YWdlciB0byBkaXNhYmxlIGxvZ2dpbmcgZm9yIGEgYmxvY2sKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKICAg
ICAKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworCiBwcml2YXRlOgog
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZp
Z3VyYXRpb24oV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNv
bnN0OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJl
dmlzaW9uIDIxNzc3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAxLDYgKzExMDEsMTEgQEAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIxNzc3NikKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MzgsNCArMTYzOCwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZp
bGVzKEpTVmFsCiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5hbWUu
Z2V0KCksIGZpbGVVUkxzLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVz
c2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHRydWUpKTsKKyAgICAKKyAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc4LDYgKzM3OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRl
TmV0d29ya1Byb2Nlc3MoKTsKIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwJKHJldmlzaW9uIDIxNzc3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI4MCw0ICsyODAsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRXZWJS
VENMZWdhY3lBUElFbmFibGVkKGJvb2xlYW4gdmFsdWUpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcygpOworCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMo
KTsKIH07CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyMTc3NzYpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
MCw0ICsyMDAsOSBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuCiAg
ICAgcmV0dXJuIGltYWdlc0FycmF5LmNvdW50OwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpy
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQ
YXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeyB9XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RS
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTc3NzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNi0wNSAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhl
bnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3Jl
ZGVudGlhbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTA2LTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmNlbnRhZ2VzIGFy
ZSBjYWxjdWxhdGVkIHdyb25nIGluIFNWRyB0cmFuc2Zvcm0gQ1NTIHByb3BlcnR5CkluZGV4OiBM
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIxNzc3NikKKysrIExheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgZmFzdC9tZWRpYS9tcS1p
bnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdAogZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMt
bGl2ZS11cGRhdGUtaW4tc3ViZnJhbWVzLmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWEvbXEtbW9u
b2Nocm9tZS1saXZlLXVwZGF0ZS5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMt
cmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9sb2Fk
aW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBTa2lwIF0KIAogIyBBcHBs
ZVBheSBpcyBvbmx5IGF2YWlsYWJsZSBvbiBpT1MgKGdyZWF0ZXIgdGhhbiBpT1MgMTApIGFuZCBt
YWNPUyAoZ3JlYXRlciB0aGFuIG1hY09TIDEwLjEyKSBhbmQgb25seSBmb3IgV2ViS2l0Mi4KIGh0
dHAvdGVzdHMvc3NsL2FwcGxlcGF5LyBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1y
ZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorbWFpbiBmcmFtZSAtIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKKzEyNy4wLjAuMTo4MDAwIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIGZpcnN0OmZpcnN0LXB3CitmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUK
KzEyNy4wLjAuMTo4MDAwIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVz
cG9uZGluZyB3aXRoIHNlY29uZDpzZWNvbmQtcHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMS0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQor
ZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IHdlIGFyZSBhYmxlIHRvIHJlbW92ZSBjcmVkZW50aWFscywgYnkgY2hl
Y2tpbmcgdGhhdCB3ZSBnZXQgYW4gYXV0aGVudGljYXRvbi4KK2NoYWxsZW5nZSBmb3IgYSBwYXRo
IHdlIG5vcm1hbGx5IHdvdWxkIG5vdCBnZXQgYSBjaGFsbGVuZ2UgZm9yLCBhZnRlciBoYXZpbmcg
cmVtb3ZlZCBhbGwgY3JlZGVudGlhbHMuCitUaGUgZmlyc3QgZnJhbWUncyBwYXRoIGlzIC9sb2Fk
aW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBh
IGNoYWxsZW5nZSBmb3IgaXQuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJz
dC1wdy4KK1RoZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3Qg
ZnJhbWUsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBjcmVk
ZW50aWFscyBoYXZlIGJlZW4gZGVsZXRlZC4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIHNl
Y29uZC9zZWNvbmQtcHcuCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IGZpcnN0
IHBhc3N3b3JkOiBmaXJzdC1wdworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IHNlY29u
ZCBwYXNzd29yZDogc2Vjb25kLXB3CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFz
aWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFt
ZSgiZmlyc3QiKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoImZp
cnN0LXB3Iik7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IGZpcnN0RnJhbWVMb2FkZWQoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoInNlY29uZCIpOworICAg
ICAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoInNlY29uZC1wdyIpOwor
ICAgICAgICB0ZXN0UnVubmVyLnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworICAgIH0K
KyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBm
cmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0
ZSgib25sb2FkIiwgInNlY29uZEZyYW1lTG9hZGVkKCkiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGZyYW1lKTsKK30KKworZnVuY3Rpb24gc2Vjb25kRnJhbWVMb2FkZWQoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3JlZGVudGlhbHMsIGJ5IGNoZWNraW5nIHRoYXQg
d2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uPGJyPgorY2hhbGxlbmdlIGZvciBhIHBhdGggd2Ugbm9y
bWFsbHkgd291bGQgbm90IGdldCBhIGNoYWxsZW5nZSBmb3IsIGFmdGVyIGhhdmluZyByZW1vdmVk
IGFsbCBjcmVkZW50aWFscy48YnI+CitUaGUgZmlyc3QgZnJhbWUncyBwYXRoIGlzIC9sb2FkaW5n
L3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNo
YWxsZW5nZSBmb3IgaXQuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmlyc3QvZmly
c3QtcHcuPGJyPgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGggaXMgaWRlbnRpY2FsIHRvIHRoZSBm
aXJzdCBmcmFtZSwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LCBiZWNhdXNl
IGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBkZWxldGVkLjxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXpl
ZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcuPGJyPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9wcm90
ZWN0ZWQtcmVzb3VyY2UucGhwIiBvbmxvYWQ9ImZpcnN0RnJhbWVMb2FkZWQoKTsiPjwvaWZyYW1l
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjE3Nzc2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw4IEBAIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblYKIGZhc3Qvdmlz
dWFsLXZpZXdwb3J0L3J1YmJlcmJhbmRpbmctdmlld3BvcnQtcmVjdHMuaHRtbCBbIFBhc3MgXQog
ZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9ydC1yZWN0cy1oZWFkZXIt
Zm9vdGVyLmh0bWwgIFsgUGFzcyBdCiAKK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJl
bW92ZS1jcmVkZW50aWFscy5odG1sIFsgUGFzcyBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgogIy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311993</attachid>
            <date>2017-06-05 00:43:25 -0700</date>
            <delta_ts>2017-06-05 01:44:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170605094501.patch</filename>
            <type>text/plain</type>
            <size>26494</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmNlbnRhZ2VzIGFy
ZSBjYWxjdWxhdGVkIHdyb25nIGluIFNWRyB0cmFuc2Zvcm0gQ1NTIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENy
ZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVz
cG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBi
ZSB1cGRhdGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYpOwogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7IH0KKwogcHJp
dmF0ZToKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcgLyogcGFydGl0aW9uTmFtZSAqLywg
UHJvdGVjdGlvblNwYWNlPiwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRp
YWxNYXA7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA2LTA1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2Yg
YXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0
ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3JlZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5k
IGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgor
ICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBu
b3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0
YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIw
MTctMDYtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgU29ydCB0aGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTAsNiArMzkwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoU2UKICAgICAgICAgICAgIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKCpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoQ29va2llcyk7CiAgICAgfQogCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAgICAgaWYgKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICB9CisKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAg
ICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJp
ZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwpAQCAtNDExLDYgKzQxNiwxMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTCiAgICAgICAgICAgICBkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAgCiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdl
YnNpdGVEYXRhKGNhbGxiYWNrSUQpLCAwKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCShyZXZpc2lvbiAyMTc3
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGUKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBl
bmNvZGVyIDw8IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCisgICAgZW5jb2RlciA8
PCBvcmlnaW5zV2l0aENyZWRlbnRpYWxzOwogfQogCiBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YSYgcmVzdWx0KQpAQCAtNzQsNyArNzUs
OCBAQCBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKLQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9y
aWdpbnNXaXRoQ3JlZGVudGlhbHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
OCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNX
aXRoUGx1Z2luRGF0YTsKICNlbmRpZgogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRo
Q3JlZGVudGlhbHM7CisKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcg
QEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAgIE1lZGlhRGV2aWNlSWRlbnRpZmll
ciA9IDEgPDwgMTIsCiAjZW5kaWYKICAgICBXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gMSA8PCAxMywKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTQsCiB9OwogCiB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw5IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURh
dGEKIC8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgSW5k
ZXhlZERCIGRhdGFiYXNlcy4gKi8KIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0
ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogCisvKiEgQGNvbnN0YW50IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMgQ3JlZGVudGlhbHMsIHN1Y2ggYXMgQmFzaWMgQXV0aGVudGljYXRpb24uICovCitXS19FWFRF
Uk4gTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQSBX
S1dlYnNpdGVEYXRhUmVjb3JkIHJlcHJlc2VudHMgd2Vic2l0ZSBkYXRhLCBncm91cGVkIGJ5IGRv
bWFpbiBuYW1lIHVzaW5nIHRoZSBwdWJsaWMgc3VmZml4IGxpc3QuICovCiBXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFS
ZWNvcmQgOiBOU09iamVjdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkocmV2aXNpb24gMjE3Nzc2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIE5TU3RyaW5nICogY29uc3Qg
V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFMKIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5
cGVXZWJTUUxEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIjsK
IE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSBA
IldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIjsKIAorTlNTdHJpbmcgKiBjb25z
dCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzIjsKKwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlIjsK
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyI7CkBA
IC03OSw2ICs4MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQK
ICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldlYiBTUUwiXTsKICAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc10pCiAg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRleGVkREIiXTsKKyAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29u
dGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXSkKICAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAIkhTVFMgQ2FjaGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRl
RGF0YVQKICNlbmRpZgogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXSkKICAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsK
LQorICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVu
dGlhbHM7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTE4LDYgKzExOSw4IEBA
IHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2kKICNlbmRpZgogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMg
YWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdOworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAgKyAoTlNTZXQgKilhbGxXZWJzaXRlRGF0YVR5cGVzCiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5TU2V0ICphbGxXZWJz
aXRlRGF0YVR5cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAg
YWxsV2Vic2l0ZURhdGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tX
ZWJzaXRlRGF0YVR5cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdL
V2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlQ29va2llcywgV0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0
YVR5cGVMb2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBX
S1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcyBdXTsKKyAgICAgICAgYWxsV2Vic2l0ZURh
dGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tXZWJzaXRlRGF0YVR5
cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlQ29va2llcywg
V0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0
b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRh
VHlwZVdlYlNRTERhdGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBdXTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NSArMTU1LDEzIEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAg
ICAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0
YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7
CisgICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMuYWRkKG9yaWdpbik7CisKK30KKwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3
IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgdm9pZCBhZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0
TmFtZSk7CiAjZW5kaWYKKyAgICB2b2lkIGFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IHR5cGVzOwpAQCAtNjgsNyArNjksOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNv
cmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEhhc2hTZXQ8U3RyaW5n
PiBwbHVnaW5EYXRhSG9zdE5hbWVzOwogI2VuZGlmCi0gICAgCisgICAgSGFzaFNldDxTdHJpbmc+
IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CisKICAgICBib29sIG1hdGNoZXNUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKCk7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2
aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDEyIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblMKICAgICAgICAgICAgIH0KICNl
bmRpZgogCisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHdlYnNpdGVEYXRhLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtX3dl
YnNpdGVEYXRhUmVjb3Jkcy5hZGQob3JpZ2luLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZWNvcmQuYWRk
T3JpZ2luV2l0aENyZWRlbnRpYWwob3JpZ2luKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgY2FsbElmTmVlZGVkKCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ0LDYgKzEy
NDQsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcgogICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0
aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChXZWJzaXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9
CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhD
cmVkZW50aWFscyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7CisgICAg
fQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKQEAgLTEyNTYs
NiArMTI2MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3NpCiAK
ICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuZW1w
dHkoKTsKICAgICB9CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcykKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
Nzc3NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTA2LTA1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBX
ZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wMyAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEFkZCBjb250ZXh0bWFu
YWdlciB0byBkaXNhYmxlIGxvZ2dpbmcgZm9yIGEgYmxvY2sKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMz
MCw2ICsyMzMwLDEwIEBAIHVuc2lnbmVkIFRlc3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW4K
ICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKK3sKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjE3Nzc2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNiArMTc2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcygpOwogICAgIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4g
Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmKTsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRD
b25maWd1cmF0aW9uKCkgY29uc3Q7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDEsNiArMTEwMSwxMSBA
QCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIikpIHsKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjE3
Nzc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw0ICsxNjM4LDEyIEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWwKICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShw
YWdlLCBtZXNzYWdlTmFtZS5nZXQoKSwgZmlsZVVSTHMuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkp
OworICAgIAorICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5n
ZXQoKSwgbnVsbHB0cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHJldmlz
aW9uIDIxNzc3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNiArMzc4LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCisgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMjE3Nzc2KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjgwLDQgKzI4MCw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAKICAg
ICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisKKyAgICB2b2lkIHJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpOwogfTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDIxNzc3NikKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjAwLDQgKzIwMCw5IEBAIHVuc2lnbmVkIFRlc3RDb250cm9sbGVyOjpp
bWFnZUNvdW50SW5HZW4KICAgICByZXR1cm4gaW1hZ2VzQXJyYXkuY291bnQ7CiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7CisgICAgW2ds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlw
ZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNl
OltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7IH1dOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTA1
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0
IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEg
c3RvcmUgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNp
Yy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MTctMDYtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGVyY2VudGFnZXMgYXJlIGNhbGN1bGF0ZWQgd3JvbmcgaW4gU1ZHIHRyYW5zZm9ybSBDU1Mg
cHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjE3Nzc2KQorKysgTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBA
QCBmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0CiBmYXN0L21lZGlhL21x
LWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0ZS1pbi1zdWJmcmFtZXMuaHRtbCBbIFNraXAgXQog
ZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLmh0bWwgWyBTa2lwIF0KIGZhc3Qv
bWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0ZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbCBb
IFNraXAgXQogCiAjIEFwcGxlUGF5IGlzIG9ubHkgYXZhaWxhYmxlIG9uIGlPUyAoZ3JlYXRlciB0
aGFuIGlPUyAxMCkgYW5kIG1hY09TIChncmVhdGVyIHRoYW4gbWFjT1MgMTAuMTIpIGFuZCBvbmx5
IGZvciBXZWJLaXQyLgogaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvIFsgU2tpcCBdCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlh
bHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9h
ZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3Zl
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBA
CittYWluIGZyYW1lIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFt
ZSAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggZmlyc3Q6Zmlyc3Qt
cHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRDb21taXRM
b2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUxLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK2ZyYW1lICI8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZp
bmlzaExvYWRGb3JGcmFtZQorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggc2Vjb25kOnNlY29uZC1wdworZnJhbWUgIjwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQor
ZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4i
IC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVP
bmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+
LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRG
b3JGcmFtZQorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGNy
ZWRlbnRpYWxzLCBieSBjaGVja2luZyB0aGF0IHdlIGdldCBhbiBhdXRoZW50aWNhdG9uLgorY2hh
bGxlbmdlIGZvciBhIHBhdGggd2Ugbm9ybWFsbHkgd291bGQgbm90IGdldCBhIGNoYWxsZW5nZSBm
b3IsIGFmdGVyIGhhdmluZyByZW1vdmVkIGFsbCBjcmVkZW50aWFscy4KK1RoZSBmaXJzdCBmcmFt
ZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFu
ZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC4KK0l0IHdpbGwgYmUgYXV0aG9yaXpl
ZCB3aXRoIGZpcnN0L2ZpcnN0LXB3LgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGggaXMgaWRlbnRp
Y2FsIHRvIHRoZSBmaXJzdCBmcmFtZSwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9y
IGl0LCBiZWNhdXNlIGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBkZWxldGVkLgorSXQgd2lsbCBiZSBh
dXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy4KKyAgCisKKy0tLS0tLS0tCitGcmFtZTog
JzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0
ZWQgYXMgdXNlcjogZmlyc3QgcGFzc3dvcmQ6IGZpcnN0LXB3CisKKy0tLS0tLS0tCitGcmFtZTog
JzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0
ZWQgYXMgdXNlcjogc2Vjb25kIHBhc3N3b3JkOiBzZWNvbmQtcHcKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJl
bW92ZS1jcmVkZW50aWFscy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhhbmRs
ZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCJmaXJzdCIpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGlj
YXRpb25QYXNzd29yZCgiZmlyc3QtcHciKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gZmlyc3RGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFt
ZSgic2Vjb25kIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29y
ZCgic2Vjb25kLXB3Iik7CisgICAgICAgIHRlc3RSdW5uZXIucmVtb3ZlQWxsU2Vzc2lvbkNyZWRl
bnRpYWxzKCk7CisgICAgfQorICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIik7CisgICAg
ZnJhbWUuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAic2Vjb25kRnJhbWVMb2FkZWQoKSIpOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBzZWNvbmRG
cmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGFyZSBhYmxlIHRvIHJlbW92ZSBjcmVkZW50aWFscywg
YnkgY2hlY2tpbmcgdGhhdCB3ZSBnZXQgYW4gYXV0aGVudGljYXRvbi48YnI+CitjaGFsbGVuZ2Ug
Zm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZvciwgYWZ0
ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLjxicj4KK1RoZSBmaXJzdCBmcmFtZSdz
IHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3
ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6
ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy48YnI+CitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBp
ZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5n
ZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuPGJyPgorSXQg
d2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy48YnI+Cis8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiIG9ubG9hZD0iZmlyc3RGcmFtZUxv
YWRlZCgpOyI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMTc3NzYpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDggQEAgaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlT
ZXNzaW9uVgogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9ydC1yZWN0
cy5odG1sIFsgUGFzcyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydWJiZXJiYW5kaW5nLXZpZXdw
b3J0LXJlY3RzLWhlYWRlci1mb290ZXIuaHRtbCAgWyBQYXNzIF0KIAoraHR0cC90ZXN0cy9sb2Fk
aW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGly
ZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311997</attachid>
            <date>2017-06-05 01:44:06 -0700</date>
            <delta_ts>2017-06-06 23:35:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170605104542.patch</filename>
            <type>text/plain</type>
            <size>26523</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmNlbnRhZ2VzIGFy
ZSBjYWxjdWxhdGVkIHdyb25nIGluIFNWRyB0cmFuc2Zvcm0gQ1NTIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENy
ZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVz
cG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBi
ZSB1cGRhdGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYpOwogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7IH0KKwogcHJp
dmF0ZToKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcgLyogcGFydGl0aW9uTmFtZSAqLywg
UHJvdGVjdGlvblNwYWNlPiwgQ3JlZGVudGlhbD4gbV9wcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRp
YWxNYXA7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA2LTA1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2Yg
YXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0
ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3JlZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5k
IGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgor
ICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBu
b3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0
YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIw
MTctMDYtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgU29ydCB0aGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTAsNiArMzkwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoU2UKICAgICAgICAgICAgIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKCpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoQ29va2llcyk7CiAgICAgfQogCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAgICAgaWYgKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsKKyAgICB9CisKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKICAg
ICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJp
ZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwpAQCAtNDExLDYgKzQxNiwxMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTCiAgICAgICAgICAgICBkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAgCiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdl
YnNpdGVEYXRhKGNhbGxiYWNrSUQpLCAwKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCShyZXZpc2lvbiAyMTc3
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGUKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBl
bmNvZGVyIDw8IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCisgICAgZW5jb2RlciA8
PCBvcmlnaW5zV2l0aENyZWRlbnRpYWxzOwogfQogCiBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YSYgcmVzdWx0KQpAQCAtNzQsNyArNzUs
OCBAQCBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKLQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9y
aWdpbnNXaXRoQ3JlZGVudGlhbHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
OCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNX
aXRoUGx1Z2luRGF0YTsKICNlbmRpZgogCisgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNXaXRo
Q3JlZGVudGlhbHM7CisKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGEmKTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZS5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcg
QEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAgIE1lZGlhRGV2aWNlSWRlbnRpZmll
ciA9IDEgPDwgMTIsCiAjZW5kaWYKICAgICBXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gMSA8PCAxMywKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTQsCiB9OwogCiB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw5IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURh
dGEKIC8qISBAY29uc3RhbnQgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgSW5k
ZXhlZERCIGRhdGFiYXNlcy4gKi8KIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0
ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEx
KSwgaW9zKDkuMCkpOwogCisvKiEgQGNvbnN0YW50IFdLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMgQ3JlZGVudGlhbHMsIHN1Y2ggYXMgQmFzaWMgQXV0aGVudGljYXRpb24uICovCitXS19FWFRF
Uk4gTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQSBX
S1dlYnNpdGVEYXRhUmVjb3JkIHJlcHJlc2VudHMgd2Vic2l0ZSBkYXRhLCBncm91cGVkIGJ5IGRv
bWFpbiBuYW1lIHVzaW5nIHRoZSBwdWJsaWMgc3VmZml4IGxpc3QuICovCiBXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFS
ZWNvcmQgOiBOU09iamVjdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkocmV2aXNpb24gMjE3Nzc2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIE5TU3RyaW5nICogY29uc3Qg
V0tXZWJzaXRlRGF0YVR5cGVMb2NhbFMKIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5
cGVXZWJTUUxEYXRhYmFzZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzIjsK
IE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgPSBA
IldLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzIjsKIAorTlNTdHJpbmcgKiBjb25z
dCBXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzIjsKKwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlIjsK
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFy
Y2hlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcyI7CkBA
IC03OSw2ICs4MSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQK
ICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldlYiBTUUwiXTsKICAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc10pCiAg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRleGVkREIiXTsKKyAgICBpZiAoW2RhdGFUeXBl
cyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29u
dGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlXSkKICAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAIkhTVFMgQ2FjaGUiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRl
RGF0YVQKICNlbmRpZgogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXSkKICAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsK
LQorICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVu
dGlhbHM7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTE4LDYgKzExOSw4IEBA
IHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2kKICNlbmRpZgogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMg
YWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdOworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZUNyZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAgKyAoTlNTZXQgKilhbGxXZWJzaXRlRGF0YVR5cGVzCiAgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5TU2V0ICphbGxXZWJz
aXRlRGF0YVR5cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAg
YWxsV2Vic2l0ZURhdGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tX
ZWJzaXRlRGF0YVR5cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdL
V2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlQ29va2llcywgV0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0
YVR5cGVMb2NhbFN0b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBX
S1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcyBdXTsKKyAgICAgICAgYWxsV2Vic2l0ZURh
dGFUeXBlcyA9IFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFsgV0tXZWJzaXRlRGF0YVR5
cGVEaXNrQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlTWVtb3J5Q2FjaGUsIFdLV2Vic2l0ZURhdGFU
eXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdLV2Vic2l0ZURhdGFUeXBlQ29va2llcywg
V0tXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0
b3JhZ2UsIFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzLCBXS1dlYnNpdGVEYXRh
VHlwZVdlYlNRTERhdGFiYXNlcywgV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBdXTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NSArMTU1LDEzIEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAg
ICAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0
YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7
CisgICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMuYWRkKG9yaWdpbik7CisKK30KKwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmgJKHJldmlzaW9uIDIxNzc3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3
IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgdm9pZCBhZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0
TmFtZSk7CiAjZW5kaWYKKyAgICB2b2lkIGFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IHR5cGVzOwpAQCAtNjgsNyArNjksOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNv
cmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEhhc2hTZXQ8U3RyaW5n
PiBwbHVnaW5EYXRhSG9zdE5hbWVzOwogI2VuZGlmCi0gICAgCisgICAgSGFzaFNldDxTdHJpbmc+
IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CisKICAgICBib29sIG1hdGNoZXNUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKCk7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2
aXNpb24gMjE3Nzc2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDEyIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblMKICAgICAgICAgICAgIH0KICNl
bmRpZgogCisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHdlYnNpdGVEYXRhLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtX3dl
YnNpdGVEYXRhUmVjb3Jkcy5hZGQob3JpZ2luLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZWNvcmQuYWRk
T3JpZ2luV2l0aENyZWRlbnRpYWwob3JpZ2luKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgY2FsbElmTmVlZGVkKCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ0LDYgKzEy
NDQsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcgogICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0
aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChXZWJzaXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9
CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhD
cmVkZW50aWFscyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7CisgICAg
fQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKQEAgLTEyNTYs
NiArMTI2MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFNlc3NpCiAK
ICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuZW1w
dHkoKTsKICAgICB9CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcykKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
Nzc3NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTA2LTA1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBX
ZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wMyAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEFkZCBjb250ZXh0bWFu
YWdlciB0byBkaXNhYmxlIGxvZ2dpbmcgZm9yIGEgYmxvY2sKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMTc3NzYpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMz
MCw2ICsyMzMwLDEwIEBAIHVuc2lnbmVkIFRlc3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW4K
ICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKK3sKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjE3Nzc2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNiArMTc2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcygpOwogICAgIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4g
Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmKTsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRD
b25maWd1cmF0aW9uKCkgY29uc3Q7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMjE3Nzc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDEsNiArMTEwMSwxMSBA
QCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIikpIHsKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjE3
Nzc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw0ICsxNjM4LDEyIEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWwKICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShw
YWdlLCBtZXNzYWdlTmFtZS5nZXQoKSwgZmlsZVVSTHMuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkp
OworICAgIAorICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5n
ZXQoKSwgbnVsbHB0cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHJldmlz
aW9uIDIxNzc3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNiArMzc4LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCisgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMjE3Nzc2KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjgwLDQgKzI4MCw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAKICAg
ICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisKKyAgICB2b2lkIHJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpOwogfTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDIxNzc3NikKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjAwLDQgKzIwMCwxMSBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6
aW1hZ2VDb3VudEluR2VuCiAgICAgcmV0dXJuIGltYWdlc0FycmF5LmNvdW50OwogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworI2lmIFdL
X0FQSV9FTkFCTEVECisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0
YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7IH1dOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjE3Nzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNhdGlvbiBk
YXRhIHRocm91Z2ggdGhlIFdlYnNpdGUgZGF0YSBzdG9yZSBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyMTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1
dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0wNi0wNCAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQZXJjZW50YWdlcyBhcmUgY2FsY3VsYXRl
ZCB3cm9uZyBpbiBTVkcgdHJhbnNmb3JtIENTUyBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCShyZXZpc2lvbiAyMTc3NzYpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29s
b3JzLWxpdmUtdXBkYXQKIGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRl
LWluLXN1YmZyYW1lcy5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhL21xLW1vbm9jaHJvbWUtbGl2
ZS11cGRhdGUuaHRtbCBbIFNraXAgXQogZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90
aW9uLWxpdmUtdXBkYXRlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1h
dXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sIFsgU2tpcCBdCiAKICMgQXBwbGVQYXkgaXMgb25s
eSBhdmFpbGFibGUgb24gaU9TIChncmVhdGVyIHRoYW4gaU9TIDEwKSBhbmQgbWFjT1MgKGdyZWF0
ZXIgdGhhbiBtYWNPUyAxMC4xMikgYW5kIG9ubHkgZm9yIFdlYktpdDIuCiBodHRwL3Rlc3RzL3Nz
bC9hcHBsZXBheS8gWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRl
bnRpYWxzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK21haW4gZnJhbWUgLSBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitm
cmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAt
IFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJzdC1wdworZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCisxMjcuMC4wLjE6
ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0
aCBzZWNvbmQ6c2Vjb25kLXB3CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4t
LT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAi
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1l
CittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3JlZGVudGlhbHMsIGJ5IGNoZWNraW5nIHRoYXQg
d2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uCitjaGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxs
eSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxs
IGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJj
ZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2Ug
Zm9yIGl0LgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmlyc3QvZmlyc3QtcHcuCitUaGUg
c2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQg
d2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2
ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25k
LXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBmaXJzdCBwYXNzd29yZDog
Zmlyc3QtcHcKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEt
LT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBzZWNvbmQgcGFzc3dvcmQ6
IHNlY29uZC1wdwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1
dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVt
b3ZlLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImZpcnN0Iik7
CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJmaXJzdC1wdyIpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBmaXJzdEZyYW1l
TG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJzZWNvbmQiKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJzZWNvbmQtcHciKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAgdmFyIGZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUuc2V0QXR0
cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3By
b3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIs
ICJzZWNvbmRGcmFtZUxvYWRlZCgpIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChm
cmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgYXJl
IGFibGUgdG8gcmVtb3ZlIGNyZWRlbnRpYWxzLCBieSBjaGVja2luZyB0aGF0IHdlIGdldCBhbiBh
dXRoZW50aWNhdG9uLjxicj4KK2NoYWxsZW5nZSBmb3IgYSBwYXRoIHdlIG5vcm1hbGx5IHdvdWxk
IG5vdCBnZXQgYSBjaGFsbGVuZ2UgZm9yLCBhZnRlciBoYXZpbmcgcmVtb3ZlZCBhbGwgY3JlZGVu
dGlhbHMuPGJyPgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMv
cHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9y
IGl0Ljxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZpcnN0L2ZpcnN0LXB3Ljxicj4K
K1RoZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3QgZnJhbWUs
IGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBjcmVkZW50aWFs
cyBoYXZlIGJlZW4gZGVsZXRlZC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNv
bmQvc2Vjb25kLXB3Ljxicj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291
cmNlLnBocCIgb25sb2FkPSJmaXJzdEZyYW1lTG9hZGVkKCk7Ij48L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMJKHJldmlzaW9uIDIxNzc3NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQCBodHRw
L3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WCiBmYXN0L3Zpc3VhbC12aWV3cG9y
dC9ydWJiZXJiYW5kaW5nLXZpZXdwb3J0LXJlY3RzLmh0bWwgWyBQYXNzIF0KIGZhc3QvdmlzdWFs
LXZpZXdwb3J0L3J1YmJlcmJhbmRpbmctdmlld3BvcnQtcmVjdHMtaGVhZGVyLWZvb3Rlci5odG1s
ICBbIFBhc3MgXQogCitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVu
dGlhbHMuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312165</attachid>
            <date>2017-06-06 23:35:31 -0700</date>
            <delta_ts>2017-06-07 01:24:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170607083529.patch</filename>
            <type>text/plain</type>
            <size>28466</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA0ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE2LTEyLTA4ICBCYWJhayBT
aGFmaWVpICA8YnNoYWZpZWlAYXBwbGUuY29tPgogCiAgICAgICAgIE1lcmdlIHIyMDk0MTUuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
U3RvcmFnZS5oCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IENyZWRlbnRpYWwm
LCBjb25zdCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8g
YSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVk
LgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFVSTCYpOwogCisgICAg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBvcmlnaW5zV2l0aENyZWRlbnRpYWxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW5zV2l0aENyZWRlbnRpYWxzOyB9CisKIHByaXZhdGU6CiAgICAgSGFzaE1h
cDxQcm90ZWN0aW9uU3BhY2UsIENyZWRlbnRpYWw+IG1fcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50
aWFsTWFwOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAxNy0wNi0wNCAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9m
IGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBw
b3J0IHRvIHJlbW92ZSBhbmQgZmV0Y2ggY3JlZGVudGlhbCBkYXRhIHRocm91Z2ggdGhlIFdlYnNp
dGUgZGF0YSBzdG9yZSBBUEkuCisgICAgICAgIENyZWRlbnRpYWwgZGF0YSBpcyByZW1vdmVkIGFu
ZCBmZXRjaGVkIGZyb20gYm90aCB0aGUgbmV0d29yayBwcm9jZXNzIGFuZCB3ZWIgcHJvY2Vzcy4K
KyAgICAgICAgQXV0aGVudGljYXRpb24gZGF0YSBzdG9yZWQgaW4gdGhlIGtleWNoYWluIHdpbGwg
bm90IGJlIGNsZWFyZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmg6
CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAgICAgKGRh
dGFUeXBlc1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorCiAy
MDE2LTEyLTEyICBNYXR0aGV3IEhhbnNvbiAgPG1hdHRoZXdfaGFuc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNZXJnZSByMjA5NDg1LiByZGFyOi8vcHJvYmxlbS8yOTUwMjA1NQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjE1NTU2KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzIsNiArMzcyLDExIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2UKICAgICAgICAgICAgIGdldEhvc3RuYW1lc1dp
dGhDb29raWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93
ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CiAgICAgfQogCisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAg
ICAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5vcmlnaW5z
V2l0aENyZWRlbnRpYWxzID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMoKTsK
KyAgICB9CisKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkRpc2tDYWNoZSkpIHsKICAgICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25J
RCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0Fn
Z3JlZ2F0b3IpXShhdXRvIGVudHJpZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwpA
QCAtMzkzLDYgKzM5OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YShTCiAgICAgICAgICAgICBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBtb2RpZmllZFNpbmNlKTsKICAgICB9CiAKKyAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgeworICAgICAg
ICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpLT5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICB9CisgICAg
CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSB7CiAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkRpZERlbGV0ZVdlYnNpdGVEYXRhKGNhbGxiYWNrSUQpLCAwKTsKICAgICB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGEuY3BwCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHZv
aWQgV2Vic2l0ZURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGUKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICAgICBlbmNvZGVyIDw8IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwog
I2VuZGlmCisgICAgZW5jb2RlciA8PCBvcmlnaW5zV2l0aENyZWRlbnRpYWxzOwogfQogCiBib29s
IFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJzaXRlRGF0YSYg
cmVzdWx0KQpAQCAtNzQsNyArNzUsOCBAQCBib29sIFdlYnNpdGVEYXRhOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdE5hbWVzV2l0aFBs
dWdpbkRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLQorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCShyZXZpc2lvbiAyMTU1NTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgIEhhc2hT
ZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRoUGx1Z2luRGF0YTsKICNlbmRpZgogCisgICAgSGFzaFNl
dDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CisKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwg
V2Vic2l0ZURhdGEmKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAg
IE1lZGlhRGV2aWNlSWRlbnRpZmllciA9IDEgPDwgMTIsCiAjZW5kaWYKICAgICBXZWJzaXRlRGF0
YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gMSA8PCAxMywKKyAgICBDcmVkZW50aWFscyA9
IDEgPDwgMTQsCiB9OwogCiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkocmV2aXNpb24gMjE1
NTU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIE5TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWEKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURh
dGFUeXBlSFNUU0NhY2hlID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUiOwogTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzID0g
QCJfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzIjsKIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IEAiX1dL
V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyI7CitOU1N0cmluZyAqIGNvbnN0
IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVDcmVk
ZW50aWFscyI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNp
dGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEiOwpA
QCAtOTEsNiArOTIsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0
CiAjZW5kaWYKICAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpA
IlJlc291cmNlIExvYWQgU3RhdGlzdGljcyJdOworICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXSkKKyAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVudHNK
b2luZWRCeVN0cmluZzpAIiwgIl07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVy
bmFsLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDggQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVAogI2Vu
ZGlmCiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotCisgICAgaWYg
KFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHM7CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTE4LDYgKzExOSw4IEBAIHN0YXRpYyBp
bmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2kKICNlbmRpZgogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2Vic2l0ZURhdGFUeXBlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0
Ol9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdOworICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKQorICAg
ICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVk
ZW50aWFsc107CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAkocmV2aXNpb24gMjE1NTU2KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0
IF9XS1dlYnNpdGVEYXQKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRh
VHlwZU1lZGlhS2V5cyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKTsK
IFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxk
UmVjZW50U2VhcmNoZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkp
OwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CitXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFs
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IAogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAkocmV2
aXNpb24gMjE1NTU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDQgKzEwNCwxMSBAQCB2
b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRQbHVnaW5EYXRhSG9zCiB9CiAjZW5kaWYKIAordm9p
ZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5n
JiBvcmlnaW4pCit7CisgICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsK
KyAgICAKKyAgICBvcmlnaW5zV2l0aENyZWRlbnRpYWxzLmFkZChvcmlnaW4pOworfQorICAgIAog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBhZGRQbHVnaW5EYXRhSG9zdE5hbWUo
Y29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CiAjZW5kaWYKKyAgICB2b2lkIGFkZE9yaWdpbldpdGhD
cmVkZW50aWFsKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAg
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzOwpAQCAtNjgsNiArNjksNyBAQCBzdHJ1
Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBwbHVnaW5EYXRhSG9zdE5hbWVzOwogI2VuZGlmCisgICAgSGFz
aFNldDxTdHJpbmc+IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMTU1NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
NCw2ICsyMjQsMTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uUwog
ICAgICAgICAgICAgfQogI2VuZGlmCiAKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDog
d2Vic2l0ZURhdGEub3JpZ2luc1dpdGhDcmVkZW50aWFscykgeworICAgICAgICAgICAgICAgIGF1
dG8mIHJlY29yZCA9IG1fd2Vic2l0ZURhdGFSZWNvcmRzLmFkZChvcmlnaW4sIFdlYnNpdGVEYXRh
UmVjb3JkIHsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIHJlY29yZC5hZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChvcmlnaW4pOworICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICBjYWxsSWZOZWVkZWQoKTsKICAgICAgICAgfQogCkBAIC00OTAs
NiArNDk2LDkgQEAgc3RhdGljIFByb2Nlc3NBY2Nlc3NUeXBlIGNvbXB1dGVOZXR3b3JrUAogICAg
IGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQogICAg
ICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9j
ZXNzQWNjZXNzVHlwZTo6TGF1bmNoKTsKIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0g
c3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwor
CiAgICAgcmV0dXJuIHByb2Nlc3NBY2Nlc3NUeXBlOwogfQogCkBAIC01MDIsNiArNTExLDkgQEAg
c3RhdGljIFByb2Nlc3NBY2Nlc3NUeXBlIGNvbXB1dGVXZWJQcm9jZQogICAgIGlmIChkYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSkpCiAgICAgICAgIHByb2Nl
c3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NU
eXBlOjpPbmx5SWZMYXVuY2hlZCk7CiAKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKQorICAgICAgICBwcm9jZXNzQWNjZXNzVHlwZSA9IHN0
ZDo6bWF4KHByb2Nlc3NBY2Nlc3NUeXBlLCBQcm9jZXNzQWNjZXNzVHlwZTo6T25seUlmTGF1bmNo
ZWQpOworCiAgICAgcmV0dXJuIHByb2Nlc3NBY2Nlc3NUeXBlOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIxNTU1NikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMTksNiArMTIxOSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoV2Vi
Q29yCiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigp
Lm9yaWdpbnNXaXRoQ2FjaGUoc2Vzc2lvbklEKSkKICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCAw
IH0pOwogICAgIH0KKworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAgICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICB3ZWJzaXRlRGF0YS5v
cmlnaW5zV2l0aENyZWRlbnRpYWxzID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFnZSgpLm9yaWdpbnNXaXRoQ3JlZGVudGlh
bHMoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoU2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFU
eXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
KQpAQCAtMTIzMSw2ICsxMjM2LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGEoU2Vzc2kKIAogICAgICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpzaW5n
bGV0b24oKS5lbXB0eSgpOwogICAgIH0KKworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAgICAgIGlmIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkt
PmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIH0KIH0KIAogdm9p
ZCBXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBl
cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFz
KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjE3ODc0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTctMDYtMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFN1cHBvcnQgcmVtb3ZhbCBvZiBhdXRoZW50aWNhdGlvbiBkYXRhIHRo
cm91Z2ggdGhlIFdlYnNpdGUgZGF0YSBzdG9yZSBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyk6CisK
IDIwMTYtMTItMTIgIE1hdHRoZXcgSGFuc29uICA8bWF0dGhld19oYW5zb25AYXBwbGUuY29tPgog
CiAgICAgICAgIE1lcmdlIHIyMDk0ODUuIHJkYXI6Ly9wcm9ibGVtLzI5NTAyMDU1CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMTU1NTYpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0Nyw2ICsxNDcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZERvd25sb2Fk
VW5kaXNwbGF5YWJsZU1JTUVUeXBlcyhib29sIHZhbHVlKSB7IG1fc2hvdWxkRG93bmxvYWRVbmRp
c3BsYXlhYmxlTUlNRVR5cGVzID0gdmFsdWU7IH0KIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCk7CisgICAgCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oV0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4g
Z2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNvbnN0OwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NzUsNiArODc1LDEwIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIp
KSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHMoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NTAsNCArOTU0LDEw
IEBAIHZvaWQgVGVzdEludm9jYXRpb246Om5vdGlmeURvd25sb2FkRG9uZSgKICAgICBXS1BhZ2VQ
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjayIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIG5vdGlmeURvd25sb2FkRG9uZSgpOwogCisgICAgdm9pZCBk
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9p
ZCBkdW1wUmVzdWx0cygpOwogICAgIHN0YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRv
U3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZh
bHNlKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyMTU1NTYpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM3LDYgKzIzNywxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHNDYWxsYmFjayIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
Ik5vdGlmeURvd25sb2FkRG9uZSIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+bm90aWZ5RG9u
ZSgpOwogICAgICAgICByZXR1cm47CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIxNTU1NikKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyOSw2ICs2MjksNyBAQCBlbnVtIHsKICAgICBXaWxsRW5kU3dpcGVD
YWxsYmFja0lELAogICAgIERpZEVuZFN3aXBlQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVTd2lw
ZVNuYXBzaG90Q2FsbGJhY2tJRCwKKyAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHND
YWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAwCiB9OwogCkBAIC0x
Mjc3LDQgKzEyNzgsMTkgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2FtZXBhZEJ1dHRvblZh
bAogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRl
c3RSdW5uZXJDYWxsYmFjayhEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lE
LCBjYWxsYmFjayk7CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdl
Qm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkpOworICAgIAorICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxi
YWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CShyZXZpc2lvbiAyMTU1NTYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDYgKzM0NCw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1vY2tHYW1lcGFkQXhpc1ZhbHVlKHVuc2lnbmVkIGluZGV4LCB1bnNp
Z25lZCBheGlzSW5kZXgsIGRvdWJsZSB2YWx1ZSk7CiAgICAgdm9pZCBzZXRNb2NrR2FtZXBhZEJ1
dHRvblZhbHVlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBidXR0b25JbmRleCwgZG91YmxlIHZh
bHVlKTsKIAorICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYp
OworICAgIHZvaWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7
CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwJKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
NCw0ICsyNDQsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRNb2NrR2Ft
ZXBhZEJ1dHRvblZhbHVlKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgYnV0dG9u
SW5kZXgsIGRvdWJsZSB2YWx1ZSk7CiAgICAgdm9pZCBjb25uZWN0TW9ja0dhbWVwYWQodW5zaWdu
ZWQgbG9uZyBpbmRleCk7CiAgICAgdm9pZCBkaXNjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQg
bG9uZyBpbmRleCk7CisKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwog
fTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDIxNTU1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVj
b3JkUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgpAQCAt
MTc4LDQgKzE3OSwxMiBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2Vu
CiAgICAgcmV0dXJuIGltYWdlc0FycmF5LmNvdW50OwogfQogCit2b2lkIFRlc3RDb250cm9sbGVy
OjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIGF1dG8gdHlwZXMgPSBhZG9w
dE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpfV0tXZWJzaXRlRGF0YVR5cGVDcmVk
ZW50aWFscywgbmlsXSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKyAgICB9XTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU1NTYpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ny0wNi0wNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0
ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDE2LTEyLTAxICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW01vZGVybiBNZWRpYSBDb250cm9sc10gRmFkZSBjb250cm9scyBpbiB3aGVuIGVudGVy
aW5nIGFuZCBleGl0aW5nIGZ1bGxzY3JlZW4KSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNp
b24gMjE1NTU2KQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5
KQpAQCAtNzUsNiArNzUsNyBAQCBmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVw
ZGF0CiBmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0ZS1pbi1zdWJmcmFt
ZXMuaHRtbCBbIFNraXAgXQogZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLmh0
bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVw
ZGF0ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUt
Y3JlZGVudGlhbHMuaHRtbCBbIFNraXAgXQogCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2lj
LWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlh
bHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK21haW4gZnJh
bWUgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkQ29t
bWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4i
IC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJzdC1wdworZnJhbWUg
IjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFt
ZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5k
bGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExv
YWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKKzEyNy4wLjAuMTo4MDAwIC0gZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIHNlY29uZDpzZWNvbmQt
cHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRDb21taXRM
b2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUxLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3JlZGVudGlhbHMs
IGJ5IGNoZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uCitjaGFsbGVuZ2UgZm9y
IGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZvciwgYWZ0ZXIg
aGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBp
cyAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3Vs
ZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmly
c3QvZmlyc3QtcHcuCitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhl
IGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1
c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQg
d2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2Vy
OiBmaXJzdCBwYXNzd29yZDogZmlyc3QtcHcKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2Vy
OiBzZWNvbmQgcGFzc3dvcmQ6IHNlY29uZC1wdwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRl
bnRpYWxzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9u
VXNlcm5hbWUoImZpcnN0Iik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3
b3JkKCJmaXJzdC1wdyIpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitm
dW5jdGlvbiBmaXJzdEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJzZWNvbmQi
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJzZWNvbmQt
cHciKTsKKyAgICAgICAgdGVzdFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMocmVt
b3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2spOworICAgIH0KK30KKworZnVuY3Rpb24gcmVtb3ZlZENy
ZWRlbnRpYWxzQ2FsbGJhY2soKQoreworICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIik7
CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAic2Vjb25kRnJhbWVMb2FkZWQoKSIp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBz
ZWNvbmRGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGFyZSBhYmxlIHRvIHJlbW92ZSBjcmVkZW50
aWFscywgYnkgY2hlY2tpbmcgdGhhdCB3ZSBnZXQgYW4gYXV0aGVudGljYXRvbi48YnI+CitjaGFs
bGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdlIGZv
ciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLjxicj4KK1RoZSBmaXJzdCBm
cmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAs
IGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC48YnI+CitJdCB3aWxsIGJlIGF1
dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy48YnI+CitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0
aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNo
YWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuPGJy
PgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy48YnI+Cis8aWZy
YW1lIHNyYz0icmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiIG9ubG9hZD0iZmlyc3RG
cmFtZUxvYWRlZCgpOyI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMTU1
NTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDggQEAgZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xv
cnMtbGl2ZS11cGRhdAogZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLmh0bWwg
WyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0
ZS5odG1sIFsgUGFzcyBdCiAKK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1j
cmVkZW50aWFscy5odG1sIFsgUGFzcyBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312167</attachid>
            <date>2017-06-07 01:24:36 -0700</date>
            <delta_ts>2017-06-07 01:39:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170607102622.patch</filename>
            <type>text/plain</type>
            <size>28735</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBhIGRlZGljYXRlZCBub2Rl
IGZsYWcgdG8gaWRlbnRpZnkgYSBEb2N1bWVudCBub2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCShyZXZpc2lvbiAy
MTc4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENyZWRlbnRpYWwmLCBjb25z
dCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8gYSBrbm93
biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYp
OwogCisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBvcmlnaW5zV2l0aENyZWRlbnRpYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW5zV2l0aENyZWRlbnRpYWxzOyB9CisKIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nIC8qIHBhcnRpdGlvbk5hbWUgKi8sIFByb3RlY3Rp
b25TcGFjZT4sIENyZWRlbnRpYWw+IG1fcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0wNi0wNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRp
Y2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjk1MjI1NzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50
aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3Jl
ZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5kIGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3Jr
IHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgorICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0
b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBub3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAg
IChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNp
dGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRo
Q3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIwMTctMDYtMDYgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBidWlsZGluZyB3aXRoIHRoZSBtYWNPUyAxMC4x
MyBBcHBsZSBJbnRlcm5hbCBTREsgd2hlbiB0YXJnZXRpbmcgbWFjT1MgMTAuMTIuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MCw2ICszOTAsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZQogICAgICAgICAgICAgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICB9CiAKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewor
ICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygp
OworICAgIH0KKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoc2Vzc2lv
bklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNr
QWdncmVnYXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7
CkBAIC00MTEsNiArNDE2LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhKFMKICAgICAgICAgICAgIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2luY2UpOwogICAgIH0KIAorICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAg
ICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIH0KKyAg
ICAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNhbGxiYWNrSURdIHsKICAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwogICAgIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YS5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAg
dm9pZCBXZWJzaXRlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIGVuY29kZXIgPDwgaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7
CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CiB9CiAKIGJv
b2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRh
JiByZXN1bHQpCkBAIC03NCw3ICs3NSw4IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0TmFtZXNXaXRo
UGx1Z2luRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luc1dpdGhDcmVkZW50aWFscykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgJKHJldmlzaW9uIDIxNzg3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgSGFz
aFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCiAKKyAgICBIYXNo
U2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKKwogICAgIHZvaWQgZW5jb2RlKElQ
Qzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXIm
LCBXZWJzaXRlRGF0YSYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAg
ICAgTWVkaWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMiwKICNlbmRpZgogICAgIFdlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSAxIDw8IDEzLAorICAgIENyZWRlbnRpYWxz
ID0gMSA8PCAxNCwKIH07CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCShyZXZpc2lvbiAy
MTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgTlNTdHJpbmcgKiBj
b25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVIU1RTQ2FjaGUgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSI7CiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMiOwogTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gQCJf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIjsKK05TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vi
c2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7
CkBAIC05MSw2ICs5Miw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNT
ZXQKICNlbmRpZgogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAiUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFp
bnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdKQorICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAiQ3JlZGVudGlhbHMiXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29tcG9uZW50
c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjE3ODc1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsOCBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUCiAj
ZW5kaWYKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0
ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OldlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0KKyAgICBp
ZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC0xMTgsNiArMTE5LDggQEAgc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaQogI2VuZGlmCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc107CisgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisg
ICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURh
dGFUeXBlTWVkaWFLZXlzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmll
bGRSZWNlbnRTZWFyY2hlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRp
YWxzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNSArMTU1LDEyIEBA
IFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAgICAKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRk
T3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgdHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMuYWRkKG9yaWdpbik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCShyZXZpc2lv
biAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBzdHJ1Y3QgV2Vi
c2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZv
aWQgYWRkUGx1Z2luRGF0YUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOwogI2VuZGlm
CisgICAgdm9pZCBhZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmKTsKIAogICAg
IFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
czsKQEAgLTY4LDcgKzY5LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBIYXNoU2V0PFN0cmluZz4gcGx1Z2luRGF0YUhv
c3ROYW1lczsKICNlbmRpZgotICAgIAorICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zV2l0aENy
ZWRlbnRpYWxzOworCiAgICAgYm9vbCBtYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIxNzg3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1MiwxMiBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmZldGNoRGF0YShPcHRpb25TCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAorICAgICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB3ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRp
YWxzKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJlY29y
ZHMuYWRkKG9yaWdpbiwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmVjb3JkLmFkZE9yaWdpbldpdGhDcmVk
ZW50aWFsKG9yaWdpbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhbGxJZk5lZWRl
ZCgpOwogICAgICAgICB9CiAKQEAgLTU1MCw2ICs1NTYsOSBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vz
c1R5cGUgY29tcHV0ZU5ldHdvcmtQCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkhTVFNDYWNoZSkpCiAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjpt
YXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwogCisgICAg
aWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkKKyAg
ICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJv
Y2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7CisKICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vzc1R5cGU7
CiB9CiAKQEAgLTU2Miw2ICs1NzEsOSBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0
ZVdlYlByb2NlCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlKSkKICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNz
QWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKIAorICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisgICAg
ICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nl
c3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZCk7CisKICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vz
c1R5cGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjE3ODc1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0NCw2ICsxMjQ0LDExIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3IKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4g
OiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhDYWNoZShzZXNzaW9uSUQpKQog
ICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5
IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbiksIFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQorCisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAg
ICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgICAgIHdlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgIH0KIH0KIAogdm9pZCBXZWJQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCkBAIC0xMjU2LDYgKzEyNjEsMTEgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaQogCiAgICAgICAgIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmVtcHR5KCk7CiAgICAgfQorCisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
cykpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRl
bnRpYWxzKCk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wNi0wNiAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFs
IG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQ
SS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpIGhpdCBpbiBj
b252ZXJ0RW51bWVyYXRpb25Ub0pTPFdlYkNvcmU6Okhpc3Rvcnk6OlNjcm9sbFJlc3RvcmF0aW9u
PigpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lv
biAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVu
UGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmlsZVVSTHMg
PSBmaWxlVVJMczsgfQogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwotICAg
IAorCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKwogcHJpdmF0ZToK
ICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25m
aWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYpOwogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oKSBj
b25zdDsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwMSw2ICsxMTAxLDExIEBAIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkucmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtMTE3NSw0ICsxMTgwLDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246
Om5vdGlmeURvd25sb2FkRG9uZSgKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxE
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKTsKKyAgICBXS1BhZ2VQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJl
dmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5v
dGlmeURvd25sb2FkRG9uZSgpOwogCisgICAgdm9pZCBkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHMoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVzdWx0cygpOwogICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0
VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZhbHNlKTsKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCwx
MSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKSB7
CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
c0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIk5vdGlmeURvd25sb2FkRG9uZSIpKSB7
CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+bm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Myw2ICs2
NDMsNyBAQCBlbnVtIHsKICAgICBEaWRSZW1vdmVTd2lwZVNuYXBzaG90Q2FsbGJhY2tJRCwKICAg
ICBTdGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFja0lELAogICAgIFN0YXRpc3Rp
Y3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFja0lELAorICAgIERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAK
IH07CiAKQEAgLTE2MzgsNCArMTYzOSwxOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5l
bEZpbGVzKEpTVmFsCiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5h
bWUuZ2V0KCksIGZpbGVVUkxzLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRl
c3RSdW5uZXJDYWxsYmFjayhEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lE
LCBjYWxsYmFjayk7CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdl
Qm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkpOworICAgIAorICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxi
YWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDYgKzM3OCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAorICAgIHZvaWQgcmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZFJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CisKIHByaXZhdGU6CiAgICAgVGVz
dFJ1bm5lcigpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlzaW9uIDIx
Nzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw0ICsyODAsNiBAQCBpbnRlcmZh
Y2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRXZWJSVENMZWdhY3lBUElFbmFibGVkKGJvb2xl
YW4gdmFsdWUpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworCisgICAg
dm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKIH07CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCShyZXZp
c2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9s
bGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLmg+CkBAIC0yMDAsNCArMjAxLDEyIEBAIHVuc2lnbmVkIFRlc3RDb250
cm9sbGVyOjppbWFnZUNvdW50SW5HZW4KICAgICByZXR1cm4gaW1hZ2VzQXJyYXkuY291bnQ7CiB9
CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7
CisgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzLCBuaWxdKTsKKyAgICBbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5n
ZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVy
Ol4oKSB7CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFscygpOworICAgIH1dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIxNzg3NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVudGljYXRpb24g
ZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1h
dXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDYtMDYgIE1hdHQgTGV3aXMgIDxqbGV3
aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWQgd29ya2Vycy9ib21iLmh0bWwgYXMgZmxh
a3kgb24gaU9TLgpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMTc4NzUpCisrKyBM
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3
IEBAIGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXQKIGZhc3QvbWVkaWEv
bXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLWluLXN1YmZyYW1lcy5odG1sIFsgU2tpcCBd
CiBmYXN0L21lZGlhL21xLW1vbm9jaHJvbWUtbGl2ZS11cGRhdGUuaHRtbCBbIFNraXAgXQogZmFz
dC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1s
IFsgU2tpcCBdCiAKICMgQXBwbGVQYXkgaXMgb25seSBhdmFpbGFibGUgb24gaU9TIChncmVhdGVy
IHRoYW4gaU9TIDEwKSBhbmQgbWFjT1MgKGdyZWF0ZXIgdGhhbiBtYWNPUyAxMC4xMikgYW5kIG9u
bHkgZm9yIFdlYktpdDIuCiBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBTa2lwIF0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50
aWFscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1v
dmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKK21haW4gZnJhbWUgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZy
YW1lIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFt
ZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJz
dC1wdworZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1p
dExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAt
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4gZnJh
bWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAt
IGRpZEZpbmlzaExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUx
LS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKKzEyNy4wLjAuMTo4MDAw
IC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIHNl
Y29uZDpzZWNvbmQtcHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIg
LSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MS0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoTG9h
ZEZvckZyYW1lCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUg
Y3JlZGVudGlhbHMsIGJ5IGNoZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uCitj
aGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxlbmdl
IGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0IGZy
YW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwg
YW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LgorSXQgd2lsbCBiZSBhdXRob3Jp
emVkIHdpdGggZmlyc3QvZmlyc3QtcHcuCitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVu
dGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBm
b3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxsIGJl
IGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1l
OiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGlj
YXRlZCBhcyB1c2VyOiBmaXJzdCBwYXNzd29yZDogZmlyc3QtcHcKKworLS0tLS0tLS0KK0ZyYW1l
OiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGlj
YXRlZCBhcyB1c2VyOiBzZWNvbmQgcGFzc3dvcmQ6IHNlY29uZC1wdwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgt
cmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0SGFu
ZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEF1
dGhlbnRpY2F0aW9uVXNlcm5hbWUoImZpcnN0Iik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50
aWNhdGlvblBhc3N3b3JkKCJmaXJzdC1wdyIpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitmdW5jdGlvbiBmaXJzdEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJu
YW1lKCJzZWNvbmQiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3
b3JkKCJzZWNvbmQtcHciKTsKKyAgICAgICAgdGVzdFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMocmVtb3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2spOworICAgIH0KK30KKworZnVuY3Rp
b24gcmVtb3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2soKQoreworICAgIHZhciBmcmFtZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3Jj
IiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVz
b3VyY2UucGhwIik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAic2Vjb25kRnJh
bWVMb2FkZWQoKSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworfQor
CitmdW5jdGlvbiBzZWNvbmRGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGFyZSBhYmxlIHRvIHJl
bW92ZSBjcmVkZW50aWFscywgYnkgY2hlY2tpbmcgdGhhdCB3ZSBnZXQgYW4gYXV0aGVudGljYXRv
bi48YnI+CitjaGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEg
Y2hhbGxlbmdlIGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLjxicj4K
K1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1y
ZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC48YnI+CitJ
dCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy48YnI+CitUaGUgc2Vjb25k
IGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hv
dWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVu
IGRlbGV0ZWQuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1w
dy48YnI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiIG9u
bG9hZD0iZmlyc3RGcmFtZUxvYWRlZCgpOyI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAgaHR0cC90ZXN0cy9zc2wv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVgogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFu
ZGluZy12aWV3cG9ydC1yZWN0cy5odG1sIFsgUGFzcyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9y
dWJiZXJiYW5kaW5nLXZpZXdwb3J0LXJlY3RzLWhlYWRlci1mb290ZXIuaHRtbCAgWyBQYXNzIF0K
IAoraHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwg
WyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxh
dGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312168</attachid>
            <date>2017-06-07 01:39:38 -0700</date>
            <delta_ts>2017-06-07 01:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170607104123.patch</filename>
            <type>text/plain</type>
            <size>28778</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBhIGRlZGljYXRlZCBub2Rl
IGZsYWcgdG8gaWRlbnRpZnkgYSBEb2N1bWVudCBub2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCShyZXZpc2lvbiAy
MTc4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENyZWRlbnRpYWwmLCBjb25z
dCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8gYSBrbm93
biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYp
OwogCisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBvcmlnaW5zV2l0aENyZWRlbnRpYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW5zV2l0aENyZWRlbnRpYWxzOyB9CisKIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nIC8qIHBhcnRpdGlvbk5hbWUgKi8sIFByb3RlY3Rp
b25TcGFjZT4sIENyZWRlbnRpYWw+IG1fcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0wNi0wNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRp
Y2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjk1MjI1NzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50
aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3Jl
ZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5kIGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3Jr
IHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgorICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0
b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBub3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAg
IChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNp
dGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRo
Q3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIwMTctMDYtMDYgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBidWlsZGluZyB3aXRoIHRoZSBtYWNPUyAxMC4x
MyBBcHBsZSBJbnRlcm5hbCBTREsgd2hlbiB0YXJnZXRpbmcgbWFjT1MgMTAuMTIuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MCw2ICszOTAsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZQogICAgICAgICAgICAgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICB9CiAKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewor
ICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygp
OworICAgIH0KKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoc2Vzc2lv
bklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNr
QWdncmVnYXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7
CkBAIC00MTEsNiArNDE2LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhKFMKICAgICAgICAgICAgIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2luY2UpOwogICAgIH0KIAorICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAg
ICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIH0KKyAg
ICAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNhbGxiYWNrSURdIHsKICAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwogICAgIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YS5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAg
dm9pZCBXZWJzaXRlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIGVuY29kZXIgPDwgaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7
CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CiB9CiAKIGJv
b2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRh
JiByZXN1bHQpCkBAIC03NCw3ICs3NSw4IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0TmFtZXNXaXRo
UGx1Z2luRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luc1dpdGhDcmVkZW50aWFscykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgJKHJldmlzaW9uIDIxNzg3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgSGFz
aFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCiAKKyAgICBIYXNo
U2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKKwogICAgIHZvaWQgZW5jb2RlKElQ
Qzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXIm
LCBXZWJzaXRlRGF0YSYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAg
ICAgTWVkaWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMiwKICNlbmRpZgogICAgIFdlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSAxIDw8IDEzLAorICAgIENyZWRlbnRpYWxz
ID0gMSA8PCAxNCwKIH07CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCShyZXZpc2lvbiAy
MTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgTlNTdHJpbmcgKiBj
b25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVIU1RTQ2FjaGUgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSI7CiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMiOwogTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gQCJf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIjsKK05TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vi
c2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7
CkBAIC05MSw2ICs5Miw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNT
ZXQKICNlbmRpZgogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAiUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFp
bnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdKQorICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAiQ3JlZGVudGlhbHMiXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29tcG9uZW50
c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjE3ODc1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsOCBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUCiAj
ZW5kaWYKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0
ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OldlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0KKyAgICBp
ZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC0xMTgsNiArMTE5LDggQEAgc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaQogI2VuZGlmCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc107CisgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisg
ICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURh
dGFUeXBlTWVkaWFLZXlzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmll
bGRSZWNlbnRTZWFyY2hlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRp
YWxzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNSArMTU1LDEyIEBA
IFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAgICAKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRk
T3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgdHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMuYWRkKG9yaWdpbik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCShyZXZpc2lv
biAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBzdHJ1Y3QgV2Vi
c2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZv
aWQgYWRkUGx1Z2luRGF0YUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOwogI2VuZGlm
CisgICAgdm9pZCBhZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmKTsKIAogICAg
IFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
czsKQEAgLTY4LDcgKzY5LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBIYXNoU2V0PFN0cmluZz4gcGx1Z2luRGF0YUhv
c3ROYW1lczsKICNlbmRpZgotICAgIAorICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zV2l0aENy
ZWRlbnRpYWxzOworCiAgICAgYm9vbCBtYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIxNzg3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1MiwxMiBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmZldGNoRGF0YShPcHRpb25TCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAorICAgICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB3ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRp
YWxzKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJlY29y
ZHMuYWRkKG9yaWdpbiwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmVjb3JkLmFkZE9yaWdpbldpdGhDcmVk
ZW50aWFsKG9yaWdpbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhbGxJZk5lZWRl
ZCgpOwogICAgICAgICB9CiAKQEAgLTU1MCw2ICs1NTYsOSBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vz
c1R5cGUgY29tcHV0ZU5ldHdvcmtQCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkhTVFNDYWNoZSkpCiAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjpt
YXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwogCisgICAg
aWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkKKyAg
ICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJv
Y2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7CisKICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vzc1R5cGU7
CiB9CiAKQEAgLTU2Miw2ICs1NzEsOSBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0
ZVdlYlByb2NlCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlKSkKICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNz
QWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKIAorICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisgICAg
ICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nl
c3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZCk7CisKICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vz
c1R5cGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjE3ODc1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0NCw2ICsxMjQ0LDExIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3IKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4g
OiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhDYWNoZShzZXNzaW9uSUQpKQog
ICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5
IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbiksIFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQorCisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAg
ICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgICAgIHdlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgIH0KIH0KIAogdm9pZCBXZWJQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCkBAIC0xMjU2LDYgKzEyNjEsMTEgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaQogCiAgICAgICAgIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmVtcHR5KCk7CiAgICAgfQorCisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
cykpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRl
bnRpYWxzKCk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wNi0wNiAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFs
IG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQ
SS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpIGhpdCBpbiBj
b252ZXJ0RW51bWVyYXRpb25Ub0pTPFdlYkNvcmU6Okhpc3Rvcnk6OlNjcm9sbFJlc3RvcmF0aW9u
PigpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lv
biAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVu
UGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmlsZVVSTHMg
PSBmaWxlVVJMczsgfQogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwotICAg
IAorCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKKwogcHJpdmF0ZToK
ICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25m
aWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYpOwogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oKSBj
b25zdDsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwMSw2ICsxMTAxLDExIEBAIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkucmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtMTE3NSw0ICsxMTgwLDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246
Om5vdGlmeURvd25sb2FkRG9uZSgKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxE
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKTsKKyAgICBXS1BhZ2VQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJl
dmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5v
dGlmeURvd25sb2FkRG9uZSgpOwogCisgICAgdm9pZCBkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHMoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVzdWx0cygpOwogICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0
VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZhbHNlKTsKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCwx
MSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKSB7
CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
c0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIk5vdGlmeURvd25sb2FkRG9uZSIpKSB7
CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+bm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Myw2ICs2
NDMsNyBAQCBlbnVtIHsKICAgICBEaWRSZW1vdmVTd2lwZVNuYXBzaG90Q2FsbGJhY2tJRCwKICAg
ICBTdGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFja0lELAogICAgIFN0YXRpc3Rp
Y3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFja0lELAorICAgIERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAK
IH07CiAKQEAgLTE2MzgsNCArMTYzOSwxOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5l
bEZpbGVzKEpTVmFsCiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5h
bWUuZ2V0KCksIGZpbGVVUkxzLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRl
c3RSdW5uZXJDYWxsYmFjayhEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lE
LCBjYWxsYmFjayk7CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdl
Qm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodHJ1ZSkpOworICAgIAorICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxi
YWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDYgKzM3OCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAorICAgIHZvaWQgcmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZFJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CisKIHByaXZhdGU6CiAgICAgVGVz
dFJ1bm5lcigpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlzaW9uIDIx
Nzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw0ICsyODAsNiBAQCBpbnRlcmZh
Y2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRXZWJSVENMZWdhY3lBUElFbmFibGVkKGJvb2xl
YW4gdmFsdWUpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworCisgICAg
dm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKIH07Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tCShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZFBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmg+CkBAIC0yMDAsNCArMjAxLDE0IEBAIHVu
c2lnbmVkIFRlc3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW4KICAgICByZXR1cm4gaW1hZ2Vz
QXJyYXkuY291bnQ7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFscygpCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBhdXRvIHR5cGVzID0gYWRv
cHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6X1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHMsIG5pbF0pOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CisgICAgfV07
CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc4
NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxNy0wNi0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0
aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3Jl
ZGVudGlhbHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDE3LTA2LTA2ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+
CiAKICAgICAgICAgTWFya2VkIHdvcmtlcnMvYm9tYi5odG1sIGFzIGZsYWt5IG9uIGlPUy4KSW5k
ZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjE3ODc1KQorKysgTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBmYXN0L21lZGlh
L21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0CiBmYXN0L21lZGlhL21xLWludmVydGVkLWNv
bG9ycy1saXZlLXVwZGF0ZS1pbi1zdWJmcmFtZXMuaHRtbCBbIFNraXAgXQogZmFzdC9tZWRpYS9t
cS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWEvbXEtcHJl
ZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbCBbIFNraXAgXQogCiAj
IEFwcGxlUGF5IGlzIG9ubHkgYXZhaWxhYmxlIG9uIGlPUyAoZ3JlYXRlciB0aGFuIGlPUyAxMCkg
YW5kIG1hY09TIChncmVhdGVyIHRoYW4gbWFjT1MgMTAuMTIpIGFuZCBvbmx5IGZvciBXZWJLaXQy
LgogaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1h
dXRoLXJlbW92ZS1jcmVkZW50aWFscy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACittYWluIGZyYW1l
IC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZENvbW1p
dExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAt
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZQorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggZmlyc3Q6Zmlyc3QtcHcKK2ZyYW1lICI8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUK
K2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBzZWNvbmQ6c2Vjb25kLXB3
CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMS0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGNyZWRlbnRpYWxzLCBi
eSBjaGVja2luZyB0aGF0IHdlIGdldCBhbiBhdXRoZW50aWNhdG9uLgorY2hhbGxlbmdlIGZvciBh
IHBhdGggd2Ugbm9ybWFsbHkgd291bGQgbm90IGdldCBhIGNoYWxsZW5nZSBmb3IsIGFmdGVyIGhh
dmluZyByZW1vdmVkIGFsbCBjcmVkZW50aWFscy4KK1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMg
L2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQg
Z2V0IGEgY2hhbGxlbmdlIGZvciBpdC4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZpcnN0
L2ZpcnN0LXB3LgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGggaXMgaWRlbnRpY2FsIHRvIHRoZSBm
aXJzdCBmcmFtZSwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LCBiZWNhdXNl
IGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBkZWxldGVkLgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdp
dGggc2Vjb25kL3NlY29uZC1wdy4KKyAgCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0ZWQgYXMgdXNlcjog
Zmlyc3QgcGFzc3dvcmQ6IGZpcnN0LXB3CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0ZWQgYXMgdXNlcjog
c2Vjb25kIHBhc3N3b3JkOiBzZWNvbmQtcHcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50
aWFscy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZXModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVz
ZXJuYW1lKCJmaXJzdCIpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29y
ZCgiZmlyc3QtcHciKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gZmlyc3RGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgic2Vjb25kIik7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgic2Vjb25kLXB3
Iik7CisgICAgICAgIHRlc3RSdW5uZXIucmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKHJlbW92
ZWRDcmVkZW50aWFsc0NhbGxiYWNrKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJlbW92ZWRDcmVk
ZW50aWFsc0NhbGxiYWNrKCkKK3sKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCIpOwor
ICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgInNlY29uZEZyYW1lTG9hZGVkKCkiKTsK
KyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKK30KKworZnVuY3Rpb24gc2Vj
b25kRnJhbWVMb2FkZWQoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1vdmUgY3JlZGVudGlh
bHMsIGJ5IGNoZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24uPGJyPgorY2hhbGxl
bmdlIGZvciBhIHBhdGggd2Ugbm9ybWFsbHkgd291bGQgbm90IGdldCBhIGNoYWxsZW5nZSBmb3Is
IGFmdGVyIGhhdmluZyByZW1vdmVkIGFsbCBjcmVkZW50aWFscy48YnI+CitUaGUgZmlyc3QgZnJh
bWUncyBwYXRoIGlzIC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBh
bmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQuPGJyPgorSXQgd2lsbCBiZSBhdXRo
b3JpemVkIHdpdGggZmlyc3QvZmlyc3QtcHcuPGJyPgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGgg
aXMgaWRlbnRpY2FsIHRvIHRoZSBmaXJzdCBmcmFtZSwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFs
bGVuZ2UgZm9yIGl0LCBiZWNhdXNlIGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBkZWxldGVkLjxicj4K
K0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcuPGJyPgorPGlmcmFt
ZSBzcmM9InJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIiBvbmxvYWQ9ImZpcnN0RnJh
bWVMb2FkZWQoKTsiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjE3ODc1
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBAIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxl
UGF5U2Vzc2lvblYKIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3J1YmJlcmJhbmRpbmctdmlld3BvcnQt
cmVjdHMuaHRtbCBbIFBhc3MgXQogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12
aWV3cG9ydC1yZWN0cy1oZWFkZXItZm9vdGVyLmh0bWwgIFsgUGFzcyBdCiAKK2h0dHAvdGVzdHMv
bG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sIFsgUGFzcyBdCisKICMv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmlj
IGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312170</attachid>
            <date>2017-06-07 01:52:10 -0700</date>
            <delta_ts>2017-06-07 09:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171217-20170607105356.patch</filename>
            <type>text/plain</type>
            <size>29194</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA2LTA2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwg
b2YgYXV0aGVudGljYXRpb24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJ
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vi
c2l0ZSBkYXRhIHN0b3JlIEFQSS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6Om9yaWdpbnNXaXRoQ3JlZGVudGlhbHMpOgorCiAyMDE3LTA2LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBhIGRlZGljYXRlZCBub2Rl
IGZsYWcgdG8gaWRlbnRpZnkgYSBEb2N1bWVudCBub2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCShyZXZpc2lvbiAy
MTc4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IENyZWRlbnRpYWwmLCBjb25z
dCBVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8gYSBrbm93
biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYp
OwogCisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBvcmlnaW5zV2l0aENyZWRlbnRpYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW5zV2l0aENyZWRlbnRpYWxzOyB9CisKIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nIC8qIHBhcnRpdGlvbk5hbWUgKi8sIFByb3RlY3Rp
b25TcGFjZT4sIENyZWRlbnRpYWw+IG1fcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX29yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0wNi0wNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFsIG9mIGF1dGhlbnRp
Y2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjk1MjI1NzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgdG8gcmVtb3ZlIGFuZCBmZXRjaCBjcmVkZW50
aWFsIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQSS4KKyAgICAgICAgQ3Jl
ZGVudGlhbCBkYXRhIGlzIHJlbW92ZWQgYW5kIGZldGNoZWQgZnJvbSBib3RoIHRoZSBuZXR3b3Jr
IHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLgorICAgICAgICBBdXRoZW50aWNhdGlvbiBkYXRhIHN0
b3JlZCBpbiB0aGUga2V5Y2hhaW4gd2lsbCBub3QgYmUgY2xlYXJlZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFUeXBlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAg
IChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNp
dGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRo
Q3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisKIDIwMTctMDYtMDYgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBidWlsZGluZyB3aXRoIHRoZSBtYWNPUyAxMC4x
MyBBcHBsZSBJbnRlcm5hbCBTREsgd2hlbiB0YXJnZXRpbmcgbWFjT1MgMTAuMTIuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MCw2ICszOTAsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZQogICAgICAgICAgICAgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICB9CiAKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewor
ICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygp
OworICAgIH0KKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RGlza0NhY2hlKSkgewogICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoc2Vzc2lv
bklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNr
QWdncmVnYXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7
CkBAIC00MTEsNiArNDE2LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhKFMKICAgICAgICAgICAgIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2luY2UpOwogICAgIH0KIAorICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CisgICAg
ICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIH0KKyAg
ICAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNhbGxiYWNrSURdIHsKICAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwogICAgIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YS5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAg
dm9pZCBXZWJzaXRlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIGVuY29kZXIgPDwgaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGE7
CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IG9yaWdpbnNXaXRoQ3JlZGVudGlhbHM7CiB9CiAKIGJv
b2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRh
JiByZXN1bHQpCkBAIC03NCw3ICs3NSw4IEBAIGJvb2wgV2Vic2l0ZURhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0TmFtZXNXaXRo
UGx1Z2luRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luc1dpdGhDcmVkZW50aWFscykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgJKHJldmlzaW9uIDIxNzg3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgSGFz
aFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhOwogI2VuZGlmCiAKKyAgICBIYXNo
U2V0PFN0cmluZz4gb3JpZ2luc1dpdGhDcmVkZW50aWFsczsKKwogICAgIHZvaWQgZW5jb2RlKElQ
Qzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXIm
LCBXZWJzaXRlRGF0YSYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHJldmlzaW9uIDIxNzg3NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAg
ICAgTWVkaWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMiwKICNlbmRpZgogICAgIFdlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSAxIDw8IDEzLAorICAgIENyZWRlbnRpYWxz
ID0gMSA8PCAxNCwKIH07CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCShyZXZpc2lvbiAy
MTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgTlNTdHJpbmcgKiBj
b25zdCBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVIU1RTQ2FjaGUgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSI7CiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMiOwogTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gQCJf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIjsKK05TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vi
c2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7
CkBAIC05MSw2ICs5Miw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNT
ZXQKICNlbmRpZgogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAiUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFp
bnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHNdKQorICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAiQ3JlZGVudGlhbHMiXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29tcG9uZW50
c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjE3ODc1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsOCBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUCiAj
ZW5kaWYKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0
ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OldlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0KKyAgICBp
ZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC0xMTgsNiArMTE5LDggQEAgc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaQogI2VuZGlmCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc107CisgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisg
ICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURh
dGFUeXBlTWVkaWFLZXlzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkp
OwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmll
bGRSZWNlbnRTZWFyY2hlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjAp
KTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRp
YWxzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCShy
ZXZpc2lvbiAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNSArMTU1LDEyIEBA
IFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KICAgICAKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KLSAgICAKKwordm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRk
T3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgdHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKKworICAgIG9yaWdpbnNXaXRoQ3JlZGVu
dGlhbHMuYWRkKG9yaWdpbik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCShyZXZpc2lv
biAyMTc4NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBzdHJ1Y3QgV2Vi
c2l0ZURhdGFSZWNvcmQgewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZv
aWQgYWRkUGx1Z2luRGF0YUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOwogI2VuZGlm
CisgICAgdm9pZCBhZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmKTsKIAogICAg
IFN0cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
czsKQEAgLTY4LDcgKzY5LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBIYXNoU2V0PFN0cmluZz4gcGx1Z2luRGF0YUhv
c3ROYW1lczsKICNlbmRpZgotICAgIAorICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zV2l0aENy
ZWRlbnRpYWxzOworCiAgICAgYm9vbCBtYXRjaGVzVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbigpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIxNzg3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1MiwxMiBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmZldGNoRGF0YShPcHRpb25TCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAorICAgICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB3ZWJzaXRlRGF0YS5vcmlnaW5zV2l0aENyZWRlbnRp
YWxzKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJlY29y
ZHMuYWRkKG9yaWdpbiwgV2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmVjb3JkLmFkZE9yaWdpbldpdGhDcmVk
ZW50aWFsKG9yaWdpbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhbGxJZk5lZWRl
ZCgpOwogICAgICAgICB9CiAKQEAgLTU1MCw2ICs1NTYsOSBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vz
c1R5cGUgY29tcHV0ZU5ldHdvcmtQCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkhTVFNDYWNoZSkpCiAgICAgICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjpt
YXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nlc3NBY2Nlc3NUeXBlOjpMYXVuY2gpOwogCisgICAg
aWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkKKyAg
ICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNzQWNjZXNzVHlwZSwgUHJv
Y2Vzc0FjY2Vzc1R5cGU6OkxhdW5jaCk7CisKICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vzc1R5cGU7
CiB9CiAKQEAgLTU2Miw2ICs1NzEsOSBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0
ZVdlYlByb2NlCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlKSkKICAgICAgICAgcHJvY2Vzc0FjY2Vzc1R5cGUgPSBzdGQ6Om1heChwcm9jZXNz
QWNjZXNzVHlwZSwgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkKTsKIAorICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpCisgICAg
ICAgIHByb2Nlc3NBY2Nlc3NUeXBlID0gc3RkOjptYXgocHJvY2Vzc0FjY2Vzc1R5cGUsIFByb2Nl
c3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZCk7CisKICAgICByZXR1cm4gcHJvY2Vzc0FjY2Vz
c1R5cGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjE3ODc1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0NCw2ICsxMjQ0LDExIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3IKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4g
OiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhDYWNoZShzZXNzaW9uSUQpKQog
ICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5
IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbiksIFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQorCisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKKyAgICAg
ICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgICAgIHdlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgIH0KIH0KIAogdm9pZCBXZWJQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCkBAIC0xMjU2LDYgKzEyNjEsMTEgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaQogCiAgICAgICAgIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmVtcHR5KCk7CiAgICAgfQorCisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
cykpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRl
bnRpYWxzKCk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc4NzUpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wNi0wNiAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCByZW1vdmFs
IG9mIGF1dGhlbnRpY2F0aW9uIGRhdGEgdGhyb3VnaCB0aGUgV2Vic2l0ZSBkYXRhIHN0b3JlIEFQ
SS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKwogMjAxNy0wNi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpIGhpdCBpbiBj
b252ZXJ0RW51bWVyYXRpb25Ub0pTPFdlYkNvcmU6Okhpc3Rvcnk6OlNjcm9sbFJlc3RvcmF0aW9u
PigpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjE3ODc1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzEsNiArMjMzMSwxMCBAQCB1bnNpZ25lZCBUZXN0Q29u
dHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7Cit9CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgJKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9v
cGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVVUkxzOyB9CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzKCk7Ci0gICAgCisKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
cygpOworCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+
IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAg
ICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0
Q29uZmlndXJhdGlvbigpIGNvbnN0OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAxLDYgKzExMDEsMTEg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKSB7CisgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xMTc1LDQgKzExODAsMTAgQEAgdm9p
ZCBUZXN0SW52b2NhdGlvbjo6bm90aWZ5RG93bmxvYWREb25lKAogICAgIFdLUGFnZVBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9j
YXRpb246OmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikp
OworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAkocmV2aXNpb24gMjE3ODc1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbm90aWZ5RG93bmxvYWREb25lKCk7CiAKKyAgICB2b2lkIGRpZFJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGR1bXBS
ZXN1bHRzKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQs
IGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAsIGJvb2wgc2VlbkVycm9yID0gZmFsc2UpOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDAsNiArMjQwLDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNz
YWdlVG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50
aWFsc0NhbGxiYWNrIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiTm90aWZ5
RG93bmxvYWREb25lIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjE3ODc1KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjQzLDYgKzY0Myw3IEBAIGVudW0gewogICAgIERpZFJlbW92ZVN3aXBlU25hcHNo
b3RDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVjb3Jkc0NhbGxiYWNr
SUQsCiAgICAgU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrSUQsCisgICAgRGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCwKICAgICBGaXJzdFVJU2NyaXB0
Q2FsbGJhY2tJRCA9IDEwMAogfTsKIApAQCAtMTYzOCw0ICsxNjM5LDE5IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWwKICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2Fn
ZShwYWdlLCBtZXNzYWdlTmFtZS5nZXQoKSwgZmlsZVVSTHMuZ2V0KCkpOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhKU1ZhbHVlUmVmIGNhbGxiYWNr
KQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKERpZFJlbW92ZUFsbFNlc3Npb25DcmVk
ZW50aWFsc0NhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh0cnVlKSk7Cisg
ICAgCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
LCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzQ2FsbGJhY2soKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soRGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgs
NiArMzc4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzcygp
OwogCisgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7Cisg
ICAgdm9pZCBjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKKwog
cHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAkocmV2aXNpb24gMjE3ODc1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDQg
KzI4MCw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFdlYlJUQ0xlZ2Fj
eUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CisKKyAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhvYmplY3Qg
Y2FsbGJhY2spOwogfTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDIxNzg3NSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KQEAgLTIw
MCw0ICsyMDEsMTQgQEAgdW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbgog
ICAgIHJldHVybiBpbWFnZXNBcnJheS5jb3VudDsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6
cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKK3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAg
IGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywgbmlsXSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkg
bW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkg
eworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHMoKTsKKyAgICB9XTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIxNzg3NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHJlbW92YWwgb2YgYXV0aGVudGljYXRp
b24gZGF0YSB0aHJvdWdoIHRoZSBXZWJzaXRlIGRhdGEgc3RvcmUgQVBJLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFs
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNp
Yy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDYtMDYgIE1hdHQgTGV3aXMgIDxq
bGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWQgd29ya2Vycy9ib21iLmh0bWwgYXMg
Zmxha3kgb24gaU9TLgpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMTc4NzUpCisr
KyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5
Niw3IEBAIGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXQKIGZhc3QvbWVk
aWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLWluLXN1YmZyYW1lcy5odG1sIFsgU2tp
cCBdCiBmYXN0L21lZGlhL21xLW1vbm9jaHJvbWUtbGl2ZS11cGRhdGUuaHRtbCBbIFNraXAgXQog
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVkZW50aWFscy5o
dG1sIFsgU2tpcCBdCiAKICMgQXBwbGVQYXkgaXMgb25seSBhdmFpbGFibGUgb24gaU9TIChncmVh
dGVyIHRoYW4gaU9TIDEwKSBhbmQgbWFjT1MgKGdyZWF0ZXIgdGhhbiBtYWNPUyAxMC4xMikgYW5k
IG9ubHkgZm9yIFdlYktpdDIuCiBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBTa2lwIF0KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlbW92ZS1jcmVk
ZW50aWFscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1y
ZW1vdmUtY3JlZGVudGlhbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzQgQEAKK21haW4gZnJhbWUgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWlu
IGZyYW1lIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBm
cmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCisxMjcuMC4wLjE6ODAwMCAtIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpm
aXJzdC1wdworZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENv
bW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4g
ZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFt
ZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUxLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKKzEyNy4wLjAuMTo4
MDAwIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRo
IHNlY29uZDpzZWNvbmQtcHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0t
PiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNo
TG9hZEZvckZyYW1lCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBhcmUgYWJsZSB0byByZW1v
dmUgY3JlZGVudGlhbHMsIGJ5IGNoZWNraW5nIHRoYXQgd2UgZ2V0IGFuIGF1dGhlbnRpY2F0b24u
CitjaGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0IGEgY2hhbGxl
bmdlIGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLgorVGhlIGZpcnN0
IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBo
cCwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LgorSXQgd2lsbCBiZSBhdXRo
b3JpemVkIHdpdGggZmlyc3QvZmlyc3QtcHcuCitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyBp
ZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5n
ZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGRlbGV0ZWQuCitJdCB3aWxs
IGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVu
dGljYXRlZCBhcyB1c2VyOiBmaXJzdCBwYXNzd29yZDogZmlyc3QtcHcKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVu
dGljYXRlZCBhcyB1c2VyOiBzZWNvbmQgcGFzc3dvcmQ6IHNlY29uZC1wdwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1
dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0
SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNl
dEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImZpcnN0Iik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRo
ZW50aWNhdGlvblBhc3N3b3JkKCJmaXJzdC1wdyIpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiBmaXJzdEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVz
ZXJuYW1lKCJzZWNvbmQiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBh
c3N3b3JkKCJzZWNvbmQtcHciKTsKKyAgICAgICAgdGVzdFJ1bm5lci5yZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHMocmVtb3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2spOworICAgIH0KK30KKworZnVu
Y3Rpb24gcmVtb3ZlZENyZWRlbnRpYWxzQ2FsbGJhY2soKQoreworICAgIHZhciBmcmFtZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgi
c3JjIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQt
cmVzb3VyY2UucGhwIik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAic2Vjb25k
RnJhbWVMb2FkZWQoKSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwor
fQorCitmdW5jdGlvbiBzZWNvbmRGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGFyZSBhYmxlIHRv
IHJlbW92ZSBjcmVkZW50aWFscywgYnkgY2hlY2tpbmcgdGhhdCB3ZSBnZXQgYW4gYXV0aGVudGlj
YXRvbi48YnI+CitjaGFsbGVuZ2UgZm9yIGEgcGF0aCB3ZSBub3JtYWxseSB3b3VsZCBub3QgZ2V0
IGEgY2hhbGxlbmdlIGZvciwgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgYWxsIGNyZWRlbnRpYWxzLjxi
cj4KK1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3Rl
ZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC48YnI+
CitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy48YnI+CitUaGUgc2Vj
b25kIGZyYW1lJ3MgcGF0aCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IGZyYW1lLCBhbmQgd2Ug
c2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgY3JlZGVudGlhbHMgaGF2ZSBi
ZWVuIGRlbGV0ZWQuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29u
ZC1wdy48YnI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAi
IG9ubG9hZD0iZmlyc3RGcmFtZUxvYWRlZCgpOyI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CShyZXZpc2lvbiAyMTc4NzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAgaHR0cC90ZXN0cy9z
c2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVgogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVy
YmFuZGluZy12aWV3cG9ydC1yZWN0cy5odG1sIFsgUGFzcyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9y
dC9ydWJiZXJiYW5kaW5nLXZpZXdwb3J0LXJlY3RzLWhlYWRlci1mb290ZXIuaHRtbCAgWyBQYXNz
IF0KIAoraHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0
bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQg
cGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>