<?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>209634</bug_id>
          
          <creation_ts>2020-03-26 17:26:52 -0700</creation_ts>
          <short_desc>Add SPI to configure WebsiteDataStores with a URL for standalone web applications and use it to disable first-party website data removal in ITP</short_desc>
          <delta_ts>2020-04-29 10:05:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211190</see_also>
          <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="David Quesada">david_quesada</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1634661</commentid>
    <comment_count>0</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2020-03-26 17:26:52 -0700</bug_when>
    <thetext>rdar://problem/60943970</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634672</commentid>
    <comment_count>1</comment_count>
      <attachid>394683</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2020-03-26 17:50:49 -0700</bug_when>
    <thetext>Created attachment 394683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634808</commentid>
    <comment_count>2</comment_count>
      <attachid>394683</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-03-27 08:11:04 -0700</bug_when>
    <thetext>Comment on attachment 394683
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        Add the ability to configure a website data store so that its network session operates
&gt; +        using WebCore::FirstPartyWebsiteDataRemovalMode::None.

This needs tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636058</commentid>
    <comment_count>3</comment_count>
      <attachid>394683</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 09:40:30 -0700</bug_when>
    <thetext>Comment on attachment 394683
Patch

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

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:203
&gt; +    bool m_resourceLoadStatisticsFirstPartyWebsiteDataRemovalEnabled { true };

This should not be inside PLATFORM(COCOA)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636992</commentid>
    <comment_count>4</comment_count>
      <attachid>395284</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 12:00:14 -0700</bug_when>
    <thetext>Created attachment 395284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637000</commentid>
    <comment_count>5</comment_count>
      <attachid>395284</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2020-04-02 12:14:29 -0700</bug_when>
    <thetext>Comment on attachment 395284
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:77
&gt; +@property (nonatomic, nullable, copy, setter=setStandaloneApplication:) NSURL *standaloneApplicationURL WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Why explicitly specify the setter -setStandaloneApplication: and not just use the default -setStandaloneApplicationURL: ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637003</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 12:17:05 -0700</bug_when>
    <thetext>(In reply to David Quesada from comment #5)
&gt; Comment on attachment 395284 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395284&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:77
&gt; &gt; +@property (nonatomic, nullable, copy, setter=setStandaloneApplication:) NSURL *standaloneApplicationURL WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Why explicitly specify the setter -setStandaloneApplication: and not just
&gt; use the default -setStandaloneApplicationURL: ?

I got build errors without the explicit setter but Alex made some suggestions so I&apos;ll remove it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637008</commentid>
    <comment_count>7</comment_count>
      <attachid>395284</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-02 12:23:44 -0700</bug_when>
    <thetext>Comment on attachment 395284
Patch

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

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:156
&gt; +    if (options.useEphemeralSession &amp;&amp; options.standaloneWebApplicationURL.length()) {

This could be made a bit more concise and expandable:

if (options.useEphemeralSession 
    || options.standaloneWebApplicationURL.length()) {
    auto config = options.useEphemeralSession ? [[[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration] autorelease] : [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
    if (options.standaloneWebApplicationURL.length())
        config.standaloneApplication = ...;
   // we will probably want to add more things here soon.
    ... // set websiteDataStore using config and enable resource load statistics.
}

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:157
&gt; +        auto ephemeralWebsiteDataStoreConfig = [[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration];

This is a memory leak as it now stands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637010</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 12:26:55 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 395284 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395284&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:156
&gt; &gt; +    if (options.useEphemeralSession &amp;&amp; options.standaloneWebApplicationURL.length()) {
&gt; 
&gt; This could be made a bit more concise and expandable:
&gt; 
&gt; if (options.useEphemeralSession 
&gt;     || options.standaloneWebApplicationURL.length()) {
&gt;     auto config = options.useEphemeralSession ?
&gt; [[[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration]
&gt; autorelease] : [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease];
&gt;     if (options.standaloneWebApplicationURL.length())
&gt;         config.standaloneApplication = ...;
&gt;    // we will probably want to add more things here soon.
&gt;     ... // set websiteDataStore using config and enable resource load
&gt; statistics.
&gt; }

Much better. Will adopt.

&gt; &gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:157
&gt; &gt; +        auto ephemeralWebsiteDataStoreConfig = [[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration];
&gt; 
&gt; This is a memory leak as it now stands.

Darn it. I thought I had gone through all of them. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637143</commentid>
    <comment_count>9</comment_count>
      <attachid>395321</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 16:40:57 -0700</bug_when>
    <thetext>Created attachment 395321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637145</commentid>
    <comment_count>10</comment_count>
      <attachid>395321</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-02 16:45:01 -0700</bug_when>
    <thetext>Comment on attachment 395321
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:312
&gt; +TEST(WKWebsiteDataStore, StandaloneApplicationURL)

This test isn&apos;t really useful.  It just verifies that properties are copied correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637153</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 16:51:09 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Comment on attachment 395321 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395321&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:312
&gt; &gt; +TEST(WKWebsiteDataStore, StandaloneApplicationURL)
&gt; 
&gt; This test isn&apos;t really useful.  It just verifies that properties are copied
&gt; correctly.

Right, it was added to make sure the setting is maintained through copies of the config. Do you think I should remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637169</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-02 17:14:17 -0700</bug_when>
    <thetext>yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637171</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 17:18:14 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; yes

Will do before landing. Waiting for the wk2 bots now. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637191</commentid>
    <comment_count>14</comment_count>
      <attachid>395332</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-02 18:54:09 -0700</bug_when>
    <thetext>Created attachment 395332
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637222</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-02 20:56:49 -0700</bug_when>
    <thetext>Committed r259440: &lt;https://trac.webkit.org/changeset/259440&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395332.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637395</commentid>
    <comment_count>16</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-04-03 09:43:37 -0700</bug_when>
    <thetext>It looks like these two new tests:

http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html
http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html

added in https://trac.webkit.org/changeset/259440/webkit

are failing or timing out. History:
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-exempt-from-website-data-deletion.html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-exempt-from-website-data-deletion-database.html

Results:
https://build.webkit.org/results/Apple-Catalina-Release-WK2-Tests/r259460%20(4334)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637420</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-03 10:17:18 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #16)
&gt; It looks like these two new tests:
&gt; 
&gt; http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-
&gt; website-data-deletion-database.html
&gt; http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-
&gt; website-data-deletion.html
&gt; 
&gt; added in https://trac.webkit.org/changeset/259440/webkit
&gt; 
&gt; are failing or timing out. History:
&gt; https://results.webkit.org/?suite=layout-tests&amp;suite=layout-
&gt; tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-
&gt; application-exempt-from-website-data-deletion.
&gt; html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-
&gt; exempt-from-website-data-deletion-database.html
&gt; 
&gt; Results:
&gt; https://build.webkit.org/results/Apple-Catalina-Release-WK2-Tests/
&gt; r259460%20(4334)/results.html

Thanks for reporting, Truitt. Will look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637422</commentid>
    <comment_count>18</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-03 10:20:44 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #17)
&gt; (In reply to Truitt Savell from comment #16)
&gt; &gt; It looks like these two new tests:
&gt; &gt; 
&gt; &gt; http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-
&gt; &gt; website-data-deletion-database.html
&gt; &gt; http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-
&gt; &gt; website-data-deletion.html
&gt; &gt; 
&gt; &gt; added in https://trac.webkit.org/changeset/259440/webkit
&gt; &gt; 
&gt; &gt; are failing or timing out. History:
&gt; &gt; https://results.webkit.org/?suite=layout-tests&amp;suite=layout-
&gt; &gt; tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-
&gt; &gt; application-exempt-from-website-data-deletion.
&gt; &gt; html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-
&gt; &gt; exempt-from-website-data-deletion-database.html
&gt; &gt; 
&gt; &gt; Results:
&gt; &gt; https://build.webkit.org/results/Apple-Catalina-Release-WK2-Tests/
&gt; &gt; r259460%20(4334)/results.html
&gt; 
&gt; Thanks for reporting, Truitt. Will look into this.

The linked failure seems to be one missing line in the output, namely the HttpOnly cookie. The weird thing is that it&apos;s not saying the cookie has been deleted. There just isn&apos;t a result for that cookie.

Will try to reproduce locally and do a manual audit of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637454</commentid>
    <comment_count>19</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-03 11:08:01 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #18)
&gt; (In reply to John Wilander from comment #17)
&gt; &gt; (In reply to Truitt Savell from comment #16)
&gt; &gt; &gt; It looks like these two new tests:
&gt; &gt; &gt; 
&gt; &gt; &gt; http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-
&gt; &gt; &gt; website-data-deletion-database.html
&gt; &gt; &gt; http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-
&gt; &gt; &gt; website-data-deletion.html
&gt; &gt; &gt; 
&gt; &gt; &gt; added in https://trac.webkit.org/changeset/259440/webkit
&gt; &gt; &gt; 
&gt; &gt; &gt; are failing or timing out. History:
&gt; &gt; &gt; https://results.webkit.org/?suite=layout-tests&amp;suite=layout-
&gt; &gt; &gt; tests&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-
&gt; &gt; &gt; application-exempt-from-website-data-deletion.
&gt; &gt; &gt; html&amp;test=http%2Ftests%2FresourceLoadStatistics%2Fstandalone-web-application-
&gt; &gt; &gt; exempt-from-website-data-deletion-database.html
&gt; &gt; &gt; 
&gt; &gt; &gt; Results:
&gt; &gt; &gt; https://build.webkit.org/results/Apple-Catalina-Release-WK2-Tests/
&gt; &gt; &gt; r259460%20(4334)/results.html
&gt; &gt; 
&gt; &gt; Thanks for reporting, Truitt. Will look into this.
&gt; 
&gt; The linked failure seems to be one missing line in the output, namely the
&gt; HttpOnly cookie. The weird thing is that it&apos;s not saying the cookie has been
&gt; deleted. There just isn&apos;t a result for that cookie.
&gt; 
&gt; Will try to reproduce locally and do a manual audit of the code.

I&apos;ve now run 50 iterations with a release build without a repro of the missing output line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637538</commentid>
    <comment_count>20</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-04-03 15:04:32 -0700</bug_when>
    <thetext>Reverted r259440 for reason:

Introduced 2 failing tests on Mac and iOS

Committed r259516: &lt;https://trac.webkit.org/changeset/259516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642064</commentid>
    <comment_count>21</comment_count>
      <attachid>396595</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-15 17:22:56 -0700</bug_when>
    <thetext>Created attachment 396595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642122</commentid>
    <comment_count>22</comment_count>
      <attachid>396595</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-15 20:12:34 -0700</bug_when>
    <thetext>Comment on attachment 396595
Patch

mac-debug-wk1 failures are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642127</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-15 20:38:14 -0700</bug_when>
    <thetext>Committed r260169: &lt;https://trac.webkit.org/changeset/260169&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396595.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642306</commentid>
    <comment_count>24</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-16 10:09:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/61891463&gt; tracks the re-landing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394683</attachid>
            <date>2020-03-26 17:50:49 -0700</date>
            <delta_ts>2020-04-02 12:00:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>file_209634.txt</filename>
            <type>text/plain</type>
            <size>8303</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDJlNmE5NGU5Yzg2OWM2OTZhNDFiNjQyNDVhZDRlMzVmNjA0ZmRhNGQNCkF1dGhvcjog
RGF2aWQgUXVlc2FkYSA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+DQpEYXRlOiAgIFRodSBNYXIg
MjYgMTc6NDk6MDUgMjAyMCAtMDcwMA0KDQogICAgQWRkIFNQSSBmb3IgZGlzYWJsaW5nIGZpcnN0
LXBhcnR5IHdlYnNpdGUgZGF0YSByZW1vdmFsIGR1ZSB0byBJVFANCiAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NjM0DQogICAgcmRhcjovL3Byb2JsZW0vNjA5
NDM5NzANCiAgICANCiAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCiAgICANCiAgICBB
ZGQgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGEgd2Vic2l0ZSBkYXRhIHN0b3JlIHNvIHRoYXQg
aXRzIG5ldHdvcmsgc2Vzc2lvbiBvcGVyYXRlcw0KICAgIHVzaW5nIFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpOb25lLg0KICAgIA0KICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOg0KICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbToNCiAgICAo
LVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWRdKToNCiAgICAoLVtfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQ6XSk6DQogICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOg0KICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMpOg0KICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoNCiAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6DQogICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoNCiAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkIGNvbnN0KToNCiAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkKToNCg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4IDFiMzQ5YmVmOWE2Li5i
NzEwOGRhYWM5MSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQorKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSwyNiBAQA0KKzIwMjAtMDMtMjYgIERh
dmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBT
UEkgZm9yIGRpc2FibGluZyBmaXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVtb3ZhbCBkdWUgdG8g
SVRQDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
NjM0DQorICAgICAgICByZGFyOi8vcHJvYmxlbS82MDk0Mzk3MA0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gY29u
ZmlndXJlIGEgd2Vic2l0ZSBkYXRhIHN0b3JlIHNvIHRoYXQgaXRzIG5ldHdvcmsgc2Vzc2lvbiBv
cGVyYXRlcw0KKyAgICAgICAgdXNpbmcgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGU6Ok5vbmUuDQorDQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbToNCisgICAgICAgICgtW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZF0pOg0KKyAgICAgICAgKC1bX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkOl0pOg0KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOg0KKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6DQorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6DQorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6DQorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oOg0KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCBj
b25zdCk6DQorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFi
bGVkKToNCisNCiAyMDIwLTAzLTI2ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBs
ZS5jb20+DQogDQogICAgICAgICBVbmFibGUgdG8gcHJlc2VudCBmaWxlIHVwbG9hZCBwaWNrZXIg
YWZ0ZXIgaW50ZXJhY3RpdmVseSBkaXNtaXNzaW5nIGEgcHJldmlvdXNseSBvcGVuZWQgcGlja2Vy
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaA0KaW5kZXggZWViNDgxY2M1
NzQuLjE2Y2NkZjVlZWE5IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgNCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oDQpAQCAtNzQsNiArNzQsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBp
b3MoMTEuMCkpDQogDQogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VS
TCAqYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsNCiANCitAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsNCisNCiAvLyBUZXN0aW5nIG9ubHkuDQogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGlu
ZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsNCiANCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0NCmluZGV4IGI3NWEwMjZhMmM1Li5jMTJh
Nzg2MjZhMSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQ0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tDQpA
QCAtNDIzLDYgKzQyMywxNiBAQCAtICh2b2lkKXNldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0
aW9uYXJ5ICopY29uZmlndXJhdGlvbg0KICAgICBfY29uZmlndXJhdGlvbi0+c2V0UHJveHlDb25m
aWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpW2NvbmZpZ3VyYXRpb24gY29weV0p
Ow0KIH0NCiANCistIChCT09MKXJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsRW5hYmxlZA0KK3sNCisgICAgcmV0dXJuIF9jb25maWd1cmF0aW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQoKTsN
Cit9DQorDQorLSAodm9pZClzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbEVuYWJsZWQ6KEJPT0wpZW5hYmxlZA0KK3sNCisgICAgX2NvbmZpZ3VyYXRp
b24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
RW5hYmxlZChlbmFibGVkKTsNCit9DQorDQogLSAoQk9PTClhbGxMb2Fkc0Jsb2NrZWRCeURldmlj
ZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nDQogew0KICAgICByZXR1cm4gX2NvbmZp
Z3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3RpbmcoKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0NCmluZGV4IDY1
MmY0N2UwODg3Li4wOWEyNmYzNTQxNSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQ0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tDQpAQCAtMTAzLDcgKzEwMyw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQ0KICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9Ow0K
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQ0KICAgICBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJJVFBEZWJ1
Z01vZGUiXTsNCi0gICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsRGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XV0pDQorICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbERpc2FibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dIHx8
ICFtX2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsRW5hYmxlZCgpKQ0KICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9u
ZTsNCiAgICAgZWxzZSB7DQogICAgICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnRlcm5hbERlYnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tl
eTo6aXNGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsUmVwcm9UZXN0aW5nRW5hYmxlZEtleSgp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHANCmluZGV4IDcxZTc2MjdkNmM2Li4yYTY3NWM4NjQzOSAxMDA2NDQNCi0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwDQpAQCAtOTQsNiArOTQsNyBAQCBSZWY8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjb3B5KCkgY29uc3QNCiAjaWYgUExBVEZPUk0oQ09DT0EpDQogICAgIGlmIChtX3Byb3h5
Q29uZmlndXJhdGlvbikNCiAgICAgICAgIGNvcHktPm1fcHJveHlDb25maWd1cmF0aW9uID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KG51bGxwdHIsIHRoaXMtPm1fcHJveHlDb25maWd1
cmF0aW9uLmdldCgpKSk7DQorICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxFbmFibGVkID0gdGhpcy0+bV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQ7DQogI2VuZGlmDQogDQog
ICAgIHJldHVybiBjb3B5Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oDQpp
bmRleCAzZTM0NWIzMDU4MC4uMTMzOWE5NzUwNDcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oDQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oDQpAQCAtMTAwLDYgKzEwMCw5IEBAIHB1YmxpYzoNCiAjaWYgUExBVEZP
Uk0oQ09DT0EpDQogICAgIENGRGljdGlvbmFyeVJlZiBwcm94eUNvbmZpZ3VyYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKTsgfQ0KICAgICB2b2lkIHNldFBy
b3h5Q29uZmlndXJhdGlvbihDRkRpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlvbikgeyBtX3Byb3h5
Q29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247IH0NCisNCisgICAgYm9vbCByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsRW5hYmxlZDsgfQ0KKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQgPSBlbmFibGVk
OyB9DQogI2VuZGlmDQogICAgIA0KICAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OyB9DQpAQCAtMTk3LDYgKzIwMCw3IEBAIHByaXZhdGU6DQogICAgIHVuc2ln
bmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEgfTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpDQog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fcHJveHlDb25maWd1cmF0aW9uOw0KKyAg
ICBib29sIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxFbmFibGVkIHsgdHJ1ZSB9Ow0KICNlbmRpZg0KIH07DQogDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395284</attachid>
            <date>2020-04-02 12:00:14 -0700</date>
            <delta_ts>2020-04-02 16:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209634-20200402120014.patch</filename>
            <type>text/plain</type>
            <size>56625</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAxMjg5NWFhNGNiYmMzOTlk
NTQyMDU1MTE0MWMzMmUyMjNkYzZjOTQuLjBhZDZjODVmMjU0MjMxODViNjFmNTYyYWRlMzE2MDRj
YzRjM2QxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDQtMDIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBjb25maWd1
cmUgV2Vic2l0ZURhdGFTdG9yZXMgd2l0aCBhIFVSTCBmb3Igc3RhbmRhbG9uZSB3ZWIgYXBwbGlj
YXRpb25zIGFuZCB1c2UgaXQgdG8gZGlzYWJsZSBmaXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVt
b3ZhbCBpbiBJVFAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5NDM5NzA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBh
IG5ldyBwcm9wZXJ0eSB0byBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGNhbGxl
ZAorICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25VUkwgd2l0aCB3aGljaCB0aGUgaG9zdGlu
ZyBhcHBsaWNhdGlvbiBjYW4gaW5mb3JtIHRoZQorICAgICAgICB3ZWJzaXRlIGRhdGEgc3RvcmUg
dGhhdCBpdCdzIHJ1bm5pbmcgYXMgYSBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbi4gVGhpcwor
ICAgICAgICBwcm9wZXJ0eSBoYXMgaXRzIG93biBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWxzbyBmb3J3YXJkcyBhbiBleGlzdGluZyBzdGFuZGFsb25lQXBwbGljYXRpb25V
UkwgYXMgYQorICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBpbnRvIElUUCBzbyB0
aGF0IGV4cGxpY2l0IGV4ZW1wdGlvbnMgY2FuIGJlIG1hZGUKKyAgICAgICAgdG8gZmlyc3QgcGFy
dGllcyBvZiBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbnMuIFRoZSBleGVtcHRpb25zIG1hZGUg
aGVyZQorICAgICAgICBhbGwgZm9yIGFsbCBvZiBJVFAncyB3ZWJzaXRlIGRhdGEgcmVtb3ZhbC4g
VGhpcyBwYXJ0IG9mIHRoZSBjaGFuZ2UgaXMKKyAgICAgICAgY292ZXJlZCBieSB0aGUgbmV3IGxh
eW91dCB0ZXN0cy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0
YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20t
d2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRp
bmdzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAqIFNoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTF0pOgorICAgICAgICAoLVtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRTdGFuZGFsb25lQXBwbGljYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpzdGFuZGFsb25lQXBwbGljYXRpb25VUkwgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U3RhbmRhbG9u
ZUFwcGxpY2F0aW9uVVJMKToKKwogMjAyMC0wNC0wMiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgRGVidWcgY3Jhc2g6IEFTU0VSVElPTiBGQUlMRUQ6IG1fb25n
b2luZ0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDcy
ZGI5OWI4MzMzZDNhNThjMTc1M2IwODYyM2ZkM2E5YmJmMTFjMjUuLjYxOGM5MjRlOWRhNDRmMWI5
NTgwMmM4YTZhYTMwNzBjMGE1MWEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjQ1NCw2ICsyNDU0LDggQEAgUmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXMKICAgICBWZWN0b3I8RG9tYWluRGF0YT4gZG9tYWlucyA9IHRo
aXMtPmRvbWFpbnMoKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGRvbWFpbklEc1RvQ2xlYXJHcmFu
ZGZhdGhlcmluZzsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IGRvbWFpbnMpIHsKKyAgICAg
ICAgaWYgKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiA9PSBzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvbGRlc3RVc2VySW50
ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50ZXJhY3Rpb24sIHN0YXRpc3RpYy5tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAgICAgICAgIGlmIChzaG91bGRSZW1vdmVBbGxX
ZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpKSB7
CiAgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWluc1RvRGVsZXRlQWxsQ29v
a2llc0Zvci5hcHBlbmQoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggMDUyODBm
MTg1MWFkOTY0ZTViM2FmODEwNzg2Yjg5NGM1YjA3MTY2OS4uYTQzOGMwMjNhNzc2MDIwMGJiOGFi
MTdkMTgyN2UxMTQyOTZmNzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTk3NCw2ICs5NzQsOCBAQCBSZWdpc3RyYWJsZURv
bWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5UwogICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93OwogICAgIFJl
Z2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHRvRGVsZXRl
T3JSZXN0cmljdEZvcjsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFibGVE
b21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9uID0gc3RkOjptaW4ob2xkZXN0VXNl
ckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpOwog
ICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Ioc3RhdGlzdGljLCBzaG91
bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewogICAgICAgICAgICAgdG9EZWxldGVPclJlc3Ry
aWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdp
c3RyYWJsZURvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggNDc4MTRmMzk1ZTg5ODM0ZTIyODgwM2I3MmVlNWY4YmY2ZjEzZGJjMC4uYTIzOGFmNmMw
NDY4MTU5YmE4ZDZmYjQ3ZWI3ZWQ4MGYwMTQxMjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIHsgbV9zYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZCA9IGVuYWJsZWQ7IH07CiAgICAgYm9vbCBpc1NhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCA9PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6WWVz
OyB9OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgeyBtX2ZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbW9kZTsgfQorICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKSB7IG1fc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluID0gV1RGTW92ZShkb21haW4pOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5kZXIoY29uc3QgVG9wRnJhbWVEb21h
aW4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSA9IDA7CkBAIC0yNDUsNiArMjQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgZGVidWdMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdMb2dnaW5nRW5h
YmxlZDsgfTsKICAgICBib29sIGRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnTW9kZUVuYWJsZWQ7IH0KICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7IH0KKyAgICBSZWdpc3RyYWJsZURv
bWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSBjb25zdCB7IHJldHVybiBtX3N0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBtYXhOdW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07CiAg
ICAgCkBAIC0yODUsNiArMjg3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGF0YVJlY29yZHNC
ZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogICAgIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91
bGRJbmNsdWRlTG9jYWxob3N0IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAg
V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CisgICAgUmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMDhlZGU2
YzdjM2M0MTJjZjczMzQyMzRlYTY0NzliOTEwYWYxMDQyNi4uNmQ5Y2Q5ZmNiNDhmNjI4NDdlMGJi
ZTllNDk4ZWZmYmE0MzQwNjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTYzNSw2ICs2MzUsMjQgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKEZp
cnN0UGEKICAgICB9KTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0VwaGVtZXJhbCgp
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCisgICAgICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZS0+c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKFdURk1vdmUoZG9tYWluKSk7
CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCmluZGV4IDM1YjgzMDM3OTA2YmE2NmM0N2VhZTE0NDZmMGJhZTBjNGRhYWIxNDkuLjMw
MzBhNGQ4NjAyYzg2NWM1ODM4MjZkZDJhYmQwYzY0NDhjNmVkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3Nyw2ICsyNzcsNyBAQCBzdHJ1
Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIHNl
dFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICB2b2lk
IG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzMwNDI3YmYxOThi
NDYzYjI1YjUwOWEyMzA3NDJjNGVjNmVjMjhlMC4uNzUyNGU0OGUxOTc2NDQyZmI1YzY3M2M3OThk
NjY0MWM1YTNhYWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTg5LDYgKzg5LDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MK
ICAgICAsIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpCiAg
ICAgLCBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQpCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUpCisgICAgLCBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbikKICNlbmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1ZVJlZjxB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5zZXNz
aW9uSUQpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVk
TXVsdGlwbGllcikKQEAgLTIwNCw2ICsyMDUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpmb3J3
YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCkKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUobV90aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUobV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgW10g
eyB9KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN0YW5kYWxvbmVBcHBsaWNh
dGlvbkRvbWFpbihtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwgW10geyB9KTsKIH0KIAog
Ym9vbCBOZXR3b3JrU2Vzc2lvbjo6aXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggNDYzNDI5MzUzNzcxMTFhZWJiMjg0N2RjYTgwZGRlNWI0OTcyZjI3MC4uMDk5Y2U3NGEzZTA4
YTY2YTA2MGZiM2E2MDk1YzEyZWEzOGY1YjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTY0LDYgKzE2NCw3IEBAIHByb3RlY3RlZDoK
ICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbCB9OwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIG1f
c2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgeyBXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8gfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsK
KyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbjsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IG1fYWRD
bGlja0F0dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggZjQ5NzYwOTM1ODdlNGI4ZmIzZDVi
YTA5ZmY5YjljMDRlM2QyZjhlNS4uOTI3YWVjM2E3NGFkMWVmY2I1OTQ4YTA0M2Y4MWZjZjI5Zjli
ZWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgeyBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8gfTsKICNlbmRpZgogICAgIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU6OkFsbEJ1dENvb2tpZXMgfTsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAKICAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02Myw2ICs2NCw3IEBAIHN0cnVjdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGVuY29kZXIgPDwgc2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8PCBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CiAgICAgICAgIGVuY29kZXIgPDwgbWFudWFsUHJldmFs
ZW50UmVzb3VyY2U7CiAgICAgfQogCkBAIC0xMjAsNiArMTIyLDExIEBAIHN0cnVjdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGlmICghZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisg
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBzdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW47CisgICAgICAgIGRlY29kZXIgPj4gc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluOworICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBkZWNv
ZGVyID4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1hbnVhbFByZXZh
bGVudFJlc291cmNlKQpAQCAtMTM4LDYgKzE0NSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgICAgICBXVEZNb3ZlKCpzYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZCksCiAjZW5kaWYKICAgICAgICAgICAgIFdURk1vdmUoKmZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbiksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSksCiAgICAgICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKaW5kZXggZWViNDgxY2M1NzQ0NmU4MTEyZjViYWViNTZmNjYyMDNkNDRi
MDExZC4uYWVjMjE5YTBlZGEwNmIwMmQxNmNkMmI3MTVlZGZlYjZkMzUxYzc2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTc0LDYgKzc0LDggQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICphbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURp
cmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHksIHNldHRlcj1zZXRT
dGFuZGFsb25lQXBwbGljYXRpb246KSBOU1VSTCAqc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8v
IFRlc3Rpbmcgb25seS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5tbQppbmRleCBiNzVhMDI2YTJjNTk5OTljMzliZmUzOTcxN2RlNDIxM2FmZTFh
NTM5Li5iZjdlOTA4ODA2MTU4Mjg2MmE5OWZiNDk5MzdhNzg4NjgzMWQwYTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBAIC00MjMsNiArNDIzLDE2IEBAIC0g
KHZvaWQpc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0aW9u
CiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKVtjb25maWd1cmF0aW9uIGNvcHldKTsKIH0KIAorLSAoTlNVUkwgKilzdGFu
ZGFsb25lQXBwbGljYXRpb25VUkwKK3sKKyAgICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnN0YW5k
YWxvbmVBcHBsaWNhdGlvblVSTCgpOworfQorCistICh2b2lkKXNldFN0YW5kYWxvbmVBcHBsaWNh
dGlvbjooTlNVUkwgKil1cmwKK3sKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U3RhbmRhbG9uZUFw
cGxpY2F0aW9uVVJMKHVybCk7Cit9CisKIC0gKEJPT0wpYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VN
YW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZwogewogICAgIHJldHVybiBfY29uZmlndXJh
dGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVz
dGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDI5NWE0OWU3YzVkNzA5YjZhMTdjMzcxOGU0YmJjOGY2MDY3YzZjMTcuLmI4ZmU5Yjc5OTJkM2Fl
YmM2N2RlOTZlMjQ2MThhMTMzOGM3ZjIwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU5OSw2ICs1OTksNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSog
d2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
ID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogI2VuZGlmCisg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
IHsgfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0g
V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKQEAgLTYx
Nyw2ICs2MTgsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAgICAgICAgc2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQ7CiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOworICAgICAgICAgICAgc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsK
ICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJl
c291cmNlOwogICAgICAgICB9CiAKQEAgLTY0Miw2ICs2NDQsNyBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
c2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgICAgIGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOworICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJl
c291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBhNzBiN2Q1MDkxNWU0NzdmOTgzNDBiZWU3
NDk2Y2IyYzA2Nzk5OGRhLi5lY2RmOGRmMTEwZjI5MjA4NGQ3ZmFlYWQ0NWViZjhjMzk4ZTk3MDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xODAsNiArMTgwLDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJgogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9k
ZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBzYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZDsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZSA9IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOworICAgIHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgbV9jb25maWd1cmF0aW9uLT5zdGFuZGFsb25lQXBwbGljYXRpb25VUkwoKSB9OwogICAg
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlID0gV1RGTW92ZShyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpOwogCiAgICAgYXV0byBjb29raWVG
aWxlID0gcmVzb2x2ZWRDb29raWVTdG9yYWdlRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDcxZTc2MjdkNmM2NGI1ZDcyNmJkOGQwZGI1ODNiMGJi
YjQ4YzJlMmMuLjBmYjNhMTAyYTM0NTc5ZjBhNWE5YjMzNWMzMmE3OTYxZDk0MmUzOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTkxLDYgKzkxLDcgQEAg
UmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV90ZXN0U3BlZWRNdWx0aXBsaWVyID0g
dGhpcy0+bV90ZXN0U3BlZWRNdWx0aXBsaWVyOwogICAgIGNvcHktPm1fc3VwcHJlc3Nlc0Nvbm5l
Y3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlID0gdGhpcy0+bV9zdXBwcmVzc2VzQ29ubmVj
dGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAgY29weS0+bV9hbGxvd3NTZXJ2ZXJQ
cmVjb25uZWN0ID0gdGhpcy0+bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OworICAgIGNvcHktPm1f
c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMID0gdGhpcy0+bV9zdGFuZGFsb25lQXBwbGljYXRpb25V
Ukw7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcHJveHlDb25maWd1cmF0aW9uKQog
ICAgICAgICBjb3B5LT5tX3Byb3h5Q29uZmlndXJhdGlvbiA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlQ29weShudWxscHRyLCB0aGlzLT5tX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggM2UzNDViMzA1ODAxMGU4
MjVkNDdiNjFiOGU5MjkwMWExNDdhYjE0MC4uMTVmYmU3ZWQ5MGY2MjMxODIwNTY5MzkzYTc4YzFm
YWMxY2ZhMDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0x
NTMsNiArMTUzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c1NlcnZlclByZWNvbm5lY3Qo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c1NlcnZlclByZWNvbm5lY3Q7IH0KICAgICB2b2lkIHNl
dEFsbG93c1NlcnZlclByZWNvbm5lY3QoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NTZXJ2ZXJQcmVj
b25uZWN0ID0gYWxsb3dzOyB9CiAKKyAgICAKKyAgICBjb25zdCBVUkwmIHN0YW5kYWxvbmVBcHBs
aWNhdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOyB9
CisgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkwoVVJMJiYgdXJsKSB7IG1fc3Rh
bmRhbG9uZUFwcGxpY2F0aW9uVVJMID0gV1RGTW92ZSh1cmwpOyB9CisKIHByaXZhdGU6CiAgICAg
SXNQZXJzaXN0ZW50IG1faXNQZXJzaXN0ZW50IHsgSXNQZXJzaXN0ZW50OjpObyB9OwogCkBAIC0x
OTUsNiArMTk5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25U
ZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdCB7IHRydWUgfTsKICAgICB1bnNpZ25lZCBtX3Rlc3RTcGVlZE11bHRpcGxp
ZXIgeyAxIH07CisgICAgVVJMIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fcHJveHlDb25maWd1
cmF0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYTJhYzIzODM4MDViMzdjMmFkZDljMmNlODc1NTVmNDZkNWI3NmZmMC4uNDUy
NDlhODk1YjMyMGZhYzBkNDVmNzA2YTM4Mjk2MmIxOWFlZTVhZCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA0
LTAyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
UEkgdG8gY29uZmlndXJlIFdlYnNpdGVEYXRhU3RvcmVzIHdpdGggYSBVUkwgZm9yIHN0YW5kYWxv
bmUgd2ViIGFwcGxpY2F0aW9ucyBhbmQgdXNlIGl0IHRvIGRpc2FibGUgZmlyc3QtcGFydHkgd2Vi
c2l0ZSBkYXRhIHJlbW92YWwgaW4gSVRQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDk2MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTQzOTcw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGFuIEFQSSB0ZXN0IGZvciB0aGUgbmV3IFNQSS4KKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0
IG9wdGlvbiBjYWxsZWQgc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMIHNvIHRoYXQgbGF5b3V0
IHRlc3RzIGNhbgorICAgICAgICBjb25maWd1cmUgdGhlIHdlYnNpdGUgZGF0YSBzdG9yZSBhY2Nv
cmRpbmdseS4gUGlja2luZyBpdCB1cCBhbmQgdXNpbmcgaXQgcmVxdWlyZXMKKyAgICAgICAgY3Jl
YXRpbmcgYSBuZXcgd2Vic2l0ZSBkYXRhIHN0b3JlIHdpdGggYSBjb25maWd1cmF0aW9uIHRoYXQg
aGFzIHRoZSBzdGFuZGFsb25lIHdlYgorICAgICAgICBhcHBsaWNhdGlvbiBVUkwuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpwYXJzZVN0cmluZ1Rlc3RI
ZWFkZXJWYWx1ZUFzVVJMKToKKyAgICAgICAgKFdUUjo6dXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVz
dEhlYWRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6CisKIDIw
MjAtMDQtMDIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGFkZGl0aW9uYWwgV0tBcHBCb3VuZERvbWFpbnMgdG8gVGVzdFdlYktpdEFQSSdz
IGV4cGVjdGF0aW9ucyBhZnRlciBpbml0aWFsaXppbmcgZVRMRCsxIGJ5IGRlZmF1bHQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0
YXN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNp
dGVEYXRhc3RvcmUubW0KaW5kZXggOWJiMzZkNGFmYTE3NWYwZTEyM2MxY2FmNWU3OTA3YWFmNmYy
NzhmZi4uODljZTRkNDZkNWRkY2JhOTkzOTNjMzE4MzZkNDdlNzE5ZjM2Y2JmOSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3Rv
cmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNp
dGVEYXRhc3RvcmUubW0KQEAgLTMwOSw0ICszMDksMTkgQEAgVEVTVChXS1dlYnNpdGVEYXRhU3Rv
cmUsIEZldGNoTm9uUGVyc2lzdGVudFdlYlN0b3JhZ2UpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwogfQogCitURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwg
U3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKQoreworICAgIGF1dG8gc3RhbmRhbG9uZUFwcGxpY2F0
aW9uVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vIl07
CisKKyAgICBhdXRvIHBlcnNpc3RlbnRXZWJzaXRlRGF0YVN0b3JlQ29uZmlnID0gW1tfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgW3BlcnNpc3RlbnRX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlnIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbjpzdGFuZGFsb25l
QXBwbGljYXRpb25VUkxdOworICAgIGF1dG8gcGVyc2lzdGVudFdlYnNpdGVEYXRhU3RvcmUgPSBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwZXJzaXN0
ZW50V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ107CisgICAgRVhQRUNUX1RSVUUoW1tbcGVyc2lzdGVu
dFdlYnNpdGVEYXRhU3RvcmUgX2NvbmZpZ3VyYXRpb25dIHN0YW5kYWxvbmVBcHBsaWNhdGlvblVS
TF0gaXNFcXVhbDpzdGFuZGFsb25lQXBwbGljYXRpb25VUkxdKTsKKworICAgIGF1dG8gZXBoZW1l
cmFsV2Vic2l0ZURhdGFTdG9yZUNvbmZpZyA9IFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl07CisgICAgW2VwaGVt
ZXJhbFdlYnNpdGVEYXRhU3RvcmVDb25maWcgc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uOnN0YW5k
YWxvbmVBcHBsaWNhdGlvblVSTF07CisgICAgYXV0byBlcGhlbWVyYWxXZWJzaXRlRGF0YVN0b3Jl
ID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZXBo
ZW1lcmFsV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ107CisgICAgRVhQRUNUX1RSVUUoW1tbZXBoZW1l
cmFsV2Vic2l0ZURhdGFTdG9yZSBfY29uZmlndXJhdGlvbl0gc3RhbmRhbG9uZUFwcGxpY2F0aW9u
VVJMXSBpc0VxdWFsOnN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTF0pOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDJhOWJjYjY5OGQzM2E2NjAz
NGFjN2Q5OTYxYjI0ZmY4MWIzODA2ODEuLmQ4NDk4YjA4MGEzZTJkMDVmNzgxN2RlZTA0MDBjYjcw
MDZmNzE5OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xMzU5LDYgKzEzNTksMTEgQEAgc3RhdGljIHN0ZDo6c3RyaW5nIHBhcnNlU3RyaW5nVGVzdEhl
YWRlclZhbHVlQXNSZWxhdGl2ZVBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIHYKICAgICByZXR1cm4g
dG9TVEQoYWRvcHRXSyhXS1VSTENvcHlQYXRoKHJlbGF0aXZlVVJMLmdldCgpKSkpOwogfQogCitz
dGF0aWMgc3RkOjpzdHJpbmcgcGFyc2VTdHJpbmdUZXN0SGVhZGVyVmFsdWVBc1VSTChjb25zdCBz
dGQ6OnN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIHRvU1REKGFkb3B0V0soV0tVUkxDb3B5
U3RyaW5nKGNyZWF0ZVRlc3RVUkwodmFsdWUuY19zdHIoKSkpKSk7Cit9CisKIHN0YXRpYyB2b2lk
IHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25z
LCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgYWJzb2x1
dGVQYXRoKQogewogICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gYWJzb2x1dGVQYXRoOwpAQCAt
MTUxNCw3ICsxNTE5LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhl
YWRlcihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDoKICAgICAgICAgICAgIHRl
c3RPcHRpb25zLmVuYWJsZUNhcHR1cmVBdWRpb0luR1BVUHJvY2VzcyA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiYWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5hbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAic3RhbmRhbG9uZVdlYkFwcGxpY2F0
aW9uVVJMIikKKyAgICAgICAgICAgIHRlc3RPcHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlv
blVSTCA9IHBhcnNlU3RyaW5nVGVzdEhlYWRlclZhbHVlQXNVUkwodmFsdWUpOworCiAgICAgICAg
IHBhaXJTdGFydCA9IHBhaXJFbmQgKyAxOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dE9wdGlvbnMuaAppbmRleCBiY2MwYjg1NjJlNjhiNWMyZGZkYzQ2M2EzODVmMTMyOWJiMmI1NGY3
Li4yOTczYjAyNTIyMmRjZjA4NjViYTE5Nzk1Njk5NDlkOGZhOTk3YTNhIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBAIC0xMTEsNiArMTExLDcgQEAgc3RydWN0IFRlc3RPcHRp
b25zIHsKICAgICBzdGQ6OnN0cmluZyBhcHBsaWNhdGlvbk1hbmlmZXN0OwogICAgIHN0ZDo6c3Ry
aW5nIGpzY09wdGlvbnM7CiAgICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXM7CisgICAgc3RkOjpzdHJpbmcgc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMOwogICAg
IEhhc2hNYXA8U3RyaW5nLCBib29sPiBleHBlcmltZW50YWxGZWF0dXJlczsKICAgICBIYXNoTWFw
PFN0cmluZywgYm9vbD4gaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzOwogICAgIFN0cmluZyBjb250ZW50
TW9kZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQppbmRleCA5OGE1ODZjYzM3N2I1ZTI4OWI2ZjVkODQ5NWUyY2I1ZDEzMGMxNWM1
Li5jMTE1MmQwN2Q5YWRjNmI1YTQwOTVkNTU4NGM2YWNmMjEzYWFiNDgxIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC01
MSw2ICs1MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCkBA
IC0xNTIsMTAgKzE1MywyMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdl
YlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgIGlmIChvcHRp
b25zLmVuYWJsZVVuZG9NYW5hZ2VyQVBJKQogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBf
c2V0VW5kb01hbmFnZXJBUElFbmFibGVkOllFU107CiAKLSAgICBpZiAob3B0aW9ucy51c2VFcGhl
bWVyYWxTZXNzaW9uKSB7CisgICAgaWYgKG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbiAmJiBv
cHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTC5sZW5ndGgoKSkgeworICAgICAgICBh
dXRvIGVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmVDb25maWcgPSBbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dOwor
ICAgICAgICBbZXBoZW1lcmFsV2Vic2l0ZURhdGFTdG9yZUNvbmZpZyBzZXRTdGFuZGFsb25lQXBw
bGljYXRpb246W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3Ry
aW5nOm9wdGlvbnMuc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMLmNfc3RyKCldXV07CisgICAg
ICAgIGF1dG8gZXBoZW1lcmFsV2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZXBoZW1lcmFsV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ10pOworICAgICAgICBbZXBoZW1lcmFsV2Vic2l0ZURhdGFTdG9yZS5nZXQo
KSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKyAgICAgICAgW2NvcGll
ZENvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTplcGhlbWVyYWxXZWJzaXRlRGF0YVN0
b3JlLmdldCgpXTsKKyAgICB9IGVsc2UgaWYgKG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbikg
ewogICAgICAgICBhdXRvIGVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0
YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgICAgICBbZXBoZW1lcmFsV2Vic2l0
ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKICAgICAg
ICAgW2NvcGllZENvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTplcGhlbWVyYWxXZWJz
aXRlRGF0YVN0b3JlXTsKKyAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc3RhbmRhbG9uZVdlYkFwcGxp
Y2F0aW9uVVJMLmxlbmd0aCgpKSB7CisgICAgICAgIGF1dG8gY29waWVkV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZyA9IFtbY29waWVkQ29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfY29uZmln
dXJhdGlvbl07CisgICAgICAgIFtjb3BpZWRXZWJzaXRlRGF0YVN0b3JlQ29uZmlnIHNldFN0YW5k
YWxvbmVBcHBsaWNhdGlvbjpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aFVURjhTdHJpbmc6b3B0aW9ucy5zdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwuY19zdHIoKV1d
XTsKKyAgICAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpjb3BpZWRXZWJzaXRlRGF0YVN0
b3JlQ29uZmlnXSk7CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlLmdldCgpIF9zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworICAgICAgICBbY29waWVkQ29uZmlndXJhdGlv
biBzZXRXZWJzaXRlRGF0YVN0b3JlOndlYnNpdGVEYXRhU3RvcmUuZ2V0KCldOwogICAgIH0KIAog
ICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIF9zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxz
Om9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc107CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDU3ZDk4ZWNj
ZmI2ZmNmZTkxODMyNDFmMTQxMzU4YWI4NjQwM2RjNy4uMmYyZjIzODU4NTAyMjQ3MjU0NTkyYTE1
ZDFmYmM2MDg2OTQ1Yzk2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTAyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gY29u
ZmlndXJlIFdlYnNpdGVEYXRhU3RvcmVzIHdpdGggYSBVUkwgZm9yIHN0YW5kYWxvbmUgd2ViIGFw
cGxpY2F0aW9ucyBhbmQgdXNlIGl0IHRvIGRpc2FibGUgZmlyc3QtcGFydHkgd2Vic2l0ZSBkYXRh
IHJlbW92YWwgaW4gSVRQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDk2MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTQzOTcwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1m
cm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdl
Yi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2Uu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxl
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24uaHRtbDogQWRkZWQuCisKIDIwMjAtMDQtMDIgIEphc29uIExhd3Jl
bmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIERlYnVnIF0g
d2VicnRjL2RhdGFjaGFubmVsL211bHRpcGxlLWNvbm5lY3Rpb25zLmh0bWwgaXMgZmxha3kgdGlt
aW5nIG91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRl
LWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4
ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWI2YTQzNTQ1Mzg5OGM5MDVhZmZmNzE5OTI2YjQyZTQ3ODQxY2JmNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVs
ZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NoZWNrIHRoYXQg
bm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0IHJlbW92ZWQgYWZ0ZXIgYSBwZXJp
b2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vic2l0ZSBpcyBhIHN0YW5kYWxvbmUg
d2ViIGFwcGxpY2F0aW9uLgorCitCZWZvcmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBl
eGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUg
ZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxl
dGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElE
QiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4
aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIg
ZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0
aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0
LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRp
b24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTA2ZjBjOWQ2M2M0MzQ2MTk5NGQ2MWJlNDAzZTNmNjY0NzA0ZTkwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9z
dGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRp
b24tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1OSBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkw9aHR0cDovLzEyNy4wLjAuMSBdIC0tPgor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2ll
cy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
c2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNr
IHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0IHJlbW92ZWQgYWZ0ZXIg
YSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vic2l0ZSBpcyBhIHN0YW5k
YWxvbmUgd2ViIGFwcGxpY2F0aW9uLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rp
dj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFz
ZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29v
a2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29r
aWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tp
ZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0g
YS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAg
IHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxl
bWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlv
bikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAg
ICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNv
b2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgoaXNBZnRlckRlbGV0aW9uID8g
IkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNv
b2tpZXMgZm91bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBo
dHRwT25seUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3Nl
ZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAi
IGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBj
b29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNv
cnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDog
IkJlZm9yZSIpICsgIiBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3Rz
LiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNs
aWVudFNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsg
IiBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29y
dFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3Nl
ZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3RE
YXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsK
KyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291
bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAg
ICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNy
ZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRl
cnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNr
SURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0
cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAg
ICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1h
cGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2lu
dGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOwor
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZh
bCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAg
ICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisg
ICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykg
eworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7
CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRy
eSBjaGVja3MgZXhoYXVzdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJD
aGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGlu
ZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
Q291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURC
IGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFj
aygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVy
TG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxl
dCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFt
ZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAg
ZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFj
aykgeworICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRl
ckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0
b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3Jh
Z2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9l
cyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0
b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRp
b246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/
ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRp
bCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFn
ZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
bG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIg
ZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VW
YWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVy
VGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3Rv
cmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0
b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09
IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOwor
ICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAg
Ly8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNl
cy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVO
YW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRj
aCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQt
Q29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRp
YWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRT
aWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKwor
ICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0
ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xv
Y2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdy
aXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0
UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tX
ZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJv
Y2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNo
ZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUp
OworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAg
cmVzZXRDb29raWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihv
cmlnaW5VbmRlclRlc3QsIGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVu
ZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBv
cmlnaW5VbmRlclRlc3QgKyAiIGdvdCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3Jp
Z2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZB
SUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2
YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29u
dGludWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13
ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNmE0MzU0NTM4
OThjOTA1YWZmZjcxOTkyNmI0MmU0Nzg0MWNiZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBw
bGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGRvZXMg
bm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYg
dGhlIHdlYnNpdGUgaXMgYSBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbi4KKworQmVmb3JlIGRl
bGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRw
T25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2Vz
IGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIg
ZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50
LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMg
ZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5k
YWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5k
YWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyYjg3Y2JjMGVhMDhjMTgzNWFkY2EyZWRiMDQzNzY2MDgyY2VjOTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTggQEAKKzwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMPWh0dHA6Ly8xMjcuMC4wLjEgXSAtLT4K
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tp
ZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVj
ayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVy
IGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYSBzdGFu
ZGFsb25lIHdlYiBhcHBsaWNhdGlvbi48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9k
aXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1l
ID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0g
InNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAi
Y2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBi
KSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJD
YXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVz
c2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1
dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tp
ZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7
CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKChp
c0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJs
ZSBkZWxldGlvbjogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2ll
IG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAg
dW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVy
IiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDog
IiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAg
ICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxl
dGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1z
aWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAg
IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRl
ciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFz
c2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFk
ZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25z
dCBkYk5hbWUgPSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFT
dG9yZShjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
TmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAg
ZmluaXNoVGVzdCgpOworICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
InRlc3QiLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRk
KCJ2YWx1ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNvbnN0IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklE
QjsKKyAgICBsZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElE
OworICAgIGxldCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNr
SURCRGF0YVN0b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAg
bGV0IHJlcXVlc3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNo
ZWNrSURCQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24p
IHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAg
ICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9l
cyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4n
dCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0
IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5
IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVj
ayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
IDIwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVy
ZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFs
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJD
aGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIg
Pj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGNoZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
SURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFm
dGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdl
Q2FsbGJhY2s7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25z
dCBsb2NhbFN0b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVl
ID0gInZhbHVlIjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVy
RGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFn
ZSA9IDA7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGls
IHRoZXJlIGlzIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50
ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgr
K2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2Nh
bFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVs
ZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1
ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0
KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFn
ZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRw
dXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxv
Y2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAg
ICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJ
bnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2Fs
U3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUg
PT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIp
OworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0
b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVy
dmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxl
dCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50
cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3Qi
KSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAg
ICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRp
bnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgi
L2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIg
KyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7Cisg
ICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7
IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0
aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50
LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nv
b2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBs
b2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7
CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKwor
ICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0
YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4
aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVh
a1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENv
bnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUo
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29y
ZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBj
aGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUs
IGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCwgZmFsc2UsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50
ZXJhY3Rpb24ob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZ290IGxvZ2dlZCBmb3IgdXNlciBp
bnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkbid0IGdldCBj
bGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
V2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395321</attachid>
            <date>2020-04-02 16:40:57 -0700</date>
            <delta_ts>2020-04-02 18:54:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209634-20200402164056.patch</filename>
            <type>text/plain</type>
            <size>56084</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhZTY3ZTI5YWIwNWZkNmE4
M2IyMGIyMjRkZDBlYTQ3MTg1YWMyYWYuLjEzMDMxNDU1YjE5ODc4NmM1NTE2NTIwOGZhMzlkNmI3
ZDU4MGZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDQtMDIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBjb25maWd1
cmUgV2Vic2l0ZURhdGFTdG9yZXMgd2l0aCBhIFVSTCBmb3Igc3RhbmRhbG9uZSB3ZWIgYXBwbGlj
YXRpb25zIGFuZCB1c2UgaXQgdG8gZGlzYWJsZSBmaXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVt
b3ZhbCBpbiBJVFAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5NDM5NzA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBh
IG5ldyBwcm9wZXJ0eSB0byBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGNhbGxl
ZAorICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25VUkwgd2l0aCB3aGljaCB0aGUgaG9zdGlu
ZyBhcHBsaWNhdGlvbiBjYW4gaW5mb3JtIHRoZQorICAgICAgICB3ZWJzaXRlIGRhdGEgc3RvcmUg
dGhhdCBpdCdzIHJ1bm5pbmcgYXMgYSBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbi4gVGhpcwor
ICAgICAgICBwcm9wZXJ0eSBoYXMgaXRzIG93biBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWxzbyBmb3J3YXJkcyBhbiBleGlzdGluZyBzdGFuZGFsb25lQXBwbGljYXRpb25V
UkwgYXMgYQorICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBpbnRvIElUUCBzbyB0
aGF0IGV4cGxpY2l0IGV4ZW1wdGlvbnMgY2FuIGJlIG1hZGUKKyAgICAgICAgdG8gZmlyc3QgcGFy
dGllcyBvZiBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbnMuIFRoZSBleGVtcHRpb25zIG1hZGUg
aGVyZQorICAgICAgICBhbGwgZm9yIGFsbCBvZiBJVFAncyB3ZWJzaXRlIGRhdGEgcmVtb3ZhbC4g
VGhpcyBwYXJ0IG9mIHRoZSBjaGFuZ2UgaXMKKyAgICAgICAgY292ZXJlZCBieSB0aGUgbmV3IGxh
eW91dCB0ZXN0cy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0
YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20t
d2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRp
bmdzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAqIFNoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTF0pOgorICAgICAgICAoLVtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRTdGFuZGFsb25lQXBwbGljYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpzdGFuZGFsb25lQXBwbGljYXRpb25VUkwgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0U3RhbmRhbG9u
ZUFwcGxpY2F0aW9uVVJMKToKKwogMjAyMC0wNC0wMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2VQcm94eSBhdHRhY2htZW50IG1ldGhvZHMgc2hv
dWxkIHJldHVybiBlYXJseSBpZiBhdHRhY2htZW50IGVsZW1lbnQgaXMgbm90IGVuYWJsZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IDcyZGI5OWI4MzMzZDNhNThjMTc1M2IwODYyM2ZkM2E5YmJmMTFjMjUuLjYxOGM5MjRl
OWRhNDRmMWI5NTgwMmM4YTZhYTMwNzBjMGE1MWEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjQ1NCw2ICsyNDU0
LDggQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3Ig
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXMKICAgICBWZWN0b3I8RG9tYWluRGF0YT4gZG9t
YWlucyA9IHRoaXMtPmRvbWFpbnMoKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGRvbWFpbklEc1Rv
Q2xlYXJHcmFuZGZhdGhlcmluZzsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IGRvbWFpbnMp
IHsKKyAgICAgICAgaWYgKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbiA9PSBzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW4oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvbGRl
c3RVc2VySW50ZXJhY3Rpb24gPSBzdGQ6Om1pbihvbGRlc3RVc2VySW50ZXJhY3Rpb24sIHN0YXRp
c3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7CiAgICAgICAgIGlmIChzaG91bGRS
ZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihzdGF0aXN0aWMsIHNob3VsZENoZWNrRm9yR3JhbmRmYXRo
ZXJpbmcpKSB7CiAgICAgICAgICAgICB0b0RlbGV0ZU9yUmVzdHJpY3RGb3IuZG9tYWluc1RvRGVs
ZXRlQWxsQ29va2llc0Zvci5hcHBlbmQoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5k
ZXggMDUyODBmMTg1MWFkOTY0ZTViM2FmODEwNzg2Yjg5NGM1YjA3MTY2OS4uYTQzOGMwMjNhNzc2
MDIwMGJiOGFiMTdkMTgyN2UxMTQyOTZmNzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTk3NCw2ICs5NzQsOCBAQCBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5UwogICAgIGF1dG8gb2xkZXN0VXNlckludGVyYWN0aW9uID0gbm93
OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
IHRvRGVsZXRlT3JSZXN0cmljdEZvcjsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzdGF0aXN0aWMucmVn
aXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9uID0gc3RkOjptaW4o
b2xkZXN0VXNlckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUpOwogICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Ioc3RhdGlz
dGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewogICAgICAgICAgICAgdG9EZWxl
dGVPclJlc3RyaWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuYXBwZW5kKHN0YXRp
c3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKaW5kZXggNDc4MTRmMzk1ZTg5ODM0ZTIyODgwM2I3MmVlNWY4YmY2ZjEzZGJjMC4u
YTIzOGFmNmMwNDY4MTU5YmE4ZDZmYjQ3ZWI3ZWQ4MGYwMTQxMjM4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIHsgbV9zYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZCA9IGVuYWJsZWQ7IH07CiAgICAgYm9vbCBpc1NhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZCA9PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZDo6WWVzOyB9OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgeyBtX2Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbW9kZTsgfQorICAgIHZvaWQgc2V0U3Rh
bmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKSB7IG1f
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV1RGTW92ZShkb21haW4pOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5kZXIoY29uc3QgVG9w
RnJhbWVEb21haW4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CkBAIC0yNDUsNiArMjQ2LDcgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgZGVidWdMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdM
b2dnaW5nRW5hYmxlZDsgfTsKICAgICBib29sIGRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH0KICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7IH0KKyAgICBSZWdp
c3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oKSBjb25zdCB7IHJldHVy
biBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhOdW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7
IDUwIH07CiAgICAgCkBAIC0yODUsNiArMjg3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGF0
YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogICAgIFNob3VsZEluY2x1ZGVMb2NhbGhv
c3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVz
IH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9maXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CisgICAgUmVnaXN0cmFibGVEb21haW4g
bV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggMDhlZGU2YzdjM2M0MTJjZjczMzQyMzRlYTY0NzliOTEwYWYxMDQyNi4uNmQ5Y2Q5ZmNiNDhm
NjI4NDdlMGJiZTllNDk4ZWZmYmE0MzQwNjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTYzNSw2ICs2MzUsMjQgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKEZpcnN0UGEKICAgICB9KTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChpc0Vw
aGVtZXJhbCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCisgICAgICAgICAgICBt
X3N0YXRpc3RpY3NTdG9yZS0+c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKFdURk1vdmUo
ZG9tYWluKSk7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCmluZGV4IDM1YjgzMDM3OTA2YmE2NmM0N2VhZTE0NDZmMGJhZTBjNGRh
YWIxNDkuLjMwMzBhNGQ4NjAyYzg2NWM1ODM4MjZkZDJhYmQwYzY0NDhjNmVkMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI3Nyw2ICsyNzcs
NyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAg
ICB2b2lkIHNldFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAK
ICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzMw
NDI3YmYxOThiNDYzYjI1YjUwOWEyMzA3NDJjNGVjNmVjMjhlMC4uNzUyNGU0OGUxOTc2NDQyZmI1
YzY3M2M3OThkNjY0MWM1YTNhYWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTg5LDYgKzg5LDcgQEAgTmV0d29ya1Nlc3Npb246
Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0
d29ya1Nlc3MKICAgICAsIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUpCiAgICAgLCBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQpCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUpCisgICAgLCBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbikKICNlbmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVu
aXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihuZXR3b3JrUHJvY2VzcywgcGFyYW1l
dGVycy5zZXNzaW9uSUQpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMu
dGVzdFNwZWVkTXVsdGlwbGllcikKQEAgLTIwNCw2ICsyMDUsNyBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjpmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCkKICAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUobV90aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNldFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKG1fc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSwgW10geyB9KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbihtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwgW10geyB9
KTsKIH0KIAogYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggNDYzNDI5MzUzNzcxMTFhZWJiMjg0N2RjYTgwZGRlNWI0OTcyZjI3MC4uMDk5
Y2U3NGEzZTA4YTY2YTA2MGZiM2E2MDk1YzEyZWEzOGY1YjYxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTY0LDYgKzE2NCw3IEBAIHBy
b3RlY3RlZDoKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU6OkFsbCB9OwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRF
bmFibGVkIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgeyBXZWJDb3JlOjpTYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8gfTsKICAgICBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXMgfTsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbjsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRl
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXI+IG1fYWRDbGlja0F0dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggZjQ5NzYwOTM1ODdl
NGI4ZmIzZDViYTA5ZmY5YjljMDRlM2QyZjhlNS4uOTI3YWVjM2E3NGFkMWVmY2I1OTQ4YTA0M2Y4
MWZjZjI5ZjliZWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQg
eyBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8gfTsKICNlbmRp
ZgogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OwogICAgIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICAKICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02Myw2ICs2NCw3IEBAIHN0
cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGVuY29kZXIg
PDwgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgZW5j
b2RlciA8PCBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CiAgICAgICAgIGVuY29kZXIgPDwgbWFu
dWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgfQogCkBAIC0xMjAsNiArMTIyLDExIEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGlmICghZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgICAgIGRlY29kZXIgPj4gc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluOworICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICAgICAgT3B0aW9uYWw8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
ICAgICBkZWNvZGVyID4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1h
bnVhbFByZXZhbGVudFJlc291cmNlKQpAQCAtMTM4LDYgKzE0NSw3IEBAIHN0cnVjdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgICAgICBXVEZNb3ZlKCpzYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCksCiAjZW5kaWYKICAgICAgICAgICAgIFdURk1vdmUo
KmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKSwKKyAgICAgICAgICAgIFdURk1vdmUo
KnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCiAgICAgICAgICAgICBXVEZNb3ZlKCptYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSksCiAgICAgICAgIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggZWViNDgxY2M1NzQ0NmU4MTEyZjViYWViNTZm
NjYyMDNkNDRiMDExZC4uYmFlN2JlZTc2OWM1ZTI0NWJhNTcxNDBiNmJkZmYzOTUxNDAyMjk5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTc0LDYgKzc0LDgg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICphbHRlcm5hdGl2ZVNlcnZpY2Vz
U3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5T
VVJMICpzdGFuZGFsb25lQXBwbGljYXRpb25VUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLy8gVGVzdGluZyBvbmx5LgogQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjAp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCmluZGV4IGI3NWEw
MjZhMmM1OTk5OWMzOWJmZTM5NzE3ZGU0MjEzYWZlMWE1MzkuLmViYzBlZTFhZGI1OWI3OGRiY2Fm
MjgyOWNkYzMyYTczZmQ3YmNkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24ubW0KQEAgLTQyMyw2ICs0MjMsMTYgQEAgLSAodm9pZClzZXRQcm94eUNvbmZpZ3VyYXRp
b246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24KICAgICBfY29uZmlndXJhdGlvbi0+c2V0
UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpW2NvbmZpZ3VyYXRp
b24gY29weV0pOwogfQogCistIChOU1VSTCAqKXN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTAorewor
ICAgIHJldHVybiBfY29uZmlndXJhdGlvbi0+c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKCk7Cit9
CisKKy0gKHZvaWQpc2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOihOU1VSTCAqKXVybAorewor
ICAgIF9jb25maWd1cmF0aW9uLT5zZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkwodXJsKTsKK30K
KwogLSAoQk9PTClhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNG
b3JUZXN0aW5nCiB7CiAgICAgcmV0dXJuIF9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRC
eURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMjk1YTQ5ZTdjNWQ3MDliNmExN2Mz
NzE4ZTRiYmM4ZjYwNjdjNmMxNy4uYjhmZTliNzk5MmQzYWViYzY3ZGU5NmUyNDYxOGExMzM4Yzdm
MjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
NTk5LDYgKzU5OSw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1
cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CiAjZW5kaWYKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4geyB9OwogICAgIFdlYkNvcmU6OkZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1
dENvb2tpZXM7CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQg
c2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDo6Tm87CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
bWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwpAQCAtNjE3LDYgKzYxOCw3IEBAIE5ldHdvcmtQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRl
RGF0YVN0b3JlKiB3aXRoCiAgICAgICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICNlbmRpZgogICAgICAg
ICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGU7CisgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwogICAgICAgICAgICAgbWFudWFsUHJl
dmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApA
QCAtNjQyLDYgKzY0NCw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpl
bnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgICAgICBz
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZDsKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CisgICAgICAgICAg
ICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFs
ZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCmluZGV4IGE3MGI3ZDUwOTE1ZTQ3N2Y5ODM0MGJlZTc0OTZjYjJjMDY3OTk4ZGEuLmVjZGY4
ZGYxMTBmMjkyMDg0ZDdmYWVhZDQ1ZWJmOGMzOThlOTcwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KQEAgLTE4MCw2ICsxODAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID0gZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCA9IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOwogICAgIHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBtX2NvbmZpZ3VyYXRpb24t
PnN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCgpIH07CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJl
dmFsZW50UmVzb3VyY2UgPSBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSk7CiAKICAgICBhdXRvIGNvb2tpZUZpbGUgPSByZXNvbHZlZENvb2tpZVN0
b3JhZ2VGaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggNzFlNzYyN2Q2YzY0YjVkNzI2YmQ4ZDBkYjU4M2IwYmJiNDhjMmUyYy4uMGZiM2ExMDJhMzQ1
NzlmMGE1YTliMzM1YzMyYTc5NjFkOTQyZTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcApAQCAtOTEsNiArOTEsNyBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QK
ICAgICBjb3B5LT5tX3Rlc3RTcGVlZE11bHRpcGxpZXIgPSB0aGlzLT5tX3Rlc3RTcGVlZE11bHRp
cGxpZXI7CiAgICAgY29weS0+bV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0
ZW1DaGFuZ2UgPSB0aGlzLT5tX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZTsKICAgICBjb3B5LT5tX2FsbG93c1NlcnZlclByZWNvbm5lY3QgPSB0aGlzLT5tX2Fs
bG93c1NlcnZlclByZWNvbm5lY3Q7CisgICAgY29weS0+bV9zdGFuZGFsb25lQXBwbGljYXRpb25V
UkwgPSB0aGlzLT5tX3N0YW5kYWxvbmVBcHBsaWNhdGlvblVSTDsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpZiAobV9wcm94eUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIGNvcHktPm1fcHJveHlD
b25maWd1cmF0aW9uID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KG51bGxwdHIsIHRo
aXMtPm1fcHJveHlDb25maWd1cmF0aW9uLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaAppbmRleCAzZTM0NWIzMDU4MDEwZTgyNWQ0N2I2MWI4ZTkyOTAxYTE0N2Fi
MTQwLi4xNWZiZTdlZDkwZjYyMzE4MjA1NjkzOTNhNzhjMWZhYzFjZmEwNjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTE1Myw2ICsxNTMsMTAgQEAgcHVibGlj
OgogICAgIGJvb2wgYWxsb3dzU2VydmVyUHJlY29ubmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dzU2VydmVyUHJlY29ubmVjdDsgfQogICAgIHZvaWQgc2V0QWxsb3dzU2VydmVyUHJlY29ubmVj
dChib29sIGFsbG93cykgeyBtX2FsbG93c1NlcnZlclByZWNvbm5lY3QgPSBhbGxvd3M7IH0KIAor
ICAgIAorICAgIGNvbnN0IFVSTCYgc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkw7IH0KKyAgICB2b2lkIHNldFN0YW5kYWxv
bmVBcHBsaWNhdGlvblVSTChVUkwmJiB1cmwpIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkwg
PSBXVEZNb3ZlKHVybCk7IH0KKwogcHJpdmF0ZToKICAgICBJc1BlcnNpc3RlbnQgbV9pc1BlcnNp
c3RlbnQgeyBJc1BlcnNpc3RlbnQ6Ok5vIH07CiAKQEAgLTE5NSw2ICsxOTksNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFu
Z2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0IHsgdHJ1ZSB9
OwogICAgIHVuc2lnbmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEgfTsKKyAgICBVUkwgbV9z
dGFuZGFsb25lQXBwbGljYXRpb25VUkw7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gbV9wcm94eUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYWU4ZDRhOWYz
MGM0YzEwYWFkMmYwNjk4ZDIyNDZiNzhkNmE0NzVkLi45OGE3MjNkZDQwMzViZDg3MjU2NzJlMDZl
Njc0ZmNlZWVjNzM3YzZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDQtMDIgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBjb25maWd1cmUgV2Vic2l0
ZURhdGFTdG9yZXMgd2l0aCBhIFVSTCBmb3Igc3RhbmRhbG9uZSB3ZWIgYXBwbGljYXRpb25zIGFu
ZCB1c2UgaXQgdG8gZGlzYWJsZSBmaXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVtb3ZhbCBpbiBJ
VFAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTYz
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5NDM5NzA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gQVBJIHRlc3QgZm9yIHRoZSBu
ZXcgU1BJLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3Qgb3B0aW9uIGNhbGxlZCBzdGFuZGFs
b25lV2ViQXBwbGljYXRpb25VUkwgc28gdGhhdCBsYXlvdXQgdGVzdHMgY2FuCisgICAgICAgIGNv
bmZpZ3VyZSB0aGUgd2Vic2l0ZSBkYXRhIHN0b3JlIGFjY29yZGluZ2x5LiBQaWNraW5nIGl0IHVw
IGFuZCB1c2luZyBpdCByZXF1aXJlcworICAgICAgICBjcmVhdGluZyBhIG5ldyB3ZWJzaXRlIGRh
dGEgc3RvcmUgd2l0aCBhIGNvbmZpZ3VyYXRpb24gdGhhdCBoYXMgdGhlIHN0YW5kYWxvbmUgd2Vi
CisgICAgICAgIGFwcGxpY2F0aW9uIFVSTC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OnBhcnNlU3RyaW5nVGVzdEhlYWRlclZhbHVlQXNVUkwpOgorICAg
ICAgICAoV1RSOjp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKwogMjAyMC0wNC0wMiAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ2ODUpOiBM
ZWFrIG9mIENBTGF5ZXIgaW4gY3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkgaW4gUGx1Z2luT2Jq
ZWN0TWFjLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCmluZGV4IDliYjM2ZDRhZmExNzVmMGUxMjNj
MWNhZjVlNzkwN2FhZjZmMjc4ZmYuLmJkOGMzNWNjMGFmMzZlN2Q2NDQ0ODg1YmYyMmVmNTM5N2Zk
YjY4YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tXZWJzaXRlRGF0YXN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCkBAIC0zMDksNCArMzA5LDE5IEBAIFRFU1Qo
V0tXZWJzaXRlRGF0YVN0b3JlLCBGZXRjaE5vblBlcnNpc3RlbnRXZWJTdG9yYWdlKQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKIH0KIAorVEVTVChXS1dl
YnNpdGVEYXRhU3RvcmUsIFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCkKK3sKKyAgICBhdXRvIHN0
YW5kYWxvbmVBcHBsaWNhdGlvblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93
d3cuYXBwbGUuY29tLyJdOworCisgICAgYXV0byBwZXJzaXN0ZW50V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZyA9IFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwor
ICAgIFtwZXJzaXN0ZW50V2Vic2l0ZURhdGFTdG9yZUNvbmZpZyBzZXRTdGFuZGFsb25lQXBwbGlj
YXRpb25VUkw6c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMXTsKKyAgICBhdXRvIHBlcnNpc3RlbnRX
ZWJzaXRlRGF0YVN0b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cGVyc2lzdGVudFdlYnNpdGVEYXRhU3RvcmVDb25maWddOworICAgIEVYUEVD
VF9UUlVFKFtbW3BlcnNpc3RlbnRXZWJzaXRlRGF0YVN0b3JlIF9jb25maWd1cmF0aW9uXSBzdGFu
ZGFsb25lQXBwbGljYXRpb25VUkxdIGlzRXF1YWw6c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMXSk7
CisKKyAgICBhdXRvIGVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmVDb25maWcgPSBbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3Vy
YXRpb25dOworICAgIFtlcGhlbWVyYWxXZWJzaXRlRGF0YVN0b3JlQ29uZmlnIHNldFN0YW5kYWxv
bmVBcHBsaWNhdGlvblVSTDpzdGFuZGFsb25lQXBwbGljYXRpb25VUkxdOworICAgIGF1dG8gZXBo
ZW1lcmFsV2Vic2l0ZURhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOmVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmVDb25maWddOworICAg
IEVYUEVDVF9UUlVFKFtbW2VwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmUgX2NvbmZpZ3VyYXRpb25d
IHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTF0gaXNFcXVhbDpzdGFuZGFsb25lQXBwbGljYXRpb25V
UkxdKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApp
bmRleCA3N2E2NDQzNTE1NGRlOWMzYjAyNGZkYzY3ZjdmYzg2YWU3YzQxY2Q2Li5lZDcwMDJhN2Rj
OTA4ZmZmOGI3ZTljN2ExYjA0ZmQ4YTk5M2Y1MzEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTM1OSw2ICsxMzU5LDExIEBAIHN0YXRpYyBzdGQ6OnN0
cmluZyBwYXJzZVN0cmluZ1Rlc3RIZWFkZXJWYWx1ZUFzUmVsYXRpdmVQYXRoKGNvbnN0IHN0ZDo6
c3RyaW5nJiB2CiAgICAgcmV0dXJuIHRvU1REKGFkb3B0V0soV0tVUkxDb3B5UGF0aChyZWxhdGl2
ZVVSTC5nZXQoKSkpKTsKIH0KIAorc3RhdGljIHN0ZDo6c3RyaW5nIHBhcnNlU3RyaW5nVGVzdEhl
YWRlclZhbHVlQXNVUkwoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiB0
b1NURChhZG9wdFdLKFdLVVJMQ29weVN0cmluZyhjcmVhdGVUZXN0VVJMKHZhbHVlLmNfc3RyKCkp
KSkpOworfQorCiBzdGF0aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKFRl
c3RPcHRpb25zJiB0ZXN0T3B0aW9ucywgY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCwgY29u
c3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCkKIHsKICAgICBzdGQ6OnN0cmluZyBmaWxlbmFt
ZSA9IGFic29sdXRlUGF0aDsKQEAgLTE1MTIsNyArMTUxNyw5IEBAIHN0YXRpYyB2b2lkIHVwZGF0
ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25z
dCBzdGQ6CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVDYXB0dXJlQXVkaW9JbkdQVVBy
b2Nlc3MgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNl
IGlmIChrZXkgPT0gImFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiKQogICAgICAgICAgICAg
dGVzdE9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIAorICAgICAgICBlbHNlIGlmIChrZXkgPT0g
InN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTCIpCisgICAgICAgICAgICB0ZXN0T3B0aW9ucy5z
dGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwgPSBwYXJzZVN0cmluZ1Rlc3RIZWFkZXJWYWx1ZUFz
VVJMKHZhbHVlKTsKKwogICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKaW5kZXggYjk0ZjhmNzE5YjYxMzNmNzU4
YmMzZjQ2ZWRlNTE0YmE4ZDhmYzExZC4uN2JkMDc2YzFkZmQ2YTc1ZTA1YjE3YTYyZDMyYjI4MTVm
YmE2ZWU5NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaApAQCAtMTEwLDYgKzEx
MCw3IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgc3RkOjpzdHJpbmcgYXBwbGljYXRpb25N
YW5pZmVzdDsKICAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zOwogICAgIHN0ZDo6c3RyaW5nIGFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOworICAgIHN0ZDo6c3RyaW5nIHN0YW5kYWxvbmVX
ZWJBcHBsaWNhdGlvblVSTDsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gZXhwZXJpbWVudGFs
RmVhdHVyZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IGludGVybmFsRGVidWdGZWF0dXJl
czsKICAgICBTdHJpbmcgY29udGVudE1vZGU7CkBAIC0xNjgsNyArMTY5LDggQEAgc3RydWN0IFRl
c3RPcHRpb25zIHsKICAgICAgICAgICAgIHx8IGVuYWJsZUNhcHR1cmVWaWRlb0luVUlQcm9jZXNz
ICE9IG9wdGlvbnMuZW5hYmxlQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MKICAgICAgICAgICAgIHx8
IGVuYWJsZUNhcHR1cmVWaWRlb0luR1BVUHJvY2VzcyAhPSBvcHRpb25zLmVuYWJsZUNhcHR1cmVW
aWRlb0luR1BVUHJvY2VzcwogICAgICAgICAgICAgfHwgZW5hYmxlQ2FwdHVyZUF1ZGlvSW5HUFVQ
cm9jZXNzICE9IG9wdGlvbnMuZW5hYmxlQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzCi0gICAgICAg
ICAgICB8fCBhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzICE9IG9wdGlvbnMuYWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcykKKyAgICAgICAgICAgIHx8IGFsbG93VG9wTmF2aWdhdGlvblRv
RGF0YVVSTHMgIT0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzCisgICAgICAg
ICAgICB8fCBzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwgIT0gb3B0aW9ucy5zdGFuZGFsb25l
V2ViQXBwbGljYXRpb25VUkwpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
aWYgKCFjb250ZXh0T3B0aW9ucy5oYXNTYW1lSW5pdGlhbGl6YXRpb25PcHRpb25zKG9wdGlvbnMu
Y29udGV4dE9wdGlvbnMpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDU0OGZlNzMxMzA2NjQ2OGYyZGFhNzZjMjE1MDBl
MGEyYTQwODQxYmYuLjAzMzQ5OGNiOGRkZWU5ZThmZmQ2Zjk0MDlmMTUzNjQyMTQ1NmU0OTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tBcHBsaWNhdGlvbk1h
bmlmZXN0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg+CiAKQEAgLTE0OSwxMCArMTUwLDEzIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0CiAg
ICAgaWYgKG9wdGlvbnMuZW5hYmxlRWRpdGFibGVJbWFnZXMpCiAgICAgICAgIFtjb3BpZWRDb25m
aWd1cmF0aW9uIF9zZXRFZGl0YWJsZUltYWdlc0VuYWJsZWQ6WUVTXTsKIAotICAgIGlmIChvcHRp
b25zLnVzZUVwaGVtZXJhbFNlc3Npb24pIHsKLSAgICAgICAgYXV0byBlcGhlbWVyYWxXZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsK
LSAgICAgICAgW2VwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOllFU107Ci0gICAgICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIHNldFdlYnNp
dGVEYXRhU3RvcmU6ZXBoZW1lcmFsV2Vic2l0ZURhdGFTdG9yZV07CisgICAgaWYgKG9wdGlvbnMu
dXNlRXBoZW1lcmFsU2Vzc2lvbiB8fCBvcHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVS
TC5sZW5ndGgoKSkgeworICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWcgPSBvcHRp
b25zLnVzZUVwaGVtZXJhbFNlc3Npb24gPyBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV0g
OiBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBpZiAob3B0aW9ucy5zdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwu
bGVuZ3RoKCkpCisgICAgICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyBzZXRTdGFuZGFs
b25lQXBwbGljYXRpb25VUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOm9wdGlvbnMuc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMLmNfc3RyKCld
XV07CisgICAgICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnXSBh
dXRvcmVsZWFzZV07CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDpZRVNdOworICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBzZXRX
ZWJzaXRlRGF0YVN0b3JlOndlYnNpdGVEYXRhU3RvcmVdOwogICAgIH0KIAogICAgIFtjb3BpZWRD
b25maWd1cmF0aW9uIF9zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOm9wdGlvbnMuYWxs
b3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc107CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWVkN2NmOTdlNDM4NThkNjAzMDQx
YzUyNDNkYmI4YTI1N2MxMWZjNC4uYjJkNGQzYjgzYmNiYWRjMjQ1ZjVmMTg2ODcxY2NjNDE2ZTQz
NjI0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTAyICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gY29uZmlndXJlIFdlYnNp
dGVEYXRhU3RvcmVzIHdpdGggYSBVUkwgZm9yIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9ucyBh
bmQgdXNlIGl0IHRvIGRpc2FibGUgZmlyc3QtcGFydHkgd2Vic2l0ZSBkYXRhIHJlbW92YWwgaW4g
SVRQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2
MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTQzOTcwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUt
ZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlv
bi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUt
d2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVs
ZXRpb24uaHRtbDogQWRkZWQuCisKIDIwMjAtMDQtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW2lPUyB3azIgRGVidWddIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi1tYXJrdXAvc2NyaXB0cy9jcmFtcGVkLTAw
MS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJv
bS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxp
Y2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWI2YTQzNTQ1Mzg5OGM5MDVhZmZmNzE5OTI2YjQyZTQ3ODQxY2Jm
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRl
LWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0No
ZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0IHJlbW92ZWQgYWZ0
ZXIgYSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vic2l0ZSBpcyBhIHN0
YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9uLgorCitCZWZvcmUgZGVsZXRpb246IENsaWVudC1zaWRl
IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0Jl
Zm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVs
ZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBkZWxldGlvbjogSHR0cE9ubHkg
Y29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3Rz
LgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0Fm
dGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0
aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRp
b24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjRmNjQyMzMzZGY2N2Q3MDQzZTdjZDg5MTVmMGEwOTczOGMwZGJhMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1NSBAQAorPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkw9aHR0cDovLzEyNy4wLjAu
MSBdIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRp
b24iPkNoZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0IHJlbW92
ZWQgYWZ0ZXIgYSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vic2l0ZSBp
cyBhIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9uLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0
cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJ
VFBEYXRhYmFzZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRw
LW9ubHktY29va2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXIt
c2lkZS1jb29raWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1z
aWRlLWNvb2tpZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAg
ICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOwor
CisgICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsK
KyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0
ZXJEZWxldGlvbikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBb
XTsKKyAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAg
ICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVs
ZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlv
bjogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tp
ZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZv
cmUiKSArICIgZGVsZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0
dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAg
ICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJB
ZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tp
ZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBs
ZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMu
c29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2Fn
ZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0
ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUg
PSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxs
YmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0
cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVz
dCgpOworICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0Owor
ICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7
YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIp
OworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0
IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBs
ZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxl
dCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0
b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVl
c3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAg
ICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJ
REJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhp
c3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFs
SUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGlu
ZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0
IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3Jl
SURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhp
c3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElE
Qi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRy
dWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50
ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjog
SURCIGVudHJ5IGNoZWNrcyBleGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50
ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0
aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lE
QkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZh
bENvdW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7
CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0
b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVl
IjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24s
IGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7Cisg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYg
KCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlz
IExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9
IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFs
Q291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExv
Y2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2Vz
IiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVt
KGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9y
ZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENo
ZWNrIHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2Fs
U3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3Jp
Z2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
TG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2
YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhp
c3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAg
fQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewor
ICAgICAgICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMv
cmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25s
eUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3
YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6
IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwg
Y3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9
IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFs
c2UpOworCisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3Jh
Z2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAg
ICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxz
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0
KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFj
ayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tp
ZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRl
c3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewor
ICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVu
ZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBv
cmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7
CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4
ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGlj
YXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YjZhNDM1NDUzODk4YzkwNWFmZmY3MTk5MjZiNDJlNDc4NDFjYmY3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxl
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorQ2hlY2sgdGhhdCBub24tY29va2ll
IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1
c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGEgc3RhbmRhbG9uZSB3ZWIgYXBwbGlj
YXRpb24uCisKK0JlZm9yZSBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0Jl
Zm9yZSBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjog
UmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0JlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRv
ZXMgZXhpc3QuCisKK0FmdGVyIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQWZ0
ZXIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjog
UmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IExvY2Fs
U3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2Vz
IGV4aXN0LgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjg0NGMwMTg1NjU5ZTBlMmRkMzI4
OWVkMWJiNGU1ZTU3ZjMzMDc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4
ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sCkBAIC0wLDAgKzEsMjU0IEBACis8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTD1odHRw
Oi8vMTI3LjAuMC4xIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+Q2hlY2sgdGhhdCBub24tY29va2llIHdlYnNpdGUgZGF0YSBkb2VzIG5v
dCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRo
ZSB3ZWJzaXRlIGlzIGEgc3RhbmRhbG9uZSB3ZWIgYXBwbGljYXRpb24uPC9kaXY+Cis8YnI+Cis8
ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGNvbnN0
IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKKyAgICBjb25zdCBzZXJ2
ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOworICAgIGNvbnN0IGNsaWVu
dFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7CisKKyAgICBmdW5jdGlvbiBz
b3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAg
ICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBi
ID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1
dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIp
OworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNz
YWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICBsZXQgdW5z
b3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRl
cm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAg
ICAgICAgYWRkT3V0cHV0KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsg
IiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAg
ICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29v
a2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
ckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246ICIgKyAoaXNBZnRl
ckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNv
b2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2Vz
LnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9u
OiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0
ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiBDbGllbnQtc2lk
ZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0g
dW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAg
ICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMp
IHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0
aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERC
LiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9OworICAgICAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQg
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAg
ICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0
IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQg
Y2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2Fs
bGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklE
QiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYg
KCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlz
IGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1h
eEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0
aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBk
ZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2Vt
YXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGNoZWNrcyBleGhhdXN0ZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWRE
Qi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVy
dmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0
IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50
ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0
IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3Rv
cmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFs
Q291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRl
cnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3Rv
cmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0
b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09
PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2
YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5
ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90Iikg
KyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3Rv
cmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxv
Y2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdl
IGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMg
bm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFn
ZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9u
OiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAi
ZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVX
ZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVzLgorICAg
ICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2ll
LnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJz
YW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMv
c2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29v
a2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7
CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsK
KworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRlIExvY2Fs
U3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBs
b2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNl
LCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAg
ICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBj
aGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nl
c3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNp
dGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3Rp
Y3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUp
OworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFS
ZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRp
bnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0
YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxz
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2lu
VW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZG4ndCBnZXQg
Y2xhc3NpZmllZCBhcyBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395332</attachid>
            <date>2020-04-02 18:54:09 -0700</date>
            <delta_ts>2020-04-15 17:22:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209634-20200402185408.patch</filename>
            <type>text/plain</type>
            <size>54354</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhZTY3ZTI5YWIwNWZkNmE4
M2IyMGIyMjRkZDBlYTQ3MTg1YWMyYWYuLmRlOWZkMjFkNjE3Njk2NDk4OGViN2E4NDNlMTg2Njk5
OGUxNTNmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDQtMDIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBjb25maWd1
cmUgV2Vic2l0ZURhdGFTdG9yZXMgd2l0aCBhIFVSTCBmb3Igc3RhbmRhbG9uZSB3ZWIgYXBwbGlj
YXRpb25zIGFuZCB1c2UgaXQgdG8gZGlzYWJsZSBmaXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVt
b3ZhbCBpbiBJVFAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5NDM5NzA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGEgbmV3IHByb3BlcnR5IHRvIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggY2Fs
bGVkCisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCB3aXRoIHdoaWNoIHRoZSBob3N0
aW5nIGFwcGxpY2F0aW9uIGNhbiBpbmZvcm0gdGhlCisgICAgICAgIHdlYnNpdGUgZGF0YSBzdG9y
ZSB0aGF0IGl0J3MgcnVubmluZyBhcyBhIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9uLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGFsc28gZm9yd2FyZHMgYW4gZXhpc3Rpbmcgc3RhbmRhbG9uZUFw
cGxpY2F0aW9uVVJMIGFzIGEKKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gaW50
byBJVFAgc28gdGhhdCBleHBsaWNpdCBleGVtcHRpb25zIGNhbiBiZSBtYWRlCisgICAgICAgIHRv
IGZpcnN0IHBhcnRpZXMgb2Ygc3RhbmRhbG9uZSB3ZWIgYXBwbGljYXRpb25zLiBUaGUgZXhlbXB0
aW9ucyBtYWRlIGhlcmUKKyAgICAgICAgYWxsIGZvciBhbGwgb2YgSVRQJ3Mgd2Vic2l0ZSBkYXRh
IHJlbW92YWwuIFRoaXMgcGFydCBvZiB0aGUgY2hhbmdlIGlzCisgICAgICAgIGNvdmVyZWQgYnkg
dGhlIG5ldyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13
ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4
ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Zm9yd2FyZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXR0aW5ncyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aDoKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzdGFuZGFsb25lQXBwbGljYXRpb25VUkxdKToKKyAgICAg
ICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U3RhbmRhbG9uZUFwcGxp
Y2F0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3Jr
UGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNl
dFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCk6CisKIDIwMjAtMDQtMDIgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJQYWdlUHJveHkgYXR0YWNobWVudCBt
ZXRob2RzIHNob3VsZCByZXR1cm4gZWFybHkgaWYgYXR0YWNobWVudCBlbGVtZW50IGlzIG5vdCBl
bmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCA3MmRiOTliODMzM2QzYTU4YzE3NTNiMDg2MjNmZDNhOWJiZjExYzI1
Li42MThjOTI0ZTlkYTQ0ZjFiOTU4MDJjOGE2YWEzMDcwYzBhNTFhMzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI0
NTQsNiArMjQ1NCw4IEBAIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNp
dGVEYXRhRm9yIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzCiAgICAgVmVjdG9yPERvbWFp
bkRhdGE+IGRvbWFpbnMgPSB0aGlzLT5kb21haW5zKCk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBk
b21haW5JRHNUb0NsZWFyR3JhbmRmYXRoZXJpbmc7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMg
OiBkb21haW5zKSB7CisgICAgICAgIGlmIChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4gPT0g
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgb2xkZXN0VXNlckludGVyYWN0aW9uID0gc3RkOjptaW4ob2xkZXN0VXNlckludGVyYWN0
aW9uLCBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpOwogICAgICAgICBp
ZiAoc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0Zv
ckdyYW5kZmF0aGVyaW5nKSkgewogICAgICAgICAgICAgdG9EZWxldGVPclJlc3RyaWN0Rm9yLmRv
bWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURv
bWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwCmluZGV4IDA1MjgwZjE4NTFhZDk2NGU1YjNhZjgxMDc4NmI4OTRjNWIwNzE2NjkuLmE0
MzhjMDIzYTc3NjAyMDBiYjhhYjE3ZDE4MjdlMTE0Mjk2Zjc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC05NzQsNiArOTc0
LDggQEAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3Ig
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVMKICAgICBhdXRvIG9sZGVzdFVzZXJJbnRlcmFj
dGlvbiA9IG5vdzsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJz
aXRlRGF0YUZvciB0b0RlbGV0ZU9yUmVzdHJpY3RGb3I7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0
aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc3Rh
dGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluID09IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbigp
KQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9
IHN0ZDo6bWluKG9sZGVzdFVzZXJJbnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lKTsKICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRh
Rm9yKHN0YXRpc3RpYywgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKICAgICAgICAg
ICAgIHRvRGVsZXRlT3JSZXN0cmljdEZvci5kb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yLmFw
cGVuZChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDQ3ODE0ZjM5NWU4OTgzNGUyMjg4MDNiNzJlZTVmOGJm
NmYxM2RiYzAuLmEyMzhhZjZjMDQ2ODE1OWJhOGQ2ZmI0N2ViN2VkODBmMDE0MTIzOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE2OCw2ICsxNjgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChX
ZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSB7IG1fc2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBlbmFibGVkOyB9OwogICAgIGJvb2wgaXNT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPT0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQ6OlllczsgfTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1v
ZGUpIHsgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG1vZGU7IH0KKyAgICB2
b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbikgeyBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdURk1vdmUoZG9tYWluKTsg
fQogCiAgICAgdmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVy
KGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwpAQCAtMjQ1LDYgKzI0Niw3IEBA
IHByb3RlY3RlZDoKICAgICBib29sIGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQ7IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9
CisgICAgUmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47IH0KIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZSZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RU
cmFjZUJhY2sgeyA1MCB9OwogICAgIApAQCAtMjg1LDYgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVkIHsgZmFsc2UgfTsKICAgICBTaG91bGRJbmNs
dWRlTG9jYWxob3N0IG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2Nh
bGhvc3Q6OlllcyB9OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OworICAgIFJlZ2lzdHJh
YmxlRG9tYWluIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCmluZGV4IDA4ZWRlNmM3YzNjNDEyY2Y3MzM0MjM0ZWE2NDc5YjkxMGFmMTA0MjYuLjZk
OWNkOWZjYjQ4ZjYyODQ3ZTBiYmU5ZTQ5OGVmZmJhNDM0MDY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC02MzUsNiArNjM1LDI0IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZShGaXJzdFBhCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAg
ICBpZiAoaXNFcGhlbWVyYWwoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFp
bi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQorICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bihXVEZNb3ZlKGRvbWFpbikpOworICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWRDcmVhdGVOZXR3b3JrUHJvY2Vzcygp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAzNWI4MzAzNzkwNmJhNjZjNDdlYWUxNDQ2
ZjBiYWUwYzRkYWFiMTQ5Li4zMDMwYTRkODYwMmM4NjVjNTgzODI2ZGQyYWJkMGM2NDQ4YzZlZDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0y
NzcsNiArMjc3LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHNldFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk7CiAgICAgdm9pZCBzZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJD
b3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJv
Y2VzcygpOwogCiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2Vk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDMzMDQyN2JmMTk4YjQ2M2IyNWI1MDlhMjMwNzQyYzRlYzZlYzI4ZTAuLjc1MjRlNDhl
MTk3NjQ0MmZiNWM2NzNjNzk4ZDY2NDFjNWEzYWFlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC04OSw2ICs4OSw3IEBAIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUo
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy50aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKQogICAgICwgbV9zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkKQogICAgICwgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQorICAgICwgbV9zdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4ocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAjZW5kaWYKICAgICAsIG1fYWRDbGlja0F0dHJpYnV0
aW9uKG1ha2VVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4obmV0d29ya1Byb2Nl
c3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkKICAgICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihw
YXJhbWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIpCkBAIC0yMDQsNiArMjA1LDcgQEAgdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6Zm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpCiAg
ICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChtX3NhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKG1fZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUsIFtdIHsgfSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5z
ZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4obV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW4sIFtdIHsgfSk7CiB9CiAKIGJvb2wgTmV0d29ya1Nlc3Npb246OmlzUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDQ2MzQyOTM1Mzc3MTExYWViYjI4NDdkY2E4MGRkZTViNDk3
MmYyNzAuLjA5OWNlNzRhM2UwOGE2NmEwNjBmYjNhNjA5NWMxMmVhMzhmNWI2MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTE2NCw2ICsx
NjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZCBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2Vi
Q29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CiAgICAgV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OjpBbGxCdXRDb29raWVzIH07CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9zdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CiAjZW5kaWYKICAgICBib29sIG1faXNTdGFsZVdoaWxl
UmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFVuaXF1ZVJlZjxBZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyPiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCmluZGV4IGY0
OTc2MDkzNTg3ZTRiOGZiM2Q1YmEwOWZmOWI5YzA0ZTNkMmY4ZTUuLjkyN2FlYzNhNzRhZDFlZmNi
NTk0OGEwNDNmODFmY2YyOWY5YmViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaApAQCAtNDcsNiArNDcsNyBA
QCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6
OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5v
IH07CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CisgICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKICAgICBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAg
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjMsNiAr
NjQsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAg
ICBlbmNvZGVyIDw8IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOwogI2VuZGlmCiAg
ICAgICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CisgICAg
ICAgIGVuY29kZXIgPDwgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwogICAgICAgICBlbmNv
ZGVyIDw8IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIH0KIApAQCAtMTIwLDYgKzEyMiwx
MSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBp
ZiAoIWZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAorICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOworICAgICAgICBkZWNvZGVyID4+IHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtYW51YWxQcmV2YWxlbnRSZXNv
dXJjZTsKICAgICAgICAgZGVjb2RlciA+PiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAg
ICAgaWYgKCFtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKQEAgLTEzOCw2ICsxNDUsNyBAQCBzdHJ1
Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICAgICAgV1RGTW92
ZSgqc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpLAogI2VuZGlmCiAgICAgICAgICAg
ICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSksCisgICAgICAgICAg
ICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pLAogICAgICAgICAgICAgV1RG
TW92ZSgqbWFudWFsUHJldmFsZW50UmVzb3VyY2UpLAogICAgICAgICB9fTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IGVlYjQ4MWNjNTc0NDZlODEx
MmY1YmFlYjU2ZjY2MjAzZDQ0YjAxMWQuLmJhZTdiZWU3NjljNWUyNDViYTU3MTQwYjZiZGZmMzk1
MTQwMjI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC03
NCw2ICs3NCw4IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSkK
IAogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VSTCAqYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxl
LCBjb3B5KSBOU1VSTCAqc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8vIFRlc3Rpbmcgb25seS4K
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpp
bmRleCBiNzVhMDI2YTJjNTk5OTljMzliZmUzOTcxN2RlNDIxM2FmZTFhNTM5Li5lYmMwZWUxYWRi
NTliNzhkYmNhZjI4MjljZGMzMmE3M2ZkN2JjZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLm1tCkBAIC00MjMsNiArNDIzLDE2IEBAIC0gKHZvaWQpc2V0UHJveHlD
b25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0aW9uCiAgICAgX2NvbmZpZ3Vy
YXRpb24tPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKVtj
b25maWd1cmF0aW9uIGNvcHldKTsKIH0KIAorLSAoTlNVUkwgKilzdGFuZGFsb25lQXBwbGljYXRp
b25VUkwKK3sKKyAgICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnN0YW5kYWxvbmVBcHBsaWNhdGlv
blVSTCgpOworfQorCistICh2b2lkKXNldFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTDooTlNVUkwg
Kil1cmwKK3sKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJM
KHVybCk7Cit9CisKIC0gKEJPT0wpYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRm9yVGVzdGluZwogewogICAgIHJldHVybiBfY29uZmlndXJhdGlvbi0+YWxsTG9h
ZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDI5NWE0OWU3YzVk
NzA5YjZhMTdjMzcxOGU0YmJjOGY2MDY3YzZjMTcuLmI4ZmU5Yjc5OTJkM2FlYmM2N2RlOTZlMjQ2
MThhMTMzOGM3ZjIwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTU5OSw2ICs1OTksNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNz
UG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogI2VuZGlmCisgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluIHsgfTsKICAgICBX
ZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlOjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29yZTo6U2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKQEAgLTYxNyw2ICs2MTgsNyBA
QCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAjZW5k
aWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOworICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgICAg
IG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
ICAgICB9CiAKQEAgLTY0Miw2ICs2NDQsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAg
ICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwor
ICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbjsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1h
bnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQppbmRleCBhNzBiN2Q1MDkxNWU0NzdmOTgzNDBiZWU3NDk2Y2IyYzA2Nzk5
OGRhLi5lY2RmOGRmMTEwZjI5MjA4NGQ3ZmFlYWQ0NWViZjhjMzk4ZTk3MDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xODAsNiArMTgwLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJgogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9kZSA9IGVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZDsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgbV9jb25m
aWd1cmF0aW9uLT5zdGFuZGFsb25lQXBwbGljYXRpb25VUkwoKSB9OwogICAgIHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
Lm1hbnVhbFByZXZhbGVudFJlc291cmNlID0gV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFudWFsUHJldmFsZW50UmVzb3VyY2UpOwogCiAgICAgYXV0byBjb29raWVGaWxlID0gcmVzb2x2
ZWRDb29raWVTdG9yYWdlRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwCmluZGV4IDcxZTc2MjdkNmM2NGI1ZDcyNmJkOGQwZGI1ODNiMGJiYjQ4YzJlMmMuLjBm
YjNhMTAyYTM0NTc5ZjBhNWE5YjMzNWMzMmE3OTYxZDk0MmUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTkxLDYgKzkxLDcgQEAgUmVmPFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29w
eSgpIGNvbnN0CiAgICAgY29weS0+bV90ZXN0U3BlZWRNdWx0aXBsaWVyID0gdGhpcy0+bV90ZXN0
U3BlZWRNdWx0aXBsaWVyOwogICAgIGNvcHktPm1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5h
dGlvbk9uU3lzdGVtQ2hhbmdlID0gdGhpcy0+bV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0
aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAgY29weS0+bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0ID0g
dGhpcy0+bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OworICAgIGNvcHktPm1fc3RhbmRhbG9uZUFw
cGxpY2F0aW9uVVJMID0gdGhpcy0+bV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkw7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcHJveHlDb25maWd1cmF0aW9uKQogICAgICAgICBjb3B5
LT5tX3Byb3h5Q29uZmlndXJhdGlvbiA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weShu
dWxscHRyLCB0aGlzLT5tX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggM2UzNDViMzA1ODAxMGU4MjVkNDdiNjFiOGU5
MjkwMWExNDdhYjE0MC4uMTVmYmU3ZWQ5MGY2MjMxODIwNTY5MzkzYTc4YzFmYWMxY2ZhMDY0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0xNTMsNiArMTUzLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c1NlcnZlclByZWNvbm5lY3QoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93c1NlcnZlclByZWNvbm5lY3Q7IH0KICAgICB2b2lkIHNldEFsbG93c1NlcnZl
clByZWNvbm5lY3QoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0ID0gYWxs
b3dzOyB9CiAKKyAgICAKKyAgICBjb25zdCBVUkwmIHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOyB9CisgICAgdm9pZCBz
ZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkwoVVJMJiYgdXJsKSB7IG1fc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uVVJMID0gV1RGTW92ZSh1cmwpOyB9CisKIHByaXZhdGU6CiAgICAgSXNQZXJzaXN0ZW50
IG1faXNQZXJzaXN0ZW50IHsgSXNQZXJzaXN0ZW50OjpObyB9OwogCkBAIC0xOTUsNiArMTk5LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzU2VydmVyUHJlY29ubmVj
dCB7IHRydWUgfTsKICAgICB1bnNpZ25lZCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIgeyAxIH07Cisg
ICAgVVJMIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fcHJveHlDb25maWd1cmF0aW9uOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
M2FlOGQ0YTlmMzBjNGMxMGFhZDJmMDY5OGQyMjQ2Yjc4ZDZhNDc1ZC4uMzI4YTRmNWIwMmJkYzQw
YjJkMjhkOWE2NTRjN2M3MjZlYjFhNzg1NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTAyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gY29uZmln
dXJlIFdlYnNpdGVEYXRhU3RvcmVzIHdpdGggYSBVUkwgZm9yIHN0YW5kYWxvbmUgd2ViIGFwcGxp
Y2F0aW9ucyBhbmQgdXNlIGl0IHRvIGRpc2FibGUgZmlyc3QtcGFydHkgd2Vic2l0ZSBkYXRhIHJl
bW92YWwgaW4gSVRQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDk2MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwOTQzOTcwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVz
dCBvcHRpb24gY2FsbGVkIHN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTCBzbyB0aGF0IGxheW91
dCB0ZXN0cyBjYW4KKyAgICAgICAgY29uZmlndXJlIHRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUgYWNj
b3JkaW5nbHkuIFBpY2tpbmcgaXQgdXAgYW5kIHVzaW5nIGl0IHJlcXVpcmVzCisgICAgICAgIGNy
ZWF0aW5nIGEgbmV3IHdlYnNpdGUgZGF0YSBzdG9yZSB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0
IGhhcyB0aGUgc3RhbmRhbG9uZSB3ZWIKKyAgICAgICAgYXBwbGljYXRpb24gVVJMLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OnBhcnNlU3RyaW5nVGVzdEhlYWRlclZhbHVlQXNVUkwpOgorICAgICAgICAoV1RSOjp1cGRhdGVU
ZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVh
dGVXZWJWaWV3KToKKwogMjAyMC0wNC0wMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ2ODUpOiBMZWFrIG9mIENBTGF5ZXIgaW4g
Y3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkgaW4gUGx1Z2luT2JqZWN0TWFjLm1tCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDc3YTY0NDM1MTU0ZGU5YzNi
MDI0ZmRjNjdmN2ZjODZhZTdjNDFjZDYuLmVkNzAwMmE3ZGM5MDhmZmY4YjdlOWM3YTFiMDRmZDhh
OTkzZjUzMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xMzU5LDYgKzEzNTksMTEgQEAgc3RhdGljIHN0ZDo6c3RyaW5nIHBhcnNlU3RyaW5nVGVzdEhl
YWRlclZhbHVlQXNSZWxhdGl2ZVBhdGgoY29uc3Qgc3RkOjpzdHJpbmcmIHYKICAgICByZXR1cm4g
dG9TVEQoYWRvcHRXSyhXS1VSTENvcHlQYXRoKHJlbGF0aXZlVVJMLmdldCgpKSkpOwogfQogCitz
dGF0aWMgc3RkOjpzdHJpbmcgcGFyc2VTdHJpbmdUZXN0SGVhZGVyVmFsdWVBc1VSTChjb25zdCBz
dGQ6OnN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIHRvU1REKGFkb3B0V0soV0tVUkxDb3B5
U3RyaW5nKGNyZWF0ZVRlc3RVUkwodmFsdWUuY19zdHIoKSkpKSk7Cit9CisKIHN0YXRpYyB2b2lk
IHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25z
LCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgYWJzb2x1
dGVQYXRoKQogewogICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gYWJzb2x1dGVQYXRoOwpAQCAt
MTUxMiw3ICsxNTE3LDkgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhl
YWRlcihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDoKICAgICAgICAgICAgIHRl
c3RPcHRpb25zLmVuYWJsZUNhcHR1cmVBdWRpb0luR1BVUHJvY2VzcyA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiYWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5hbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAic3RhbmRhbG9uZVdlYkFwcGxpY2F0
aW9uVVJMIikKKyAgICAgICAgICAgIHRlc3RPcHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlv
blVSTCA9IHBhcnNlU3RyaW5nVGVzdEhlYWRlclZhbHVlQXNVUkwodmFsdWUpOworCiAgICAgICAg
IHBhaXJTdGFydCA9IHBhaXJFbmQgKyAxOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dE9wdGlvbnMuaAppbmRleCBiOTRmOGY3MTliNjEzM2Y3NThiYzNmNDZlZGU1MTRiYThkOGZjMTFk
Li43YmQwNzZjMWRmZDZhNzVlMDViMTdhNjJkMzJiMjgxNWZiYTZlZTk1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgc3RydWN0IFRlc3RPcHRp
b25zIHsKICAgICBzdGQ6OnN0cmluZyBhcHBsaWNhdGlvbk1hbmlmZXN0OwogICAgIHN0ZDo6c3Ry
aW5nIGpzY09wdGlvbnM7CiAgICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXM7CisgICAgc3RkOjpzdHJpbmcgc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMOwogICAg
IEhhc2hNYXA8U3RyaW5nLCBib29sPiBleHBlcmltZW50YWxGZWF0dXJlczsKICAgICBIYXNoTWFw
PFN0cmluZywgYm9vbD4gaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzOwogICAgIFN0cmluZyBjb250ZW50
TW9kZTsKQEAgLTE2OCw3ICsxNjksOCBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgICAgICAg
ICAgfHwgZW5hYmxlQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MgIT0gb3B0aW9ucy5lbmFibGVDYXB0
dXJlVmlkZW9JblVJUHJvY2VzcwogICAgICAgICAgICAgfHwgZW5hYmxlQ2FwdHVyZVZpZGVvSW5H
UFVQcm9jZXNzICE9IG9wdGlvbnMuZW5hYmxlQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzCiAgICAg
ICAgICAgICB8fCBlbmFibGVDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MgIT0gb3B0aW9ucy5lbmFi
bGVDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3MKLSAgICAgICAgICAgIHx8IGFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMgIT0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKQor
ICAgICAgICAgICAgfHwgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyAhPSBvcHRpb25zLmFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMKKyAgICAgICAgICAgIHx8IHN0YW5kYWxvbmVXZWJB
cHBsaWNhdGlvblVSTCAhPSBvcHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoIWNvbnRleHRPcHRpb25zLmhh
c1NhbWVJbml0aWFsaXphdGlvbk9wdGlvbnMob3B0aW9ucy5jb250ZXh0T3B0aW9ucykpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2Eu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0K
aW5kZXggNTQ4ZmU3MzEzMDY2NDY4ZjJkYWE3NmMyMTUwMGUwYTJhNDA4NDFiZi4uMDMzNDk4Y2I4
ZGRlZTllOGZmZDZmOTQwOWYxNTM2NDIxNDU2ZTQ5NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTEsNiArNTEsNyBA
QAogI2ltcG9ydCA8V2ViS2l0L19XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIApAQCAtMTQ5LDEwICsx
NTAsMTMgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICBpZiAob3B0aW9ucy5lbmFibGVF
ZGl0YWJsZUltYWdlcykKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEVkaXRhYmxl
SW1hZ2VzRW5hYmxlZDpZRVNdOwogCi0gICAgaWYgKG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lv
bikgewotICAgICAgICBhdXRvIGVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwotICAgICAgICBbZXBoZW1lcmFsV2Vi
c2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKLSAg
ICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTplcGhlbWVyYWxX
ZWJzaXRlRGF0YVN0b3JlXTsKKyAgICBpZiAob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uIHx8
IG9wdGlvbnMuc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMLmxlbmd0aCgpKSB7CisgICAgICAg
IGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lv
biA/IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVy
c2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXSA6IFtbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGlmIChv
cHRpb25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTC5sZW5ndGgoKSkKKyAgICAgICAgICAg
IFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6b3B0aW9ucy5z
dGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwuY19zdHIoKV1dXTsKKyAgICAgICAgYXV0byB3ZWJz
aXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
W3dlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107
CisgICAgICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6d2Vic2l0
ZURhdGFTdG9yZV07CiAgICAgfQogCiAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEFsbG93
VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM6b3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFV
UkxzXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhZWQ3Y2Y5N2U0Mzg1OGQ2MDMwNDFjNTI0M2RiYjhhMjU3YzExZmM0Li4x
MDk2YWEwYTVmNzM0YmU0MzJmNDBhMGEyNGNmOTUyMGQ5ZTEyNzllIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMjAtMDQtMDIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFNQSSB0byBjb25maWd1cmUgV2Vic2l0ZURhdGFTdG9yZXMgd2l0aCBhIFVS
TCBmb3Igc3RhbmRhbG9uZSB3ZWIgYXBwbGljYXRpb25zIGFuZCB1c2UgaXQgdG8gZGlzYWJsZSBm
aXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVtb3ZhbCBpbiBJVFAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTYzNAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjA5NDM5NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25l
LXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJh
c2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0
ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVt
cHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBw
bGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWw6IEFkZGVkLgor
CiAyMDIwLTA0LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtpT1Mgd2syIERlYnVnXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21hdGhtbC9w
cmVzZW50YXRpb24tbWFya3VwL3NjcmlwdHMvY3JhbXBlZC0wMDEuaHRtbCBpcyBmYWlsaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
c3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0
aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13
ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
NmE0MzU0NTM4OThjOTA1YWZmZjcxOTkyNmI0MmU0Nzg0MWNiZjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9u
ZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFi
YXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IG5vbi1jb29raWUg
d2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVz
ZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYSBzdGFuZGFsb25lIHdlYiBhcHBsaWNh
dGlvbi4KKworQmVmb3JlIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVm
b3JlIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBS
ZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2Fs
U3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9l
cyBleGlzdC4KKworQWZ0ZXIgZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRl
ciBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBS
ZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxT
dG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMg
ZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNp
dGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1m
cm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0ZjY0
MjMzM2RmNjdkNzA0M2U3Y2Q4OTE1ZjBhMDk3MzhjMGRiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13
ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNl
Lmh0bWwKQEAgLTAsMCArMSwyNTUgQEAKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgc3RhbmRh
bG9uZVdlYkFwcGxpY2F0aW9uVVJMPWh0dHA6Ly8xMjcuMC4wLjEgXSAtLT4KKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2Vz
L2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQo
J3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0IG5vbi1j
b29raWUgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9m
IG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYSBzdGFuZGFsb25lIHdlYiBh
cHBsaWNhdGlvbi48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8
c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisK
KyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAg
Y29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBj
b25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAg
ZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNh
c2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+
IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJy
ZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJU
ZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAg
ICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29r
aWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0
aCkKKyAgICAgICAgICAgIGFkZE91dHB1dCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJC
ZWZvcmUiKSArICIgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQu
Iik7CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBz
d2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tp
ZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1
c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiAi
ICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3Rz
LiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNl
cnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsg
IiBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29r
aWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5w
dXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjog
Q2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5
KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3Nl
ZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisK
KyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0
IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRl
IGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9
KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsK
KworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7
CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVs
ZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZh
bENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRp
bCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldElu
dGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVj
aykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRl
cklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJl
Zm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBj
aGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fp
bi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVj
a0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAg
ICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBjaGVja3MgZXho
YXVzdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3Bl
biBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVj
ayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUg
bmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
OworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2Fs
U3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsK
KyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hl
Y2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAg
ICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7
CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2Ug
Pj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVl
ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiAr
ICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFz
TG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBu
byBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQg
PSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZh
bENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdl
TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExv
Y2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2Vz
IiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRl
bShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRl
ciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0
aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29v
a2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1v
bmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRl
bnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMv
cmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2Vy
dmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1v
cmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFt
ZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAgICAvLyBX
cml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9y
YWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4
aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWRE
Qi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBy
b2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVyLmluc3Rh
bGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFu
ZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURh
dGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBj
aGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVz
KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNv
bnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCwg
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBk
aWRuJ3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50LiIpOworICAgICAgICAgICAgICAgICAg
ICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdl
YnNpdGUtZGF0YS1kZWxldGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI2YTQzNTQ1Mzg5
OGM5MDVhZmZmNzE5OTI2YjQyZTQ3ODQxY2JmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBs
aWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK0NoZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZG9lcyBu
b3QgZ2V0IHJlbW92ZWQgYWZ0ZXIgYSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0
aGUgd2Vic2l0ZSBpcyBhIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9uLgorCitCZWZvcmUgZGVs
ZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0dHBP
bmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUg
Y29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMg
ZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBk
ZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQt
c2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUg
Y29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBl
eGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRh
bG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRh
bG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGI4NDRjMDE4NTY1OWUwZTJkZDMyODllZDFiYjRlNWU1N2YzMzA3OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24uaHRtbApAQCAtMCwwICsxLDI1NCBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkw9aHR0cDovLzEyNy4wLjAuMSBdIC0tPgor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2ll
cy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
c2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNr
IHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZG9lcyBub3QgZ2V0IHJlbW92ZWQgYWZ0ZXIg
YSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbiBpZiB0aGUgd2Vic2l0ZSBpcyBhIHN0YW5k
YWxvbmUgd2ViIGFwcGxpY2F0aW9uLjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rp
dj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUg
PSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAi
c2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJj
bGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIp
IHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNh
c2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAg
fQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFw
cGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNz
YWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0
LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2ll
cyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3Nh
Z2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsK
KyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgIGFkZE91dHB1dCgoaXNB
ZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc2NyaXB0LWFjY2Vzc2libGUg
ZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBv
ZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIg
OiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIi
KSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAg
ICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRp
b24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lk
ZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIi
IDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3Nl
ZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRP
dXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3Qg
ZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3Rv
cmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5h
bWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZp
bmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgi
dmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7
CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsK
KyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lE
QkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxl
dCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVj
a0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7
CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAg
IGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMg
bm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qg
b3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJD
aGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0
aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBk
b2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAy
MDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUg
aXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49
IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
SURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVs
ZXRpb246IElEQiBlbnRyeSBjaGVja3MgZXhoYXVzdGVkLiIpOworICAgICAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lE
QkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVj
a0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRl
ciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNh
bGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3Qg
bG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9
ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRl
bGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2Ug
PSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAg
ICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0
aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxT
dG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0
aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUg
PyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2Nh
bFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50
ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09
PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQg
dmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5
ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90Iikg
KyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9j
b29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsg
aHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAg
ICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBo
ZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9
LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29r
aWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9j
YWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOwor
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAg
ICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFT
dG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtU
b091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkg
eworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRz
Q2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hl
Y2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBm
aW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShv
cmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlM
OiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWRuJ3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFs
ZW50LiIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396595</attachid>
            <date>2020-04-15 17:22:56 -0700</date>
            <delta_ts>2020-04-15 20:38:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209634-20200415172255.patch</filename>
            <type>text/plain</type>
            <size>60112</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5YWE2ZGRkMDQwYjZhNDYz
YmJkNjA2OGM3MDMzZGIxM2YxOGFhMzcuLjZlN2Y4M2Y2OWRkMGIxYTc1ZmQ3OTc3M2IwZTQ3ZTI3
MGM0MWEzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDQtMTUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBjb25maWd1
cmUgV2Vic2l0ZURhdGFTdG9yZXMgd2l0aCBhIFVSTCBmb3Igc3RhbmRhbG9uZSB3ZWIgYXBwbGlj
YXRpb25zIGFuZCB1c2UgaXQgdG8gZGlzYWJsZSBmaXJzdC1wYXJ0eSB3ZWJzaXRlIGRhdGEgcmVt
b3ZhbCBpbiBJVFAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTYzNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5NDM5NzA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGEgbmV3IHByb3BlcnR5IHRvIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggY2Fs
bGVkCisgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCB3aXRoIHdoaWNoIHRoZSBob3N0
aW5nIGFwcGxpY2F0aW9uIGNhbiBpbmZvcm0gdGhlCisgICAgICAgIHdlYnNpdGUgZGF0YSBzdG9y
ZSB0aGF0IGl0J3MgcnVubmluZyBhcyBhIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9uLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGFsc28gZm9yd2FyZHMgYW4gZXhpc3Rpbmcgc3RhbmRhbG9uZUFw
cGxpY2F0aW9uVVJMIGFzIGEKKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gaW50
byBJVFAgc28gdGhhdCBleHBsaWNpdCBleGVtcHRpb25zIGNhbiBiZSBtYWRlCisgICAgICAgIHRv
IGZpcnN0IHBhcnRpZXMgb2Ygc3RhbmRhbG9uZSB3ZWIgYXBwbGljYXRpb25zLiBUaGUgZXhlbXB0
aW9ucyBtYWRlIGhlcmUKKyAgICAgICAgYWxsIGZvciBhbGwgb2YgSVRQJ3Mgd2Vic2l0ZSBkYXRh
IHJlbW92YWwuIFRoaXMgcGFydCBvZiB0aGUgY2hhbmdlIGlzCisgICAgICAgIGNvdmVyZWQgYnkg
dGhlIG5ldyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13
ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4
ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Zm9yd2FyZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXR0aW5ncyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aDoKKyAgICAgICAgKiBTaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzdGFuZGFsb25lQXBwbGljYXRpb25VUkxdKToKKyAgICAg
ICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U3RhbmRhbG9uZUFwcGxp
Y2F0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3Jr
UGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNl
dFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCk6CisKIDIwMjAtMDQtMTUgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbSVBDIEhhcmRlbmluZ10gTWFjaE1lc3Nh
Z2U6OmNyZWF0ZSgpIHNob3VsZCB1c2UgY2hlY2tlZCBhcml0aG1ldGljCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA5ZTlk
NTQ0OWFiN2RkMzllMTRhOTk4NGI4ZThlMGQxYjE4ZjBlNGZjLi5mMmM0ZmZkN2I0NGZlNjhlNDlh
Mjc4OTRjNTY5ZDQ3NTkyZjhlYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI0NjEsNiArMjQ2MSw4IEBAIFJlZ2lz
dHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzCiAgICAgVmVjdG9yPERvbWFpbkRhdGE+IGRvbWFpbnMgPSB0aGlz
LT5kb21haW5zKCk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBkb21haW5JRHNUb0NsZWFyR3JhbmRm
YXRoZXJpbmc7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBkb21haW5zKSB7CisgICAgICAg
IGlmIChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4gPT0gc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb2xkZXN0VXNlckludGVy
YWN0aW9uID0gc3RkOjptaW4ob2xkZXN0VXNlckludGVyYWN0aW9uLCBzdGF0aXN0aWMubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUpOwogICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlQWxsV2Vi
c2l0ZURhdGFGb3Ioc3RhdGlzdGljLCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSkgewog
ICAgICAgICAgICAgdG9EZWxldGVPclJlc3RyaWN0Rm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tp
ZXNGb3IuYXBwZW5kKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IGNhNWI5MDU5
ZDhlZjVkN2I3ZjU4YTRmNWJjZTNjNzRkMWRmNDI0NzMuLjYzZTYzZjk5NGFmNTM1OTA0NWU1MzUz
ODBiM2ZmNWI4ZDIyMTdjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC05ODAsNiArOTgwLDggQEAgUmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVMKICAgICBhdXRvIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IG5vdzsKICAgICBSZWdp
c3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciB0b0RlbGV0ZU9y
UmVzdHJpY3RGb3I7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9t
YWluID09IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbigpKQorICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIG9sZGVzdFVzZXJJbnRlcmFjdGlvbiA9IHN0ZDo6bWluKG9sZGVzdFVzZXJJ
bnRlcmFjdGlvbiwgc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKICAg
ICAgICAgaWYgKHNob3VsZFJlbW92ZUFsbFdlYnNpdGVEYXRhRm9yKHN0YXRpc3RpYywgc2hvdWxk
Q2hlY2tGb3JHcmFuZGZhdGhlcmluZykpIHsKICAgICAgICAgICAgIHRvRGVsZXRlT3JSZXN0cmlj
dEZvci5kb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yLmFwcGVuZChzdGF0aXN0aWMucmVnaXN0
cmFibGVEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IGUzZGY0MDBhMDJiNWUxMDNkMDg2MDQyNzY1M2Q1ZTkyNjExMjE0NDIuLmVmNGM2NmY4N2E4
NmJlZDllMzY3OTZlNDkyYmE1OTQ1YWQ1YTAwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKQEAgLTE2OCw2ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSB7IG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQgPSBlbmFibGVkOyB9OwogICAgIGJvb2wgaXNTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQgPT0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Olllczsg
fTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIHsgbV9maXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSA9IG1vZGU7IH0KKyAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3N0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbiA9IFdURk1vdmUoZG9tYWluKTsgfQogCiAgICAgdmlydHVhbCBib29s
IGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgPSAwOwpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTG9nZ2luZ0VuYWJs
ZWQ7IH07CiAgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z01vZGVFbmFibGVkOyB9CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9CisgICAgUmVnaXN0cmFibGVEb21h
aW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9zdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW47IH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4TnVtYmVyT2ZSZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2sgeyA1MCB9OwogICAg
IApAQCAtMjg2LDYgKzI4OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFSZWNvcmRzQmVp
bmdSZW1vdmVkIHsgZmFsc2UgfTsKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1fc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9OwogICAgIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZTo6QWxsQnV0Q29va2llcyB9OworICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDA4ZWRlNmM3
YzNjNDEyY2Y3MzM0MjM0ZWE2NDc5YjkxMGFmMTA0MjYuLjFlZjhhY2RiNTU1MGE4ZjZmYWRmZjZj
YzE4ZjA0YWM3OGFkMTAxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC02MzUsNiArNjM1LDI2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShGaXJz
dFBhCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoaXNFcGhlbWVyYWwoKSB8
fCBkb21haW4uaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4oKSBjYWxsZWQgd2l0aCBub24tZW1wdHkgZG9tYWluLiIpOworCisgICAgcG9z
dFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKG1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNl
dFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihXVEZNb3ZlKGRvbWFpbikpOworICAgICAgICBw
b3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRl
eCAzNWI4MzAzNzkwNmJhNjZjNDdlYWUxNDQ2ZjBiYWUwYzRkYWFiMTQ5Li4zMDMwYTRkODYwMmM4
NjVjNTgzODI2ZGQyYWJkMGM2NDQ4YzZlZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yNzcsNiArMjc3LDcgQEAgc3RydWN0IFRoaXJkUGFy
dHlEYXRhIHsKICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAgICAgdm9pZCBzZXRTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50RW5hYmxlZChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShX
ZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBub3RpZnlSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDMzMDQyN2JmMTk4YjQ2M2IyNWI1MDlh
MjMwNzQyYzRlYzZlYzI4ZTAuLjc1MjRlNDhlMTk3NjQ0MmZiNWM2NzNjNzk4ZDY2NDFjNWEzYWFl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC04OSw2ICs4OSw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX3Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQogICAgICwgbV9zYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKQogICAgICwg
bV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQor
ICAgICwgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4ocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAjZW5k
aWYKICAgICAsIG1fYWRDbGlja0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVSZWY8QWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlcj4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkKICAg
ICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIp
CkBAIC0yMDQsNiArMjA1LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Zm9yd2FyZFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5z
ZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk7CiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZChtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKTsKICAg
ICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIFtdIHsgfSk7CisgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4o
bV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4sIFtdIHsgfSk7CiB9CiAKIGJvb2wgTmV0d29y
a1Nlc3Npb246OmlzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDQ2MzQyOTM1
Mzc3MTExYWViYjI4NDdkY2E4MGRkZTViNDk3MmYyNzAuLjA5OWNlNzRhM2UwOGE2NmEwNjBmYjNh
NjA5NWMxMmVhMzhmNWI2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtX3RoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKICAg
ICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBtX3NhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQ6Ok5vIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CisgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CiAjZW5k
aWYKICAgICBib29sIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9Owog
ICAgIFVuaXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiBtX2FkQ2xpY2tBdHRyaWJ1
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5oCmluZGV4IGY0OTc2MDkzNTg3ZTRiOGZiM2Q1YmEwOWZmOWI5YzA0
ZTNkMmY4ZTUuLjkyN2FlYzNhNzRhZDFlZmNiNTk0OGEwNDNmODFmY2YyOWY5YmViOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuaApAQCAtNDcsNiArNDcsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRD
b29raWVzIH07CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uRG9tYWluIHsgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApAQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBlbmNvZGVyIDw8IHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOwogI2VuZGlmCiAgICAgICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CisgICAgICAgIGVuY29kZXIgPDwgc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uRG9tYWluOwogICAgICAgICBlbmNvZGVyIDw8IG1hbnVhbFByZXZhbGVudFJlc291cmNl
OwogICAgIH0KIApAQCAtMTIwLDYgKzEyMiwxMSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMgewogICAgICAgICBpZiAoIWZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluOworICAgICAgICBkZWNvZGVyID4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAg
ICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgZGVjb2RlciA+PiBtYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgaWYgKCFtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSkKQEAgLTEzOCw2ICsxNDUsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMgewogICAgICAgICAgICAgV1RGTW92ZSgqc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQpLAogI2VuZGlmCiAgICAgICAgICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4pLAogICAgICAgICAgICAgV1RGTW92ZSgqbWFudWFsUHJldmFsZW50UmVzb3VyY2Up
LAogICAgICAgICB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCmluZGV4IDQ4MDEzNzk4ZTVkYTE3ZjQyMWZjZjdmMGZhMzkzOWFkM2QxZjYwZGUuLmViNTk2
Yjk2ZWNmNjdjYTYwNTViN2IxMGQ3ZmU1NWVjZTE5ZGI1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC03Niw2ICs3Niw4IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMyksIGlvcygxMS4wKSkKIAogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxh
YmxlLCBjb3B5KSBOU1VSTCAqYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorQHBy
b3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VSTCAqc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIC8vIFRlc3Rpbmcgb25seS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFs
bExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQppbmRleCBkNDI4ZDc3NzY3ZGIyY2ZkY2RjNDA3MWRm
ZWU5ZGNkMzUyOTAxOTY2Li4wMTUzMTE2MDA1NjQ4MDNhOWQwYjhkZTliZjFmZTc5ZmYxMDJiZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBAIC00NDMsNiAr
NDQzLDE2IEBAIC0gKHZvaWQpc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKilj
b25maWd1cmF0aW9uCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByb3h5Q29uZmlndXJhdGlvbigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKVtjb25maWd1cmF0aW9uIGNvcHldKTsKIH0KIAorLSAo
TlNVUkwgKilzdGFuZGFsb25lQXBwbGljYXRpb25VUkwKK3sKKyAgICByZXR1cm4gX2NvbmZpZ3Vy
YXRpb24tPnN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCgpOworfQorCistICh2b2lkKXNldFN0YW5k
YWxvbmVBcHBsaWNhdGlvblVSTDooTlNVUkwgKil1cmwKK3sKKyAgICBfY29uZmlndXJhdGlvbi0+
c2V0U3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKHVybCk7Cit9CisKIC0gKEJPT0wpYWxsTG9hZHNC
bG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZwogewogICAgIHJl
dHVybiBfY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IGI2NDlkYmQzY2QzNDVjNDRiNjhkODI0YzU0YTgxYjExNTQxNGYwZDcu
Ljk3MzdmZDM0MTg0YmM5MTY4OTE2MDA4OGQ3NDVmMzhkNGZlOTc4NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwNCw2ICs2MDQsNyBAQCBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vi
c2l0ZURhdGFTdG9yZSogd2l0aAogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbDsKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6
OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKICNlbmRpZgorICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiB7IH07CiAg
ICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
YW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgV0VCX1BST0NFU1NfUE9PTF9BRERJVElP
TlNfMgpAQCAtNjIxLDYgKzYyMiw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQ
b29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAg
ICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZDsKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CisgICAg
ICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjQ2LDYgKzY0OCw3IEBAIE5ldHdv
cmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICNlbmRpZgogICAg
ICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CisgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDg3Y2I4YjcwNTQzOTZk
N2VmNjYxZjBmNDdlNmY1OGFkOGY3NjdiYmQuLjVmYmY1NjI1Mzk2ZjJjZGJjNTQxZGRiZTk3MDlh
NDdmMjFiN2M3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTE4
MCw2ICsxODAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1Bh
cmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgcGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5h
YmxlRGVidWdNb2RlID0gZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAg
ICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IHNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlID0gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7Cisg
ICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyBtX2NvbmZpZ3VyYXRpb24tPnN0YW5kYWxvbmVBcHBsaWNhdGlvblVS
TCgpIH07CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBXVEZNb3Zl
KHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSk7CiAKICAgICBh
dXRvIGNvb2tpZUZpbGUgPSByZXNvbHZlZENvb2tpZVN0b3JhZ2VGaWxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggOTYzZTQ1OGVmMDk4NDJlMzY5YjY3
NWJjZDExYTNlNjE1Y2I0NDBmYy4uYTc1YTc5MGQ2NTFiMGMwMzI4NWMwNDU4ODM5ZGE0NTViZTQ0
OTY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtOTMs
NiArOTMsNyBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2FsbG93c1NlcnZl
clByZWNvbm5lY3QgPSB0aGlzLT5tX2FsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgY29weS0+
bV9yZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uID0gdGhpcy0+bV9yZXF1aXJlc1Nl
Y3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOwogICAgIGNvcHktPm1fcHJldmVudHNTeXN0ZW1IVFRQ
UHJveHlBdXRoZW50aWNhdGlvbiA9IHRoaXMtPm1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRo
ZW50aWNhdGlvbjsKKyAgICBjb3B5LT5tX3N0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCA9IHRoaXMt
Pm1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChtX3Byb3h5Q29uZmlndXJhdGlvbikKICAgICAgICAgY29weS0+bV9wcm94eUNvbmZpZ3VyYXRp
b24gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZUNvcHkobnVsbHB0ciwgdGhpcy0+bV9wcm94
eUNvbmZpZ3VyYXRpb24uZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCmluZGV4IGVlN2EwNGNmNTEwZGQxMmZhNThkODM1NmVhNmMyODFmMjgyYTNhMDAuLjBhMTA4
N2IzZmIyNGYwNDljYmE0MmFjZTJkNzMzMTc1ZWFkZTNiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtMTU5LDYgKzE1OSw5IEBAIHB1YmxpYzoKICAgICBib29s
IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247IH07CiAgICAgdm9pZCBzZXRSZXF1aXJl
c1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKGJvb2wgcmVxdWlyZXMpIHsgbV9yZXF1aXJlc1Nl
Y3VyZUhUVFBTUHJveHlDb25uZWN0aW9uID0gcmVxdWlyZXM7IH0KIAorICAgIGNvbnN0IFVSTCYg
c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdGFuZGFsb25lQXBw
bGljYXRpb25VUkw7IH0KKyAgICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTChVUkwm
JiB1cmwpIHsgbV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkwgPSBXVEZNb3ZlKHVybCk7IH0KKwog
cHJpdmF0ZToKICAgICBJc1BlcnNpc3RlbnQgbV9pc1BlcnNpc3RlbnQgeyBJc1BlcnNpc3RlbnQ6
Ok5vIH07CiAKQEAgLTIwMyw2ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcmV2ZW50
c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVx
dWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQg
bV90ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OworICAgIFVSTCBtX3N0YW5kYWxvbmVBcHBsaWNh
dGlvblVSTDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBtX3Byb3h5Q29uZmlndXJhdGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRmNDVkODgzY2ZlNTJlZjgzNTQyODlhMGYx
Y2Y0YzdjMmQ2YTJkOWQuLmVlMGM5N2JkNDkzOTNlNjMxZjJhM2JhYzkzYmJhYzA2Y2Y3MjFkYjgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMC0wNC0xNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgU1BJIHRvIGNvbmZpZ3VyZSBXZWJzaXRlRGF0YVN0b3JlcyB3aXRo
IGEgVVJMIGZvciBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbnMgYW5kIHVzZSBpdCB0byBkaXNh
YmxlIGZpcnN0LXBhcnR5IHdlYnNpdGUgZGF0YSByZW1vdmFsIGluIElUUAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NjM0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82MDk0Mzk3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3Qgb3B0aW9uIGNhbGxlZCBzdGFuZGFsb25l
V2ViQXBwbGljYXRpb25VUkwgc28gdGhhdCBsYXlvdXQgdGVzdHMgY2FuCisgICAgICAgIGNvbmZp
Z3VyZSB0aGUgd2Vic2l0ZSBkYXRhIHN0b3JlIGFjY29yZGluZ2x5LiBQaWNraW5nIGl0IHVwIGFu
ZCB1c2luZyBpdCByZXF1aXJlcworICAgICAgICBjcmVhdGluZyBhIG5ldyB3ZWJzaXRlIGRhdGEg
c3RvcmUgd2l0aCBhIGNvbmZpZ3VyYXRpb24gdGhhdCBoYXMgdGhlIHN0YW5kYWxvbmUgd2ViCisg
ICAgICAgIGFwcGxpY2F0aW9uIFVSTC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJl
V2Vic2l0ZURhdGFTdG9yZVRlbXBvcmFyeURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdUUjo6cGFy
c2VTdHJpbmdUZXN0SGVhZGVyVmFsdWVBc1VSTCk6CisgICAgICAgIChXVFI6OnVwZGF0ZVRlc3RP
cHRpb25zRnJvbVRlc3RIZWFkZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6Cisg
ICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpoYXNTYW1lSW5pdGlhbGl6YXRpb25PcHRpb25zIGNv
bnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZp
ZXcpOgorCiAyMDIwLTA0LTE1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIGdlbmVyaWMgcGFyYW1ldGVyIHNlcmlhbGl6YXRpb24g
ZmFsbGJhY2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
MWQyOWZhZDliNzM4OTlmY2M2MGY2NjAzN2I1OWM2MDNjYWI2OTU5Ny4uOTg4NzA1MmEwOTIwNzNk
NjY3NTRiMzA0MmQ5MzBhMTVlMGIzYmZiMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTUyMSwyOCArNTIxLDMzIEBAIFdLUmV0YWluUHRyPFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25maWd1
cmF0CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmNvbmZpZ3VyZVdlYnNpdGVEYXRhU3RvcmVUZW1wb3JhcnlEaXJlY3RvcmllcyhXS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKGNvbnN0
IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7Cisg
ICAgICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xkZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBSZW5k
ZXJUcmVlVGVtcCk7CisKKyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNl
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyh0ZW1wb3JhcnlG
b2xkZXIgKyBwYXRoU2VwYXJhdG9yICsgIkFwcGxpY2F0aW9uQ2FjaGUiKS5nZXQoKSk7CisgICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoY29uZmlndXJhdGlvbiwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyBwYXRoU2VwYXJhdG9yICsg
IkNhY2hlIikuZ2V0KCkpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
U2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24sIHRvV0sodGVtcG9yYXJ5Rm9s
ZGVyICsgcGF0aFNlcGFyYXRvciArICJDYWNoZVN0b3JhZ2UiKS5nZXQoKSk7CisgICAgICAgIFdL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAi
RGF0YWJhc2VzIiArIHBhdGhTZXBhcmF0b3IgKyAiSW5kZXhlZERCIikuZ2V0KCkpOworICAgICAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KGNvbmZpZ3VyYXRpb24sIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFyYXRvciArICJM
b2NhbFN0b3JhZ2UiKS5nZXQoKSk7CisgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb25TZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBv
cmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiRGF0YWJhc2VzIiArIHBhdGhTZXBhcmF0b3Ig
KyAiV2ViU1FMIikuZ2V0KCkpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uU2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBv
cmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiTWVkaWFLZXlzIikuZ2V0KCkpOworICAgICAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeShjb25maWd1cmF0aW9uLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBh
cmF0b3IgKyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpLmdldCgpKTsKKyAgICAgICAgV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoY29uZmlndXJhdGlvbiwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyBwYXRoU2VwYXJhdG9y
ICsgIlNlcnZpY2VXb3JrZXJzIikuZ2V0KCkpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKGNvbmZpZ3VyYXRpb24sIDQwMCAq
IDEwMjQpOworICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChjb25maWd1cmF0aW9uLCB0cnVlKTsK
KyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFN0YWxlV2hpbGVSZXZh
bGlkYXRlRW5hYmxlZChjb25maWd1cmF0aW9uLCB0cnVlKTsKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvblNldFRlc3RpbmdTZXNzaW9uRW5hYmxlZChjb25maWd1cmF0aW9u
LCB0cnVlKTsKKyAgICB9Cit9CisKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBUZXN0Q29udHJvbGxl
cjo6ZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHN0YXRpYyBXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlID0gbnVsbHB0cjsKICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb25DcmVhdGUoKSk7Ci0gICAgICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJl
ZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewotICAgICAgICAgICAgU3RyaW5nIHRl
bXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKLQot
ICAgICAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5nZXQoKSwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIg
KyBwYXRoU2VwYXJhdG9yICsgIkFwcGxpY2F0aW9uQ2FjaGUiKS5nZXQoKSk7Ci0gICAgICAgICAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KGNvbmZpZ3VyYXRpb24uZ2V0KCksIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgcGF0aFNlcGFyYXRv
ciArICJDYWNoZSIpLmdldCgpKTsKLSAgICAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb25TZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5nZXQoKSwgdG9X
Syh0ZW1wb3JhcnlGb2xkZXIgKyBwYXRoU2VwYXJhdG9yICsgIkNhY2hlU3RvcmFnZSIpLmdldCgp
KTsKLSAgICAgICAgICAgIFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeShjb25maWd1cmF0aW9uLmdldCgpLCB0b1dLKHRlbXBvcmFyeUZv
bGRlciArIHBhdGhTZXBhcmF0b3IgKyAiRGF0YWJhc2VzIiArIHBhdGhTZXBhcmF0b3IgKyAiSW5k
ZXhlZERCIikuZ2V0KCkpOwotICAgICAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvblNldExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLmdldCgpLCB0b1dLKHRl
bXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiTG9jYWxTdG9yYWdlIikuZ2V0KCkpOwot
ICAgICAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24uZ2V0KCksIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsg
cGF0aFNlcGFyYXRvciArICJEYXRhYmFzZXMiICsgcGF0aFNlcGFyYXRvciArICJXZWJTUUwiKS5n
ZXQoKSk7Ci0gICAgICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLmdldCgpLCB0b1dLKHRlbXBvcmFy
eUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiTWVkaWFLZXlzIikuZ2V0KCkpOwotICAgICAgICAg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5nZXQoKSwgdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyBw
YXRoU2VwYXJhdG9yICsgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKS5nZXQoKSk7Ci0gICAgICAg
ICAgICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShjb25maWd1cmF0aW9uLmdldCgpLCB0b1dLKHRlbXBvcmFyeUZvbGRl
ciArIHBhdGhTZXBhcmF0b3IgKyAiU2VydmljZVdvcmtlcnMiKS5nZXQoKSk7Ci0gICAgICAgICAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3Rh
KGNvbmZpZ3VyYXRpb24uZ2V0KCksIDQwMCAqIDEwMjQpOwotICAgICAgICAgICAgV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvblNldE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQoY29uZmlndXJhdGlvbi5nZXQoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBXS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0U3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKGNv
bmZpZ3VyYXRpb24uZ2V0KCksIHRydWUpOwotICAgICAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvblNldFRlc3RpbmdTZXNzaW9uRW5hYmxlZChjb25maWd1cmF0aW9uLmdldCgp
LCB0cnVlKTsKLSAgICAgICAgfQorICAgICAgICBjb25maWd1cmVXZWJzaXRlRGF0YVN0b3JlVGVt
cG9yYXJ5RGlyZWN0b3JpZXMoY29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIGRhdGFTdG9y
ZSA9IFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24uZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YVN0b3JlOwpAQCAtMTM2MCw2ICsxMzY1
LDExIEBAIHN0YXRpYyBzdGQ6OnN0cmluZyBwYXJzZVN0cmluZ1Rlc3RIZWFkZXJWYWx1ZUFzUmVs
YXRpdmVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiB2CiAgICAgcmV0dXJuIHRvU1REKGFkb3B0V0so
V0tVUkxDb3B5UGF0aChyZWxhdGl2ZVVSTC5nZXQoKSkpKTsKIH0KIAorc3RhdGljIHN0ZDo6c3Ry
aW5nIHBhcnNlU3RyaW5nVGVzdEhlYWRlclZhbHVlQXNVUkwoY29uc3Qgc3RkOjpzdHJpbmcmIHZh
bHVlKQoreworICAgIHJldHVybiB0b1NURChhZG9wdFdLKFdLVVJMQ29weVN0cmluZyhjcmVhdGVU
ZXN0VVJMKHZhbHVlLmNfc3RyKCkpKSkpOworfQorCiBzdGF0aWMgdm9pZCB1cGRhdGVUZXN0T3B0
aW9uc0Zyb21UZXN0SGVhZGVyKFRlc3RPcHRpb25zJiB0ZXN0T3B0aW9ucywgY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCkKIHsKICAg
ICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9IGFic29sdXRlUGF0aDsKQEAgLTE1MTUsNyArMTUyNSw5
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlv
bnMmIHRlc3RPcHRpb25zLCBjb25zdCBzdGQ6CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5hbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZUluQXBwQnJvd3NlclByaXZhY3kgPSBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICAKKyAgICAgICAgZWxz
ZSBpZiAoa2V5ID09ICJzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwiKQorICAgICAgICAgICAg
dGVzdE9wdGlvbnMuc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMID0gcGFyc2VTdHJpbmdUZXN0
SGVhZGVyVmFsdWVBc1VSTCh2YWx1ZSk7CisKICAgICAgICAgcGFpclN0YXJ0ID0gcGFpckVuZCAr
IDE7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4
IDhiY2E2NDU1ZDA3MTlmNzc2Y2NiZDBjNWUxOGY1Y2U4OTEwNDc1OWIuLmJjM2FkNzUzYTZiNzQx
NWE0ZDljMWVjMzM2ZDVkMzhmNWQ4MjVmNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFRlc3RDb250cm9s
bGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgVGVzdENvbnRyb2xsZXImIHNpbmdsZXRvbigpOwor
ICAgIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVdlYnNpdGVEYXRhU3RvcmVUZW1wb3JhcnlEaXJlY3Rv
cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmKTsKICAgICBzdGF0aWMgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgdmlld1dpZHRoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9u
cy5oCmluZGV4IDcwMWRlOWNkOWE5MzcyOGE4MGFmNjViYjNiMDg0ZjEwZDY0ODI4MzcuLmEyYWYx
MmYyMzk3OWM5MjQ2NzdhZmU0NzllYjE2NDAzNjZjZmRlMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RPcHRpb25zLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewog
ICAgIHN0ZDo6c3RyaW5nIGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAgICAgc3RkOjpzdHJpbmcganNj
T3B0aW9uczsKICAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsK
KyAgICBzdGQ6OnN0cmluZyBzdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkw7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIGJvb2w+IGV4cGVyaW1lbnRhbEZlYXR1cmVzOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBib29sPiBpbnRlcm5hbERlYnVnRmVhdHVyZXM7CiAgICAgU3RyaW5nIGNvbnRlbnRNb2RlOwpA
QCAtMTcwLDcgKzE3MSw4IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgICAgICAgICB8fCBl
bmFibGVDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MgIT0gb3B0aW9ucy5lbmFibGVDYXB0dXJlVmlk
ZW9JbkdQVVByb2Nlc3MKICAgICAgICAgICAgIHx8IGVuYWJsZUNhcHR1cmVBdWRpb0luR1BVUHJv
Y2VzcyAhPSBvcHRpb25zLmVuYWJsZUNhcHR1cmVBdWRpb0luR1BVUHJvY2VzcwogICAgICAgICAg
ICAgfHwgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyAhPSBvcHRpb25zLmFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMKLSAgICAgICAgICAgIHx8IGVuYWJsZUluQXBwQnJvd3NlclByaXZh
Y3kgIT0gb3B0aW9ucy5lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5KQorICAgICAgICAgICAgfHwg
ZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeSAhPSBvcHRpb25zLmVuYWJsZUluQXBwQnJvd3NlclBy
aXZhY3kKKyAgICAgICAgICAgIHx8IHN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTCAhPSBvcHRp
b25zLnN0YW5kYWxvbmVXZWJBcHBsaWNhdGlvblVSTCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBpZiAoIWNvbnRleHRPcHRpb25zLmhhc1NhbWVJbml0aWFsaXphdGlvbk9w
dGlvbnMob3B0aW9ucy5jb250ZXh0T3B0aW9ucykpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZGFhOGEwNzM2NmRkMTUx
YTUxOWU2ZWZiY2RhMGRmYjlhMzU2YWMwZC4uMjU2MmU2ZDdjYWRiNjRlYjhmNDUzYjgzYjJlNjA2
NjE0ZDllYzY2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgpA
QCAtMTU0LDEwICsxNTUsMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVX
ZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICBpZiAob3B0
aW9ucy5lbmFibGVFZGl0YWJsZUltYWdlcykKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24g
X3NldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDpZRVNdOwogCi0gICAgaWYgKG9wdGlvbnMudXNlRXBo
ZW1lcmFsU2Vzc2lvbikgewotICAgICAgICBhdXRvIGVwaGVtZXJhbFdlYnNpdGVEYXRhU3RvcmUg
PSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwotICAgICAgICBb
ZXBoZW1lcmFsV2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQ6WUVTXTsKLSAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTplcGhlbWVyYWxXZWJzaXRlRGF0YVN0b3JlXTsKKyAgICBpZiAob3B0aW9ucy51c2VFcGhlbWVy
YWxTZXNzaW9uIHx8IG9wdGlvbnMuc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMLmxlbmd0aCgp
KSB7CisgICAgICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyA9IG9wdGlvbnMudXNlRXBo
ZW1lcmFsU2Vzc2lvbiA/IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXSA6IFtbW19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIGlmICghb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKQorICAgICAgICAgICAgY29u
ZmlndXJlV2Vic2l0ZURhdGFTdG9yZVRlbXBvcmFyeURpcmVjdG9yaWVzKChXS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uUmVmKXdlYnNpdGVEYXRhU3RvcmVDb25maWcpOworICAgICAgICBp
ZiAob3B0aW9ucy5zdGFuZGFsb25lV2ViQXBwbGljYXRpb25VUkwubGVuZ3RoKCkpCisgICAgICAg
ICAgICBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZyBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm9wdGlv
bnMuc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMLmNfc3RyKCldXV07CisgICAgICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlnXSBhdXRvcmVsZWFzZV07CisgICAg
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZ
RVNdOworICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOndl
YnNpdGVEYXRhU3RvcmVdOwogICAgIH0KIAogICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIF9zZXRB
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOm9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9E
YXRhVVJMc107CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYWZiNzJiYmE5ODg5YTI4YWZiOTQyZTZjMGI3NTQ5NzMwN2Y2ZGRk
Yi4uNjE4NGFmNzA0MzcwYjQ4NzIzMDc5MGJmZjFhODA4YWE4M2RkODI4ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTA0LTE1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBTUEkgdG8gY29uZmlndXJlIFdlYnNpdGVEYXRhU3RvcmVzIHdpdGgg
YSBVUkwgZm9yIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9ucyBhbmQgdXNlIGl0IHRvIGRpc2Fi
bGUgZmlyc3QtcGFydHkgd2Vic2l0ZSBkYXRhIHJlbW92YWwgaW4gSVRQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2MzQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYwOTQzOTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRh
bG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdl
YnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24t
ZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2Vi
LWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wNC0xNSAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEdhcmRlbmluZywgZW1pdCBiYXNlbGluZXMgYWZ0ZXIgcjI2MDEzOQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxl
dGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20t
d2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YjZhNDM1NDUzODk4YzkwNWFmZmY3MTk5MjZiNDJlNDc4NDFjYmY3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxv
bmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRh
YmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorQ2hlY2sgdGhhdCBub24tY29va2ll
IHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1
c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGEgc3RhbmRhbG9uZSB3ZWIgYXBwbGlj
YXRpb24uCisKK0JlZm9yZSBkZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0Jl
Zm9yZSBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjog
UmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0JlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRv
ZXMgZXhpc3QuCisKK0FmdGVyIGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQWZ0
ZXIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjog
UmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IExvY2Fs
U3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2Vz
IGV4aXN0LgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJz
aXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQt
ZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGY2
NDIzMzNkZjY3ZDcwNDNlN2NkODkxNWYwYTA5NzM4YzBkYmEyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUt
d2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFz
ZS5odG1sCkBAIC0wLDAgKzEsMjU1IEBACis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHN0YW5k
YWxvbmVXZWJBcHBsaWNhdGlvblVSTD1odHRwOi8vMTI3LjAuMC4xIF0gLS0+Cis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNl
cy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0
KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+Q2hlY2sgdGhhdCBub24t
Y29va2llIHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBv
ZiBubyB1c2VyIGludGVyYWN0aW9uIGlmIHRoZSB3ZWJzaXRlIGlzIGEgc3RhbmRhbG9uZSB3ZWIg
YXBwbGljYXRpb24uPC9kaXY+Cis8YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgor
PHNjcmlwdD4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOwor
CisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAg
IGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAg
Y29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAg
IGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJD
YXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEg
PiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVi
cmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVy
VGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAg
ICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29v
a2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5n
dGgpCisgICAgICAgICAgICBhZGRPdXRwdXQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5k
LiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAg
c3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29r
aWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5w
dXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjog
IiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0
cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBz
ZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFz
c2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSAr
ICIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29v
a2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMu
cHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246
IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJh
eSk7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOwor
CisgICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxl
dCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0
ZSBpbmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07Cisg
ICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2Jq
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVl
fSk7CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7
CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNr
OworICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRl
bGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2
YWxDb3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOwor
ICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJ
bnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hl
Y2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50
ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJC
ZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdh
aW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hl
Y2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4
aGF1c3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50
ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9w
ZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhl
IG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2Vz
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDAp
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFn
ZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7
CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNo
ZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAg
ICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikg
eworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIg
KyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAi
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0
b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAi
ZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDAp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
bm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2
YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAg
ICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBM
b2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9l
cyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0
ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0
ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3Jh
Z2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5j
dGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNv
b2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAt
b25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVk
ZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVz
L3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNl
cnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUt
b3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5h
bWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8g
V3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VF
eGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVk
REIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBw
cm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0
YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFB
bmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVE
YXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAg
Y2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
Y2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2ll
cygpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBj
b25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3Qs
IHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIg
ZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13
ZWJzaXRlLWRhdGEtZGVsZXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNmE0MzU0NTM4
OThjOTA1YWZmZjcxOTkyNmI0MmU0Nzg0MWNiZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBw
bGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitDaGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGRvZXMg
bm90IGdldCByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYg
dGhlIHdlYnNpdGUgaXMgYSBzdGFuZGFsb25lIHdlYiBhcHBsaWNhdGlvbi4KKworQmVmb3JlIGRl
bGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRw
T25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2Vz
IGV4aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIg
ZGVsZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50
LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMg
ZXhpc3QuCitBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5k
YWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5k
YWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRiODQ0YzAxODU2NTllMGUyZGQzMjg5ZWQxYmI0ZTVlNTdmMzMwNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1k
YXRhLWRlbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyNTQgQEAKKzwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgc3RhbmRhbG9uZVdlYkFwcGxpY2F0aW9uVVJMPWh0dHA6Ly8xMjcuMC4wLjEgXSAtLT4K
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tp
ZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVj
ayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGRvZXMgbm90IGdldCByZW1vdmVkIGFmdGVy
IGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24gaWYgdGhlIHdlYnNpdGUgaXMgYSBzdGFu
ZGFsb25lIHdlYiBhcHBsaWNhdGlvbi48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9k
aXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1l
ID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0g
InNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAi
Y2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBi
KSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJD
YXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVz
c2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1
dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tp
ZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7
CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICBhZGRPdXRwdXQoKGlz
QWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxl
IGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUg
b2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIi
IDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAi
IikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAg
ICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0
aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNp
ZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAg
dW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVy
IiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNz
ZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRk
T3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0
IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0
b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJO
YW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQo
InZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAgfQorCisg
ICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURC
OworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7
CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJ
REJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBs
ZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAgICAgICAgY2hl
Y2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikg
eworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAg
ICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAg
ICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2Vz
IG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0
IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQg
dGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkg
ZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwg
MjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJl
IGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+
PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVj
a0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRl
bGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGV4aGF1c3RlZC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJ
REJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0
ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VD
YWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0
IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUg
PSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJE
ZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAg
ICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwg
dGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRl
cnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsr
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxl
dGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVl
ID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAg
ICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3Qp
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdl
LmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9j
YWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAg
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heElu
dGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3Rv
cmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRy
eSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
ICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGlu
dWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIv
Y29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiAr
IGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAg
ICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsg
aGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRo
PS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQu
Y29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29v
a2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxv
Y2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsK
KyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisg
ICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRh
U3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhp
c3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFr
VG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29u
dGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jk
c0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNo
ZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwg
ZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3QsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
b3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJ
TDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkbid0IGdldCBjbGFzc2lmaWVkIGFzIHByZXZh
bGVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVl
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>