<?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>209369</bug_id>
          
          <creation_ts>2020-03-20 17:05:45 -0700</creation_ts>
          <short_desc>Add the capability to change all of a website&apos;s cookies to SameSite=Strict</short_desc>
          <delta_ts>2020-03-24 15:35:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1632379</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-20 17:05:45 -0700</bug_when>
    <thetext>We should add the capability to change all cookies for a specific registrable domain to be SameSite=Strict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632380</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-20 17:06:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/60710690&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632393</commentid>
    <comment_count>2</comment_count>
      <attachid>394153</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-20 17:22:20 -0700</bug_when>
    <thetext>Created attachment 394153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632430</commentid>
    <comment_count>3</comment_count>
      <attachid>394153</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-20 21:04:02 -0700</bug_when>
    <thetext>Comment on attachment 394153
Patch

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

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:129
&gt; +            NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt; *mutableProperties = [[[nsCookie properties] mutableCopy] autorelease];

While this is correct, it&apos;s better to use a RetainPtr&lt;&gt; here (and add .get() where needed), although I&apos;m not certain the RetainPtr&lt;NSMutableDictionary&lt;...&gt;&gt; syntax will work, in which case you&apos;d have to fall back to the less-satisfying RetainPtr&lt;NSMutableDictionary&gt;&gt; declaration:

            RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt; *mutableProperties = adoptNS([[nsCookie properties] mutableCopy]);
            mutableProperties[NSHTTPCookieSameSitePolicy] = NSHTTPCookieSameSiteStrict;
            NSHTTPCookie *strictCookie = [NSHTTPCookie cookieWithProperties:mutableProperties.get()];
            [newCookiesToAdd addObject:strictCookie];

Or to use explicit mutableCopy/release (which is nicer because once we switch to ARC, the fix is just to remove the -release call instead of removing RetainPtr&lt;&gt; and the .get() calls):

            NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt; *mutableProperties = [[nsCookie properties] mutableCopy];
            mutableProperties[NSHTTPCookieSameSitePolicy] = NSHTTPCookieSameSiteStrict;
            NSHTTPCookie *strictCookie = [NSHTTPCookie cookieWithProperties:mutableProperties];
            [mutableProperties release];
            [newCookiesToAdd addObject:strictCookie];

Adding objects to the autoreleasePool in a loop is a good way to cause spikes in memory use (by filling up the pool itself and/or by causing the objects themselves not to be released immediately), and creates more work later when draining the pool.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:958
&gt; +    if (WKStringIsEqualToUTF8CString(messageName, &quot;StatisticsSetToSameSiteStrictCookies&quot;)) {
&gt; +        ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
&gt; +        WKStringRef hostName = static_cast&lt;WKStringRef&gt;(messageBody);
&gt; +        TestController::singleton().setStatisticsToSameSiteStrictCookies(hostName);
&gt; +        return;
&gt; +    }

This method is nearly 700 lines long!  Surely there&apos;s a better way to structure this using some kind of hash table and switch statement?

Not necessary to land this patch, but it shouldn&apos;t be left like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632918</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 10:31:28 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #3)
&gt; Comment on attachment 394153 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394153&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:129
&gt; &gt; +            NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt; *mutableProperties = [[[nsCookie properties] mutableCopy] autorelease];
&gt; 
&gt; While this is correct, it&apos;s better to use a RetainPtr&lt;&gt; here (and add .get()
&gt; where needed), although I&apos;m not certain the
&gt; RetainPtr&lt;NSMutableDictionary&lt;...&gt;&gt; syntax will work, in which case you&apos;d
&gt; have to fall back to the less-satisfying RetainPtr&lt;NSMutableDictionary&gt;&gt;
&gt; declaration:
&gt; 
&gt;             RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt;
&gt; *mutableProperties = adoptNS([[nsCookie properties] mutableCopy]);
&gt;             mutableProperties[NSHTTPCookieSameSitePolicy] =
&gt; NSHTTPCookieSameSiteStrict;
&gt;             NSHTTPCookie *strictCookie = [NSHTTPCookie
&gt; cookieWithProperties:mutableProperties.get()];
&gt;             [newCookiesToAdd addObject:strictCookie];
&gt; 
&gt; Or to use explicit mutableCopy/release (which is nicer because once we
&gt; switch to ARC, the fix is just to remove the -release call instead of
&gt; removing RetainPtr&lt;&gt; and the .get() calls):
&gt; 
&gt;             NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;
&gt; *mutableProperties = [[nsCookie properties] mutableCopy];
&gt;             mutableProperties[NSHTTPCookieSameSitePolicy] =
&gt; NSHTTPCookieSameSiteStrict;
&gt;             NSHTTPCookie *strictCookie = [NSHTTPCookie
&gt; cookieWithProperties:mutableProperties];
&gt;             [mutableProperties release];
&gt;             [newCookiesToAdd addObject:strictCookie];

Thank you, Dave! Exactly the kind of feedback and suggestions I was looking for. The manual release version works so I&apos;ll pick that.

&gt; Adding objects to the autoreleasePool in a loop is a good way to cause
&gt; spikes in memory use (by filling up the pool itself and/or by causing the
&gt; objects themselves not to be released immediately), and creates more work
&gt; later when draining the pool.

I assume the manual release resolves this concern.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:958
&gt; &gt; +    if (WKStringIsEqualToUTF8CString(messageName, &quot;StatisticsSetToSameSiteStrictCookies&quot;)) {
&gt; &gt; +        ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
&gt; &gt; +        WKStringRef hostName = static_cast&lt;WKStringRef&gt;(messageBody);
&gt; &gt; +        TestController::singleton().setStatisticsToSameSiteStrictCookies(hostName);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; This method is nearly 700 lines long!  Surely there&apos;s a better way to
&gt; structure this using some kind of hash table and switch statement?
&gt; 
&gt; Not necessary to land this patch, but it shouldn&apos;t be left like this.

Agreed. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632973</commentid>
    <comment_count>5</comment_count>
      <attachid>394287</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 12:33:29 -0700</bug_when>
    <thetext>Created attachment 394287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632996</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 13:29:56 -0700</bug_when>
    <thetext>win layout test failures are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633016</commentid>
    <comment_count>7</comment_count>
      <attachid>394287</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-23 14:07:49 -0700</bug_when>
    <thetext>Comment on attachment 394287
Patch

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

&gt; Source/WTF/wtf/PlatformHave.h:447
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 130000)

Unfortunately, many existing checks in this file are incorrect.  You have to explicitly state that this is also available on watchOS and tvOS.

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:95
&gt; +    UNUSED_PARAM(domain);

Just leave out the parameter name.
(const RegistrableDomain&amp;,

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:124
&gt; +    RetainPtr&lt;NSMutableArray&gt; oldCookiesToDelete = adoptNS([[NSMutableArray alloc] init]);

These can be RetainPtr&lt;NSMutableArray&lt;NSHTTPCookie&gt;&gt;

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:130
&gt; +            NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt; *mutableProperties = [[nsCookie properties] mutableCopy];

RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt; mutableProperties = adoptNS([[nsCookie properties] mutableCopy]);
Then we don&apos;t need to manually release below.

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:139
&gt; +    if (!newCookiesToAdd.get().count)
&gt; +        return completionHandler();

I don&apos;t think this early return actually does anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633023</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 14:19:56 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 394287 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394287&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/PlatformHave.h:447
&gt; &gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 130000)
&gt; 
&gt; Unfortunately, many existing checks in this file are incorrect.  You have to
&gt; explicitly state that this is also available on watchOS and tvOS.

Oh. I&apos;ll look for an example.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:95
&gt; &gt; +    UNUSED_PARAM(domain);
&gt; 
&gt; Just leave out the parameter name.
&gt; (const RegistrableDomain&amp;,

Will fix.

&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:124
&gt; &gt; +    RetainPtr&lt;NSMutableArray&gt; oldCookiesToDelete = adoptNS([[NSMutableArray alloc] init]);
&gt; 
&gt; These can be RetainPtr&lt;NSMutableArray&lt;NSHTTPCookie&gt;&gt;
&gt; 
&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:130
&gt; &gt; +            NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt; *mutableProperties = [[nsCookie properties] mutableCopy];
&gt; 
&gt; RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt;
&gt; mutableProperties = adoptNS([[nsCookie properties] mutableCopy]);
&gt; Then we don&apos;t need to manually release below.

See Dave Kilzer&apos;s comments above. Do you agree manual release is better given his input?

&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:139
&gt; &gt; +    if (!newCookiesToAdd.get().count)
&gt; &gt; +        return completionHandler();
&gt; 
&gt; I don&apos;t think this early return actually does anything.

Will remove.

Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633024</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 14:23:39 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #8)
&gt; (In reply to Alex Christensen from comment #7)
&gt; &gt; Comment on attachment 394287 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=394287&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/PlatformHave.h:447
&gt; &gt; &gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 130000)
&gt; &gt; 
&gt; &gt; Unfortunately, many existing checks in this file are incorrect.  You have to
&gt; &gt; explicitly state that this is also available on watchOS and tvOS.
&gt; 
&gt; Oh. I&apos;ll look for an example.

What about Mac Catalyst?

Would this work?

#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 130000) || PLATFORM(MACCATALYST) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:95
&gt; &gt; &gt; +    UNUSED_PARAM(domain);
&gt; &gt; 
&gt; &gt; Just leave out the parameter name.
&gt; &gt; (const RegistrableDomain&amp;,
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:124
&gt; &gt; &gt; +    RetainPtr&lt;NSMutableArray&gt; oldCookiesToDelete = adoptNS([[NSMutableArray alloc] init]);
&gt; &gt; 
&gt; &gt; These can be RetainPtr&lt;NSMutableArray&lt;NSHTTPCookie&gt;&gt;
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:130
&gt; &gt; &gt; +            NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt; *mutableProperties = [[nsCookie properties] mutableCopy];
&gt; &gt; 
&gt; &gt; RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt;
&gt; &gt; mutableProperties = adoptNS([[nsCookie properties] mutableCopy]);
&gt; &gt; Then we don&apos;t need to manually release below.
&gt; 
&gt; See Dave Kilzer&apos;s comments above. Do you agree manual release is better
&gt; given his input?
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:139
&gt; &gt; &gt; +    if (!newCookiesToAdd.get().count)
&gt; &gt; &gt; +        return completionHandler();
&gt; &gt; 
&gt; &gt; I don&apos;t think this early return actually does anything.
&gt; 
&gt; Will remove.
&gt; 
&gt; Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633029</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-23 14:31:53 -0700</bug_when>
    <thetext>Dave&apos;s concern was about the use of autorelease, which will not free the object until the next time the autorelease pool is drained, which in this case is after an unbounded number of loop iterations.  We should not use autorelease, I agree. 
I&apos;m just saying that instead of manually calling release, use RetainPtr&apos;s destructor which does the same thing.  If the RetainPtr is in the scope of the loop, it will call release (not autorelease) each time the loop iterates.

(In reply to John Wilander from comment #9)
&gt; Would this work?
&gt; 
&gt; #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) ||
&gt; (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 130000) ||
&gt; PLATFORM(MACCATALYST) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633031</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 14:35:11 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Dave&apos;s concern was about the use of autorelease, which will not free the
&gt; object until the next time the autorelease pool is drained, which in this
&gt; case is after an unbounded number of loop iterations.  We should not use
&gt; autorelease, I agree. 
&gt; I&apos;m just saying that instead of manually calling release, use RetainPtr&apos;s
&gt; destructor which does the same thing.  If the RetainPtr is in the scope of
&gt; the loop, it will call release (not autorelease) each time the loop iterates.

I was referring to this comment:
&quot;Or to use explicit mutableCopy/release (which is nicer because once we switch to ARC, the fix is just to remove the -release call instead of removing RetainPtr&lt;&gt; and the .get() calls)&quot;

I can do either.

&gt; (In reply to John Wilander from comment #9)
&gt; &gt; Would this work?
&gt; &gt; 
&gt; &gt; #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101500) ||
&gt; &gt; (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 130000) ||
&gt; &gt; PLATFORM(MACCATALYST) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
&gt; Looks good.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633066</commentid>
    <comment_count>12</comment_count>
      <attachid>394310</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-23 15:18:20 -0700</bug_when>
    <thetext>Created attachment 394310
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633094</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-23 16:00:56 -0700</bug_when>
    <thetext>Committed r258884: &lt;https://trac.webkit.org/changeset/258884&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394310.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633502</commentid>
    <comment_count>14</comment_count>
      <attachid>394310</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-24 14:35:50 -0700</bug_when>
    <thetext>Comment on attachment 394310
Patch for landing

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

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:143
&gt; +    BEGIN_BLOCK_OBJC_EXCEPTIONS;
&gt; +    for (NSHTTPCookie *oldCookie in oldCookiesToDelete.get())
&gt; +        deleteHTTPCookie(cookieStorage().get(), oldCookie);
&gt; +
&gt; +    for (NSHTTPCookie *newCookie in newCookiesToAdd.get())
&gt; +        [nsCookieStorage() setCookie:newCookie];
&gt; +    END_BLOCK_OBJC_EXCEPTIONS;

Had a thought here after this landed:  What happens when an exception is thrown on the first -setCookie: call?  That would mean every cookie is deleted and the new cookies are never saved.

Exceptions in other places could lead to some old cookies not being deleted or some new cookies not being added.

Not sure what the best fix for this is, but the middle ground would be:

    BEGIN_BLOCK_OBJC_EXCEPTIONS;
    for (NSHTTPCookie *oldCookie in oldCookiesToDelete.get())
        deleteHTTPCookie(cookieStorage().get(), oldCookie);
    END_BLOCK_OBJC_EXCEPTIONS;

    BEGIN_BLOCK_OBJC_EXCEPTIONS;
    for (NSHTTPCookie *newCookie in newCookiesToAdd.get())
        [nsCookieStorage() setCookie:newCookie];
    END_BLOCK_OBJC_EXCEPTIONS;

The &quot;safest&quot; strategy (meaning preserves the most cookies) but slowest (because the try/catch block is inside the for loop) might be:

    for (NSHTTPCookie *oldCookie in oldCookiesToDelete.get()) {
        BEGIN_BLOCK_OBJC_EXCEPTIONS;
        deleteHTTPCookie(cookieStorage().get(), oldCookie);
        END_BLOCK_OBJC_EXCEPTIONS;
    }

    for (NSHTTPCookie *newCookie in newCookiesToAdd.get()) {
        BEGIN_BLOCK_OBJC_EXCEPTIONS;
        [nsCookieStorage() setCookie:newCookie];
        END_BLOCK_OBJC_EXCEPTIONS;
    }

This may also not be an issue in practice, but I wanted to mention it after I noticed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633582</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-24 15:35:28 -0700</bug_when>
    <thetext>I don&apos;t think this is an issue in practice.  I also don&apos;t think the &quot;slowness&quot; of the safest option is too slow.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394153</attachid>
            <date>2020-03-20 17:22:20 -0700</date>
            <delta_ts>2020-03-23 12:33:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209369-20200320172219.patch</filename>
            <type>text/plain</type>
            <size>37081</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Nzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUyY2VmODk0OWY2NGU3
NTA1ZjcyOWViNDRiNDdmODQxYzZhMjMxNC4uZDE2MzkxNjU4ZjUwMjQwMGEwZTM4ZDgzY2ZkNWIw
MzBkYmFkZThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAzLTIwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgY2FwYWJp
bGl0eSB0byBjaGFuZ2UgYWxsIG9mIGEgd2Vic2l0ZSdzIGNvb2tpZXMgdG8gU2FtZVNpdGU9U3Ry
aWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkz
NjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNzEwNjkwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAgICAgQWRkZWQgY29kZSB0byBleHBvc2UgU2FtZVNpdGU9Tm9uZSBhbmQgcGF0aCBwcm9w
ZXJ0aWVzIG9mIGNvb2tpZXMuCisgICAgICAgICAgICBIb3dldmVyLCB0aGV5IGRvbid0IHNlZW0g
dG8gY2Fycnkgb3ZlciBzbyBJJ2xsIGhhdmUgdG8gcmV2aXNpdCB0aGUKKyAgICAgICAgICAgIGlu
dGVybmFsIHdvcmtpbmdzLgorCiAyMDIwLTAzLTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ09SUy1kaXNhYmxpbmcgU1BJIGludHJvZHVj
ZWQgaW4gcjI1Mzk3OCBzaG91bGQgbWFrZSByZXNwb25zZXMgbm9uLW9wYXF1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA0MDYzZDFjYTUyYTNiZTZlMDc1MGJiNjYzMTgwYzVhM2JlM2MyY2I2Li41YmJmNzU2YzE5ZGM5
NTc4Y2YyZWFmMzBlZmU4OGVkMWQ3MjE4MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisy
MDIwLTAzLTIwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCB0aGUgY2FwYWJpbGl0eSB0byBjaGFuZ2UgYWxsIG9mIGEgd2Vic2l0ZSdzIGNvb2tpZXMg
dG8gU2FtZVNpdGU9U3RyaWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDkzNjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNzEwNjkwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGNoYW5n
ZXMgYWRkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIGZ1bmN0aW9uCisgICAgICAgIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0QWxsQ29va2llc1RvU2FtZVNpdGVTdHJpY3Qo
KSBpbiB0aGUKKyAgICAgICAgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDMtMjAgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgaW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmMoKSB0YWtlIGFuIEluc2VydFRleHRPcHRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApp
bmRleCBhODdiOTFjOWRlYzkxYjhlOGNlNDk1YjgxMzE1MjExNGRjNDhiZGM5Li44ODVmZjg3ZTc2
ZTg4NDY4YWE3ODViMzRhYThmMjUxMDIwOTZlZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE3Nyw2
ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJj
ZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNG
b3IoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0hhZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggMjkwZTM0MThkMTMzNGMwYjVhOTdm
MmE1OTMzYzIxZjllYzFkMTIyZS4uYTE4N2E0ZTI4MjlhMWE0MDEyODEwZDE1MzQyN2Q1MDU0MzZl
M2YxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTYsNiAr
MTE2LDM3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0QWxsQ29va2llc1Rv
U2FtZVNpdGVTdHJpY3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsK
KworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2xkQ29va2llc1RvRGVsZXRlID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBuZXdDb29raWVzVG9BZGQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKKworICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tp
ZVN0b3JhZ2UoKS5jb29raWVzKSB7CisgICAgICAgIGlmIChSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3QobnNDb29raWUuZG9tYWluKSA9PSBkb21haW4gJiYgbnNDb29r
aWUuc2FtZVNpdGVQb2xpY3kgIT0gTlNIVFRQQ29va2llU2FtZVNpdGVTdHJpY3QpIHsKKyAgICAg
ICAgICAgIFtvbGRDb29raWVzVG9EZWxldGUgYWRkT2JqZWN0Om5zQ29va2llXTsKKyAgICAgICAg
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnk8TlNIVFRQQ29va2llUHJvcGVydHlLZXksIGlkPiAqbXV0
YWJsZVByb3BlcnRpZXMgPSBbW1tuc0Nvb2tpZSBwcm9wZXJ0aWVzXSBtdXRhYmxlQ29weV0gYXV0
b3JlbGVhc2VdOworICAgICAgICAgICAgbXV0YWJsZVByb3BlcnRpZXNbTlNIVFRQQ29va2llU2Ft
ZVNpdGVQb2xpY3ldID0gTlNIVFRQQ29va2llU2FtZVNpdGVTdHJpY3Q7CisgICAgICAgICAgICBO
U0hUVFBDb29raWUgKnN0cmljdENvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3Bl
cnRpZXM6bXV0YWJsZVByb3BlcnRpZXNdOworICAgICAgICAgICAgW25ld0Nvb2tpZXNUb0FkZCBh
ZGRPYmplY3Q6c3RyaWN0Q29va2llXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbmV3
Q29va2llc1RvQWRkLmdldCgpLmNvdW50KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoKTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBmb3IgKE5TSFRU
UENvb2tpZSAqb2xkQ29va2llIGluIG9sZENvb2tpZXNUb0RlbGV0ZS5nZXQoKSkKKyAgICAgICAg
ZGVsZXRlSFRUUENvb2tpZShjb29raWVTdG9yYWdlKCkuZ2V0KCksIG9sZENvb2tpZSk7CisKKyAg
ICBmb3IgKE5TSFRUUENvb2tpZSAqbmV3Q29va2llIGluIG5ld0Nvb2tpZXNUb0FkZC5nZXQoKSkK
KyAgICAgICAgW25zQ29va2llU3RvcmFnZSgpIHNldENvb2tpZTpuZXdDb29raWVdOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQor
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiB7CiAgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNzZjNDM4OTQ5ZjFi
N2U0ZTQ2YjZiMTE5ODQxZmJiYmNiN2QxN2MzYi4uZjEwOTE4MTAyMmQ4ZDg4NzJhMzJhNzE2MWZh
MWVhMzdiOGI0NjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04NDcsMTEg
Kzg0NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBuYW1lOwogICAgICAgICBTdHJpbmcg
dmFsdWU7CiAgICAgICAgIFN0cmluZyBkb21haW47CisgICAgICAgIFN0cmluZyBwYXRoOwogICAg
ICAgICAvLyBFeHBpcmF0aW9uIGRhdGVzIGFyZSBleHByZXNzZWQgYXMgbWlsbGlzZWNvbmRzIHNp
bmNlIHRoZSBVTklYIGVwb2NoLgogICAgICAgICBkb3VibGUgZXhwaXJlcyB7IDAgfTsKICAgICAg
ICAgYm9vbCBpc0h0dHBPbmx5IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpc1NlY3VyZSB7IGZh
bHNlIH07CiAgICAgICAgIGJvb2wgaXNTZXNzaW9uIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBp
c1NhbWVTaXRlTm9uZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaXNTYW1lU2l0ZUxheCB7IGZh
bHNlIH07CiAgICAgICAgIGJvb2wgaXNTYW1lU2l0ZVN0cmljdCB7IGZhbHNlIH07CiAKQEAgLTg1
OSwxNCArODYxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogbmFtZShjb29raWUubmFtZSkK
ICAgICAgICAgICAgICwgdmFsdWUoY29va2llLnZhbHVlKQogICAgICAgICAgICAgLCBkb21haW4o
Y29va2llLmRvbWFpbikKKyAgICAgICAgICAgICwgcGF0aChjb29raWUucGF0aCkKICAgICAgICAg
ICAgICwgZXhwaXJlcyhjb29raWUuZXhwaXJlcy52YWx1ZU9yKDApKQogICAgICAgICAgICAgLCBp
c0h0dHBPbmx5KGNvb2tpZS5odHRwT25seSkKICAgICAgICAgICAgICwgaXNTZWN1cmUoY29va2ll
LnNlY3VyZSkKICAgICAgICAgICAgICwgaXNTZXNzaW9uKGNvb2tpZS5zZXNzaW9uKQorICAgICAg
ICAgICAgLCBpc1NhbWVTaXRlTm9uZShjb29raWUuc2FtZVNpdGUgPT0gQ29va2llOjpTYW1lU2l0
ZVBvbGljeTo6Tm9uZSkKICAgICAgICAgICAgICwgaXNTYW1lU2l0ZUxheChjb29raWUuc2FtZVNp
dGUgPT0gQ29va2llOjpTYW1lU2l0ZVBvbGljeTo6TGF4KQogICAgICAgICAgICAgLCBpc1NhbWVT
aXRlU3RyaWN0KGNvb2tpZS5zYW1lU2l0ZSA9PSBDb29raWU6OlNhbWVTaXRlUG9saWN5OjpTdHJp
Y3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghKGlzU2FtZVNpdGVMYXggJiYgaXNT
YW1lU2l0ZVN0cmljdCkpOworICAgICAgICAgICAgQVNTRVJUKCEoaXNTYW1lU2l0ZUxheCAmJiBp
c1NhbWVTaXRlU3RyaWN0KSAmJiAhKGlzU2FtZVNpdGVMYXggJiYgaXNTYW1lU2l0ZU5vbmUpICYm
ICEoaXNTYW1lU2l0ZVN0cmljdCAmJiBpc1NhbWVTaXRlTm9uZSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgQ29va2llRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IGUwZGIzNjlhODk2MmEwZDJhZTQyYzM0ZThlMWU3YjMwNTY5
YjNiOGIuLmY1MWNhZjFkZjg0MTAxN2RjOGMzYzc4NmQxYzdkYmRjZWM0YzRmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzA2
LDYgKzEzMDYsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbkkKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zZXRBbGxDb29raWVzVG9TYW1lU2l0ZVN0cmljdChkb21haW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfQogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYWFjMmRkMjIyOWZjNDMwNmNkY2FiZDcxYTcxOGI4
NWIxMTY3NmYzNC4uZjA2NDBlOTBjZDM1Mzc3MTExNzJjZGZiNDc2NDk1YjkwYjM1YjRkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjY1
LDYgKzI2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAjZW5kaWYKIAogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiN2Y2YTFi
ZjBkNWUzYTNmYTI0YjFmYjZiODM4M2NkODcwZWRmNTk0Li43OWM4NzU2MTA0MmE0MWZlODkzMDE0
ODdkNDU3ZjkxMWE4NjcxYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE0MSw2ICsxNDEsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2hvdWxk
RG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAg
ICBTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkg
LT4gKCkgQXN5bmMKKyAgICBTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4p
IC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKaW5kZXggMzM1ZmMyMGIzMzkzMDNkZjZhYWVkM2M5NWI0NWFiMmM0MTY3OGYxOC4uOTdh
ZmNhYjY4NTcyZjE5NGM4OTcyOWZkMjY4Yzg1ODliNzI2YTAwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBA
IC01ODIsNiArNTgyLDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlCiAjZW5kaWYKIH0KIAor
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0
ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0
aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdE5hbWUpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAg
ICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30K
Kwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCmluZGV4IDU4MDJmZWFiMmUzYWM0ZjM5ODlmNGVhNzY4YjRmOTJjZGM5YmE4OTYu
LmU1YjhiZWRhZGZlZDhhYzI3NzU4MWFhZThkYmU0MGM2NzcxNTljNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBA
IC0xMjcsNiArMTI3LDggQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUMKIFdLX0VYUE9SVCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGlu
Z0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3Ry
aWN0Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tTdHJpbmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmdG
dW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5j
dGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Ziwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGI2OTAyZTY4N2NlMGNiMmZhMDllNWVhMTUwMDQ3NDFlY2RiZGU3YWYuLmY5ODU1ODlkMjky
MWNlZTY4N2MwNzQ1M2E3MzQ5ZTY5OTk3ZjZjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE2NSw2
ICsxMTY1LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2VzCiAKICAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3Rpbmcoc2Vzc2lvbklELCBtb2RlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRvU2FtZVNpdGVTdHJp
Y3RDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5Rm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDA0OTBkNzljZjAyYmY2YjBlYWM0ZjRl
MDJiNDRiZTUwZDdjNTU0NDEuLjI0MGMzNTcxZTEzNzgyOGY4NWE4YTJiNTU5YmQzNWVhYjk5MTVh
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0xNzQsNiArMTc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgc3ludGhlc2l6ZUFwcElzQmFj
a2dyb3VuZChib29sIGJhY2tncm91bmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyZmJlMTk5ZGU3
ZmQwM2M3MjY0NDBiMzk4ZWJkMjgwZmY3ZmVlMTM0Li40YWU4ZWU5NzU0MmUyMDc0NDA2NDY4MmU5
MmJmNDA3ODUxOTY3NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTg1Nyw2ICsxODU3LDE2IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBt
b2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICB9CiB9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmIHVy
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQogI2VuZGlmIC8vIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5k
ZXggOTAwNzdmNjcyZGVlNWRhYWMwNWFmNGYzOWVhMjY5ZmM0Y2M2YjE4NS4uMTMzNmQ5ZWYxOWQ2
ODZhYzc1OWU1MzliNDc0ZmYxOWY3ZmViNmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTk2LDYgKzE5
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2b2lkIHVz
ZUV4cGxpY2l0SVRQU3RhdGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzEx
ZGMyZGU3NWYzZTk4ODRkNWFkZTc0YjJhYzhlOGFjMjVkM2EyYi4uYjAyMThmNDZjZmFiYjMyMDg3
MDA0MTc3M2U1ZWYzZmJmMjhhNWYwMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTIwICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgY2FwYWJpbGl0eSB0
byBjaGFuZ2UgYWxsIG9mIGEgd2Vic2l0ZSdzIGNvb2tpZXMgdG8gU2FtZVNpdGU9U3RyaWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzNjkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNzEwNjkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgYWRkIFRlc3RSdW5uZXIgZnVu
Y3Rpb24gc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCkuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VU
b1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llcyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3ND
YWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpzZXRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXMpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAtMDMtMjAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDT1JTLWRpc2Fi
bGluZyBTUEkgaW50cm9kdWNlZCBpbiByMjUzOTc4IHNob3VsZCBtYWtlIHJlc3BvbnNlcyBub24t
b3BhcXVlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAxZTk3YzY2Yjc4ZmU1MWU3NGE5
YjRmYzVmMzdiM2FmYTNmNGU1N2U4Li5mYTY3ZjM3YThkYWI5OGIzMDVmMDA1Y2QxMGMxMWY1MDMw
YWI5ZDEyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0NSw2ICszNDUsNyBAQCBp
bnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkRG93bmdy
YWRlUmVmZXJyZXIoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2xlYW4gdmFsdWUsIG9i
amVjdCBjYWxsYmFjaywgb3B0aW9uYWwgYm9vbGVhbiBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0
aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoRE9NU3RyaW5nIGhvc3ROYW1lLCBvYmpl
Y3QgY2FsbGJhY2spOwogICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMob2JqZWN0IGNh
bGxiYWNrKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggNTJmMTY4OTBkOWFlMGUwNWQwZWJiNjU1MDZjY2UzNzExZDhhYzhmNy4uMTY2
NzU4MDIxMDEyZjBlNDhhYmU0MzY4MzExNDc2NTg1YmU2NzA3OCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTM1Nyw2ICszNTcsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzIikpIHsKKyAgICAgICAg
bV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVz
Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlc2V0U3RhdGlzdGljc1Rv
Q29uc2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2Fs
bERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCBlMGM3ZWJmNTE5ZWFlOTNhMGU4NzkzMTFiNDdmYmZmMzUzYWYwMGE3Li45NWFl
NjQyNDhlNGZlOTQ1MjlkNmQzMDI3M2VmNmY1OThhYjM1OWJlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw2
ICs3NTQsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAorICAgIFN0YXRpc3RpY3NEaWRTZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0NhbGxiYWNrSUQsCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFja0lELAogICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tJRCwKICAgICBE
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELApAQCAtMjI4Niw2ICsyMjg3
LDIwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWxDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0
aWNzRGlkQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2tJRCk7CiB9CiAKK3Zv
aWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKEpTU3Ry
aW5nUmVmIGhvc3ROYW1lLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNh
Y2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0NhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGF1dG8gbWVzc2FnZU5h
bWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzU2V0
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMiKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKTsKKyAgICBXS0J1bmRsZVBv
c3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0
aXN0aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2soKQoreworICAg
IGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzQ2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
YWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZUNhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNWYyNDc1Y2MwMTU2ZTEw
M2ZkNDY0Mzc5MzI2ODM3NWEyY2Q1YTg0Yy4uNzI4ZDM2ZTJhOTgyYTE4ZmFjYjU2OTk4ZGQ2YzA0
YmQ1YzAyNzNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ0OCw2ICs0NDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
KGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0Nh
bGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrKCk7CisgICAg
dm9pZCBzdGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoSlNTdHJpbmdSZWYgaG9z
dE5hbWUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRT
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7
CiAgICAgdm9pZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggM2NiY2Q2MmFj
MWRmY2QzN2VkMTU1MmE1ZjdmNTE2MGViNThhZTI5YS4uYmE5ODI5ZmJhZjg2OTcxNGE0YTExNzQ0
OGVmZDU0NTZmMjJlMGM1OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTM3MDQsNiArMzcwNCwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSkKICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSgpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0
cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0
aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcod2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0TmFtZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlz
dGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKCkKIHsKICAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQg
Y29udGV4dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5k
ZXggOGViOTY3NDFhNjEzMGVmNjVlYjUyNjMyOWNhNTE1NjM0YWU0ZDJjYi4uOGJjYTY0NTVkMDcx
OWY3NzZjY2JkMGM1ZTE4ZjVjZTg5MTA0NzU5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaApAQCAtMjYyLDYgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sIHZhbHVlKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIGJvb2wg
b25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBob3N0TmFt
ZSk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCiAgICAg
dm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBlNDc0OWQyYTY5MTE5Y2U5Y2FjYTU1MTkyMGZjNWJl
NGI2Y2M4NDM1Li5jYmQxNDY5YjkyODhlYzY0ZWQ2YzZhNTdjMTNmYjY3YmY1ZjcwYjk0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtOTUwLDYgKzk1MCwx
MyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0
aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAgICBXS1N0
cmluZ1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVG9TYW1l
U2l0ZVN0cmljdENvb2tpZXMoaG9zdE5hbWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAgICAgIGlmIChtX3Nob3VsZER1bXBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICAgICAgbV9zYXZlZFJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKTsKQEAgLTE5MTYsNiArMTkyMywxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpCiAgICAgV0tQYWdlUG9zdE1l
c3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKIH0KIAordm9pZCBU
ZXN0SW52b2NhdGlvbjo6ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKQoreworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyIpKTsK
KyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxw
dHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNp
c3RlbnRTdGF0ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1l
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlc2V0U3Rh
dGlzdGljc1RvQ29uc2lzdGVudFN0YXRlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCmluZGV4IGRjMWY5NTMwNmJjMTUyNzExYWFmMjRlYTM0MDA0NGE0MDAzNDg5OWUu
LmU4NGY1ZWI3NDlhMjQwMmJiOTg1YTAxNjM2NGM4MWE2NjI5ZDliYjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKTsKICAgICB2b2lkIGRpZFNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKTsKICAgICB2b2lkIGRpZFNldEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlKCk7CisgICAgdm9pZCBkaWRTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llcygpOwogICAgIHZvaWQgZGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUo
KTsKICAgICB2b2lkIGRpZFNldEJsb2NrQ29va2llc0Zvckhvc3QoKTsKICAgICB2b2lkIGRpZFNl
dFN0YXRpc3RpY3NEZWJ1Z01vZGUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYWUyZTk2N2E0ZWU5MjI4MmMyYTgyZDNl
ODI2Njk3YmE3NTdlZTBlLi5hYjQxMWFhZWIyMDQzMmMxMmNmNjgzNTk1YzAyMTY5MjJjNTY3M2My
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMjAgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNoYW5nZSBh
bGwgb2YgYSB3ZWJzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1TdHJpY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjA3MTA2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3Vy
Y2VzL3NldC1hbGwta2luZHMtb2YtY29va2llcy5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRl
LXN0cmljdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1s
OiBBZGRlZC4KKwogMjAyMC0wMy0yMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjU4NzA3KTogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWxlYWsuaHRtbCBpcyBmbGFreSB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3NldC1hbGwta2luZHMt
b2YtY29va2llcy5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL3NldC1hbGwta2luZHMtb2YtY29va2llcy5waHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2NiMjM4N2E4M2IzMjhlNjI1YjkyNjYwYjFhYzE2ZTRjOGUxYjg4YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvc2V0LWFsbC1raW5kcy1vZi1jb29raWVzLnBocApAQCAtMCwwICsxLDE1IEBACis8P3BocAor
aGVhZGVyKCJIVFRQLzEuMSAyMDAgT0siKTsKKworc2V0Y29va2llKCJwZXJzaXN0ZW50Q29va2ll
IiwgIjEiLCB0aW1lKCkgKyAzMDAsICIvIik7CitzZXRjb29raWUoInBlcnNpc3RlbnRTZWN1cmVD
b29raWUiLCAiMSIsIHRpbWUoKSArIDMwMCwgIi8iLCAiIiwgVFJVRSk7CitzZXRjb29raWUoInBl
cnNpc3RlbnRIdHRwT25seUNvb2tpZSIsICIxIiwgdGltZSgpICsgMzAwLCAiLyIsICIiLCBGQUxT
RSwgVFJVRSk7CitzZXRjb29raWUoInBlcnNpc3RlbnRTYW1lU2l0ZUxheENvb2tpZSIsICIxIiwg
WyJleHBpcmVzIiA9PiB0aW1lKCkgKyAzMDAsICJwYXRoIiA9PiAiLyIsICJzYW1lc2l0ZSIgPT4g
IkxheCJdKTsKK3NldGNvb2tpZSgicGVyc2lzdGVudFNhbWVTaXRlU3RyaWN0Q29va2llIiwgIjEi
LCBbImV4cGlyZXMiID0+IHRpbWUoKSArIDMwMCwgInBhdGgiID0+ICIvIiwgInNhbWVzaXRlIiA9
PiAiU3RyaWN0Il0pOworCitzZXRjb29raWUoInNlc3Npb25Db29raWUiLCAiMSIsICIiLCAiLyIp
Oworc2V0Y29va2llKCJzZXNzaW9uU2VjdXJlQ29va2llIiwgIjEiLCAiIiwgIi8iLCAiIiwgVFJV
RSk7CitzZXRjb29raWUoInNlc3Npb25IdHRwT25seUNvb2tpZSIsICIxIiwgIiIsICIvIiwgIiIs
IEZBTFNFLCBUUlVFKTsKK3NldGNvb2tpZSgic2Vzc2lvblNhbWVTaXRlTGF4Q29va2llIiwgIjEi
LCBbInBhdGgiID0+ICIvIiwgInNhbWVzaXRlIiA9PiAiTGF4Il0pOworc2V0Y29va2llKCJzZXNz
aW9uU2FtZVNpdGVTdHJpY3RDb29raWUiLCAiMSIsIFsicGF0aCIgPT4gIi8iLCAic2FtZXNpdGUi
ID0+ICJTdHJpY3QiXSk7Cis/PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDViYzFjZjRlYWU1YTY3NGMwODBhYzQ1YzlhNmZlZjFmZTk5ZDVhOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzMSBAQAorVGVzdHMgc2V0dGluZyBhbGwgb2YgYSBzaXRlJ3MgY29va2llcyB0byBTYW1l
U2l0ZT1zdHJpY3QuCisKKydjbGllbnRTaWRlQ29va2llJyAxIEJlZm9yZSBDaGFuZ2UgLS0gZG9t
YWluOiAnMTI3LjAuMC4xJyBpc1Nlc3Npb246ICd0cnVlJworJ2NsaWVudFNpZGVDb29raWUnIDIg
QWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGlzU2Vzc2lvbjogJ3RydWUnIGlz
U2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisncGVyc2lzdGVudENvb2tpZScgMSBCZWZvcmUgQ2hh
bmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScgZXhwaXJ5IHNldAorJ3BlcnNpc3RlbnRDb29raWUn
IDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQgaXNTYW1l
U2l0ZVN0cmljdDogJ3RydWUnCisKKydwZXJzaXN0ZW50SHR0cE9ubHlDb29raWUnIDEgQmVmb3Jl
IENoYW5nZSAtLSBkb21haW46ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQgaXNIdHRwT25seTogJ3Ry
dWUnCisncGVyc2lzdGVudEh0dHBPbmx5Q29va2llJyAyIEFmdGVyIENoYW5nZSAtLS0gZG9tYWlu
OiAnMTI3LjAuMC4xJyBleHBpcnkgc2V0IGlzSHR0cE9ubHk6ICd0cnVlJyBpc1NhbWVTaXRlU3Ry
aWN0OiAndHJ1ZScKKworJ3BlcnNpc3RlbnRTYW1lU2l0ZUxheENvb2tpZScgMSBCZWZvcmUgQ2hh
bmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScgZXhwaXJ5IHNldCBpc1NhbWVTaXRlTGF4OiAndHJ1
ZScKKydwZXJzaXN0ZW50U2FtZVNpdGVMYXhDb29raWUnIDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21h
aW46ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQgaXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisKKydw
ZXJzaXN0ZW50U2FtZVNpdGVTdHJpY3RDb29raWUnIDEgQmVmb3JlIENoYW5nZSAtLSBkb21haW46
ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQgaXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisncGVyc2lz
dGVudFNhbWVTaXRlU3RyaWN0Q29va2llJyAyIEFmdGVyIENoYW5nZSAtLS0gZG9tYWluOiAnMTI3
LjAuMC4xJyBleHBpcnkgc2V0IGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisnc2Vzc2lvbkNv
b2tpZScgMSBCZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScgaXNTZXNzaW9uOiAn
dHJ1ZScKKydzZXNzaW9uQ29va2llJyAyIEFmdGVyIENoYW5nZSAtLS0gZG9tYWluOiAnMTI3LjAu
MC4xJyBpc1Nlc3Npb246ICd0cnVlJyBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScKKworJ3Nlc3Np
b25IdHRwT25seUNvb2tpZScgMSBCZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScg
aXNIdHRwT25seTogJ3RydWUnIGlzU2Vzc2lvbjogJ3RydWUnCisnc2Vzc2lvbkh0dHBPbmx5Q29v
a2llJyAyIEFmdGVyIENoYW5nZSAtLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc0h0dHBPbmx5OiAn
dHJ1ZScgaXNTZXNzaW9uOiAndHJ1ZScgaXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisKKydzZXNz
aW9uU2FtZVNpdGVMYXhDb29raWUnIDEgQmVmb3JlIENoYW5nZSAtLSBkb21haW46ICcxMjcuMC4w
LjEnIGlzU2Vzc2lvbjogJ3RydWUnIGlzU2FtZVNpdGVMYXg6ICd0cnVlJworJ3Nlc3Npb25TYW1l
U2l0ZUxheENvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEyNy4wLjAuMScgaXNT
ZXNzaW9uOiAndHJ1ZScgaXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisKKydzZXNzaW9uU2FtZVNp
dGVTdHJpY3RDb29raWUnIDEgQmVmb3JlIENoYW5nZSAtLSBkb21haW46ICcxMjcuMC4wLjEnIGlz
U2Vzc2lvbjogJ3RydWUnIGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworJ3Nlc3Npb25TYW1lU2l0
ZVN0cmljdENvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEyNy4wLjAuMScgaXNT
ZXNzaW9uOiAndHJ1ZScgaXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1j
b29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmlj
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU3NDk4NTMzZmY5NjRjNGU4YWVkYmVlNDA3MTk2Yjc0ZDQ5ODMx
YWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbApAQCAt
MCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1bigpJywgMCkiPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPlRlc3RzIHNldHRpbmcgYWxsIG9mIGEgc2l0ZSdzIGNvb2tpZXMgdG8g
U2FtZVNpdGU9c3RyaWN0LjwvZGl2PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxi
cj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikg
eworICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2Fz
ZSgpOworCisgICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBw
ZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3Nh
Z2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQu
YXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RyaW5naWZ5Q29v
a2llUHJvcGVydGllcyhjb29raWUsIGlzQmVmb3JlKSB7CisgICAgICAgIGxldCBjb29raWVTdHJp
bmcgPSAiJyIgKyBjb29raWUubmFtZSArIChpc0JlZm9yZSA/ICInIDEgQmVmb3JlIENoYW5nZSAt
LSIgOiAiJyAyIEFmdGVyIENoYW5nZSAtLS0iKTsKKyAgICAgICAgaWYgKGNvb2tpZS5kb21haW4p
CisgICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBkb21haW46ICciICsgY29va2llLmRvbWFp
biArICInIjsKKyAgICAgICAgaWYgKGNvb2tpZS5wYXRoKQorICAgICAgICAgICAgY29va2llU3Ry
aW5nICs9ICIgcGF0aDogJyIgKyBjb29raWUucGF0aCArICInIjsKKyAgICAgICAgaWYgKGNvb2tp
ZS5leHBpcmVzKQorICAgICAgICAgICAgY29va2llU3RyaW5nICs9ICIgZXhwaXJ5IHNldCI7Cisg
ICAgICAgIGlmIChjb29raWUuaXNIdHRwT25seSkKKyAgICAgICAgICAgIGNvb2tpZVN0cmluZyAr
PSAiIGlzSHR0cE9ubHk6ICciICsgY29va2llLmlzSHR0cE9ubHkgKyAiJyI7CisgICAgICAgIGlm
IChjb29raWUuaXNTZWN1cmUpCisgICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBpc1NlY3Vy
ZTogJyIgKyBjb29raWUuaXNTZWN1cmUgKyAiJyI7CisgICAgICAgIGlmIChjb29raWUuaXNTZXNz
aW9uKQorICAgICAgICAgICAgY29va2llU3RyaW5nICs9ICIgaXNTZXNzaW9uOiAnIiArIGNvb2tp
ZS5pc1Nlc3Npb24gKyAiJyI7CisgICAgICAgIGlmIChjb29raWUuaXNTYW1lU2l0ZU5vbmUpCisg
ICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBpc1NhbWVTaXRlTm9uZTogJyIgKyBjb29raWUu
aXNTYW1lU2l0ZU5vbmUgKyAiJyI7CisgICAgICAgIGlmIChjb29raWUuaXNTYW1lU2l0ZUxheCkK
KyAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSAiIGlzU2FtZVNpdGVMYXg6ICciICsgY29va2ll
LmlzU2FtZVNpdGVMYXggKyAiJyI7CisgICAgICAgIGlmIChjb29raWUuaXNTYW1lU2l0ZVN0cmlj
dCkKKyAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSAiIGlzU2FtZVNpdGVTdHJpY3Q6ICciICsg
Y29va2llLmlzU2FtZVNpdGVTdHJpY3QgKyAiJyI7CisgICAgICAgIHJldHVybiBjb29raWVTdHJp
bmc7CisgICAgfQorCisgICAgbGV0IGNvb2tpZXNCZWZvcmVDaGFuZ2U7CisgICAgbGV0IGNvb2tp
ZXNBZnRlckNoYW5nZTsKKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcygpIHsKKyAgICAgICAg
aWYgKCFjb29raWVzQmVmb3JlQ2hhbmdlLmxlbmd0aCkgeworICAgICAgICAgICAgYWRkT3V0cHV0
KCJGQUlMOiBObyBjb29raWVzIGZvdW5kIGJlZm9yZSBjaGFuZ2UuIik7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghY29va2llc0JlZm9yZUNoYW5nZS5sZW5ndGggfHwgIWNvb2tpZXNBZnRl
ckNoYW5nZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogTm8gY29va2ll
cyBmb3VuZCBhZnRlciBjaGFuZ2UuIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb29r
aWVzQmVmb3JlQ2hhbmdlLmxlbmd0aCAhPT0gY29va2llc0FmdGVyQ2hhbmdlLmxlbmd0aCkgewor
ICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiBOb3QgdGhlIHNhbWUgYW1vdW50IG9mIGNvb2tp
ZXMgYmVmb3JlIGFuZCBhZnRlciBjaGFuZ2UuIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGNvb2tpZXNCZWZvcmVDaGFuZ2UubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goc3RyaW5naWZ5Q29va2llUHJvcGVydGllcyhj
b29raWVzQmVmb3JlQ2hhbmdlW2ldLCB0cnVlKSk7CisgICAgICAgICAgICB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5wdXNoKHN0cmluZ2lmeUNvb2tpZVByb3BlcnRpZXMoY29va2llc0FmdGVy
Q2hhbmdlW2ldLCBmYWxzZSkpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmlu
Z0FycmF5KTsKKyAgICAgICAgbGV0IHJvdyA9IDE7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNz
ZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRk
T3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgICAgIGlmIChyb3cgJSAyID09PSAw
KQorICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgICAgICAr
K3JvdzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bigpIHsKKyAgICAgICAg
ZmV0Y2goInJlc291cmNlcy9zZXQtYWxsLWtpbmRzLW9mLWNvb2tpZXMucGhwP2R1bW15PSIgKyBN
YXRoLnJhbmRvbSgpKQorICAgICAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmNvb2tpZSA9ICJjbGllbnRTaWRlQ29va2llPTEiOworICAgICAgICAgICAgICAg
IGNvb2tpZXNCZWZvcmVDaGFuZ2UgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvb2tpZXNBZnRlckNoYW5nZSA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrQ29va2llcygpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pCisgICAg
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394287</attachid>
            <date>2020-03-23 12:33:29 -0700</date>
            <delta_ts>2020-03-23 15:18:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209369-20200323123328.patch</filename>
            <type>text/plain</type>
            <size>43388</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0NmJkNmY4OWEzZTczYjRhODZlNjIz
OTE0MDU3MWY0M2FiOWZiMjIuLjg5MjVmYzljZjNkNjEyNGIwMDMzZTNkOTFiMGNjMTk0NWY4YzFl
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNoYW5nZSBh
bGwgb2YgYSB3ZWJzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1TdHJpY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjA3MTA2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisgICAgICAgICAgICBBZGRzIEhB
VkVfQ0ZORVRXT1JLX1NBTUVTSVRFX0NPT0tJRV9BUEkgZm9yIG1hY09TIENhdGFsaW5hIGFuZCB1
cCBhbmQKKyAgICAgICAgICAgIGlPUyAxMyBhbmQgdXAuCisKIDIwMjAtMDMtMjMgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBEb2N1bWVudFRpbWVsaW5lIC8g
Q1NTVHJhbnNpdGlvbiBvYmplY3RzIGFyZSBsZWFraW5nIG9uIENOTi5jb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzNmYwODQ5ZjgwZjg0NjVkNWZkMzMyZWYzZTkyMjcxMGMwY2Q2NWY2Li5lNjM3ZTMxMDM0NmRl
NmQ4ZDcwMjNjZGVjZWRmNjhjOGU2MWU4NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMjAtMDMtMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNoYW5nZSBhbGwgb2YgYSB3ZWJzaXRlJ3MgY29va2ll
cyB0byBTYW1lU2l0ZT1TdHJpY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTM2OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA3MTA2OTA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNp
dGUtc3RyaWN0Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0QWxsQ29va2llc1RvU2FtZVNpdGVTdHJpY3QpOgorICAgICAgICAgICAgU3R1YiBmdW5jdGlv
biBmb3Igbm9uLUNvY29hIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAgICAgQWRkZWQgY29kZSB0byBleHBvc2Ug
U2FtZVNpdGU9Tm9uZSBhbmQgcGF0aCBwcm9wZXJ0aWVzIG9mIGNvb2tpZXMuCisgICAgICAgICAg
ICBIb3dldmVyLCB0aGV5IGRvbid0IHNlZW0gdG8gY2Fycnkgb3ZlciBzbyBJJ2xsIGhhdmUgdG8g
cmV2aXNpdCB0aGUKKyAgICAgICAgICAgIGludGVybmFsIHdvcmtpbmdzLgorCiAyMDIwLTAzLTIz
ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNTg4NDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3NmI1ZWZiY2JmZmVlYjBmYTE5NzA4
NzVjNDk0YzhlOGUwZGY5MjkuLjZjYTM3MGY1ODM5YjA1M2EzN2VmZmQ5ZmM5NDIyMTVkMDNjZjIx
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDMtMjMgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNo
YW5nZSBhbGwgb2YgYSB3ZWJzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1TdHJpY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM2OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjA3MTA2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhZGQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gZnVuY3Rpb24KKyAgICAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRBbGxDb29raWVzVG9TYW1lU2l0ZVN0cmljdCgpIGluIHRoZQorICAgICAgICBuZXR3b3Jr
IHByb2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RD
b29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wMy0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gbW92ZSBsb2NhbFN0b3JhZ2Ug
dG8gYSBkaWZmZXJlbnQgZG9tYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IGIxNzUzOWJlOTE5
MzEyYWI4M2U5Mzk5MzVjZWZkMjJkMTkzYjI5OTMuLmU4MGFlZjdiM2JjZDU4ZWRkYzQxMWUzMmQw
Y2M1YmY4OGE1M2Y1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC00NDQsNiArNDQ0LDEwIEBA
CiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05FR09USUFURURfU1NMX1BST1RPQ09MX0NJUEhFUiAx
CiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2RlZmluZSBIQVZFX0NGTkVUV09S
S19TQU1FU0lURV9DT09LSUVfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDAp
CiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX01FVFJJQ1NfQVBJU19WNCAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcAppbmRleCA5MTAxNTkwMDVkN2IxMWRkMGM4YjMxNjJhM2QyNGFmMDAwMDQ2ZjFi
Li5jZDhkYTBmMzJjN2Q0NmQ1NDM5OGVjNmExYjBlYjlkNDcxN2VhYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uY3BwCkBAIC04OCw2ICs4OCwxNSBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llcwogICAgIHJl
dHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jb250YWlu
cyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0QWxsQ29va2llc1RvU2FtZVNpdGVTdHJpY3QoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KKyAgICBVTlVTRURf
UEFSQU0oZG9tYWluKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNIYWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAogewog
ICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBh
ODdiOTFjOWRlYzkxYjhlOGNlNDk1YjgxMzE1MjExNGRjNDhiZGM5Li44ODVmZjg3ZTc2ZTg4NDY4
YWE3ODViMzRhYThmMjUxMDIwOTZlZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE3Nyw2ICsxNzcs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0hh
ZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tB
bmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggMjkwZTM0MThkMTMzNGMwYjVhOTdmMmE1OTMz
YzIxZjllYzFkMTIyZS4uODc2NmZiN2I1YjMxZjg3ZWJlNmQwYmE4ZGNhOWExMDgzNWJkOWNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTYsNiArMTE2LDQx
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0QWxsQ29va2llc1RvU2FtZVNp
dGVTdHJpY3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKworI2lm
IEhBVkUoQ0ZORVRXT1JLX1NBTUVTSVRFX0NPT0tJRV9BUEkpCisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBvbGRDb29raWVzVG9EZWxldGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5ld0Nvb2tpZXNU
b0FkZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAgZm9y
IChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llU3RvcmFnZSgpLmNvb2tpZXMpIHsK
KyAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChu
c0Nvb2tpZS5kb21haW4pID09IGRvbWFpbiAmJiBuc0Nvb2tpZS5zYW1lU2l0ZVBvbGljeSAhPSBO
U0hUVFBDb29raWVTYW1lU2l0ZVN0cmljdCkgeworICAgICAgICAgICAgW29sZENvb2tpZXNUb0Rl
bGV0ZSBhZGRPYmplY3Q6bnNDb29raWVdOworICAgICAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFy
eTxOU0hUVFBDb29raWVQcm9wZXJ0eUtleSwgaWQ+ICptdXRhYmxlUHJvcGVydGllcyA9IFtbbnND
b29raWUgcHJvcGVydGllc10gbXV0YWJsZUNvcHldOworICAgICAgICAgICAgbXV0YWJsZVByb3Bl
cnRpZXNbTlNIVFRQQ29va2llU2FtZVNpdGVQb2xpY3ldID0gTlNIVFRQQ29va2llU2FtZVNpdGVT
dHJpY3Q7CisgICAgICAgICAgICBOU0hUVFBDb29raWUgKnN0cmljdENvb2tpZSA9IFtOU0hUVFBD
b29raWUgY29va2llV2l0aFByb3BlcnRpZXM6bXV0YWJsZVByb3BlcnRpZXNdOworICAgICAgICAg
ICAgW211dGFibGVQcm9wZXJ0aWVzIHJlbGVhc2VdOworICAgICAgICAgICAgW25ld0Nvb2tpZXNU
b0FkZCBhZGRPYmplY3Q6c3RyaWN0Q29va2llXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghbmV3Q29va2llc1RvQWRkLmdldCgpLmNvdW50KQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoKTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBmb3Ig
KE5TSFRUUENvb2tpZSAqb2xkQ29va2llIGluIG9sZENvb2tpZXNUb0RlbGV0ZS5nZXQoKSkKKyAg
ICAgICAgZGVsZXRlSFRUUENvb2tpZShjb29raWVTdG9yYWdlKCkuZ2V0KCksIG9sZENvb2tpZSk7
CisKKyAgICBmb3IgKE5TSFRUUENvb2tpZSAqbmV3Q29va2llIGluIG5ld0Nvb2tpZXNUb0FkZC5n
ZXQoKSkKKyAgICAgICAgW25zQ29va2llU3RvcmFnZSgpIHNldENvb2tpZTpuZXdDb29raWVdOwor
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShk
b21haW4pOworI2VuZGlmCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogewogICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDcyZjQ5ZTI0OGRlY2NmYWVlNDMyMjg2
NjNjZGYyMDU5N2JhYTcwZWMuLmUyMzUyMzQxZGI4YzE1ZDQyOWY5Y2VmZDI4OWRmNTIyNzBlNWFj
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODQ4LDExICs4NDgsMTMgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAg
ICAgICBTdHJpbmcgZG9tYWluOworICAgICAgICBTdHJpbmcgcGF0aDsKICAgICAgICAgLy8gRXhw
aXJhdGlvbiBkYXRlcyBhcmUgZXhwcmVzc2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5J
WCBlcG9jaC4KICAgICAgICAgZG91YmxlIGV4cGlyZXMgeyAwIH07CiAgICAgICAgIGJvb2wgaXNI
dHRwT25seSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaXNTZWN1cmUgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIGlzU2Vzc2lvbiB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaXNTYW1lU2l0ZU5v
bmUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGlzU2FtZVNpdGVMYXggeyBmYWxzZSB9OwogICAg
ICAgICBib29sIGlzU2FtZVNpdGVTdHJpY3QgeyBmYWxzZSB9OwogCkBAIC04NjAsMTQgKzg2Miwx
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IG5hbWUoY29va2llLm5hbWUpCiAgICAgICAgICAg
ICAsIHZhbHVlKGNvb2tpZS52YWx1ZSkKICAgICAgICAgICAgICwgZG9tYWluKGNvb2tpZS5kb21h
aW4pCisgICAgICAgICAgICAsIHBhdGgoY29va2llLnBhdGgpCiAgICAgICAgICAgICAsIGV4cGly
ZXMoY29va2llLmV4cGlyZXMudmFsdWVPcigwKSkKICAgICAgICAgICAgICwgaXNIdHRwT25seShj
b29raWUuaHR0cE9ubHkpCiAgICAgICAgICAgICAsIGlzU2VjdXJlKGNvb2tpZS5zZWN1cmUpCiAg
ICAgICAgICAgICAsIGlzU2Vzc2lvbihjb29raWUuc2Vzc2lvbikKKyAgICAgICAgICAgICwgaXNT
YW1lU2l0ZU5vbmUoY29va2llLnNhbWVTaXRlID09IENvb2tpZTo6U2FtZVNpdGVQb2xpY3k6Ok5v
bmUpCiAgICAgICAgICAgICAsIGlzU2FtZVNpdGVMYXgoY29va2llLnNhbWVTaXRlID09IENvb2tp
ZTo6U2FtZVNpdGVQb2xpY3k6OkxheCkKICAgICAgICAgICAgICwgaXNTYW1lU2l0ZVN0cmljdChj
b29raWUuc2FtZVNpdGUgPT0gQ29va2llOjpTYW1lU2l0ZVBvbGljeTo6U3RyaWN0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoIShpc1NhbWVTaXRlTGF4ICYmIGlzU2FtZVNpdGVTdHJp
Y3QpKTsKKyAgICAgICAgICAgIEFTU0VSVCghKGlzU2FtZVNpdGVMYXggJiYgaXNTYW1lU2l0ZVN0
cmljdCkgJiYgIShpc1NhbWVTaXRlTGF4ICYmIGlzU2FtZVNpdGVOb25lKSAmJiAhKGlzU2FtZVNp
dGVTdHJpY3QgJiYgaXNTYW1lU2l0ZU5vbmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIENvb2tp
ZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA1YWI2ZDRjZjM1ODk5ZGZlNzgxN2MxMzEzYTFkNWM3NzhjYmNhNjNlLi4wZTIz
MTZkNmI2YTI5NTE5NTYzM2Y4ZGNlMTM4Y2EwODJlMjBhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMwNiw2ICsxMzA2LDE2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgfQogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+c2V0QWxsQ29va2llc1RvU2FtZVNpdGVTdHJpY3QoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK30KICNlbmRpZiAvLyBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25u
ZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDY1YmI2NDZjNGIzZDhlOTczOTBhM2YzYzcwODgxNjM3ZjZiYTczYjEu
LjFjMTk4NDE0NzRiZDFkNWRiMjJjZDc1M2ZlNGE0MTQ4ZTRjMzc5YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2NSw2ICsyNjUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAK
ICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWZlMDFhN2Y5N2JhMzU2Yjlh
YzgxMjVmNGY2NTM4OTliYjNjYjAxYi4uYWFlZTQ5Mzg1NzUzMzkyZjI3ZGM3MzY5N2EyZTdkYjEw
MGZlYTk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNDIsNiArMTQyLDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFNob3VsZERvd25ncmFkZVJl
ZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9j
a2luZ01vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFzeW5j
CisgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3lu
YwogI2VuZGlmCiAKICAgICBTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBjb250cm9sbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4
IDMzNWZjMjBiMzM5MzAzZGY2YWFlZDNjOTViNDVhYjJjNDE2NzhmMTguLjk3YWZjYWI2ODU3MmYx
OTRjODk3MjlmZDI2OGM4NTg5YjcyNmEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNTgyLDYgKzU4
MiwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZQogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9u
IGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3ROYW1lKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSk7CisjZWxz
ZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApp
bmRleCA1ODAyZmVhYjJlM2FjNGYzOTg5ZjRlYTc2OGI0ZjkyY2RjOWJhODk2Li5lNWI4YmVkYWRm
ZWQ4YWMyNzc1ODFhYWU4ZGJlNDBjNjc3MTU5YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTI3LDYgKzEy
Nyw4IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBl
bmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZ0Z1bmN0aW9uKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
Rm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJs
ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmdGdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nRnVu
Y3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNG
b3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3ROYW1lLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNv
bnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlZDY0NTgy
MmY1ZjYyMGMzN2ExOWFmM2Y2YmVjMzVlY2I4M2ZlMDE3Li5hMTUzYzQ4MTY3OTBhMTUxNDA5OTYz
MWJlOTcxNDM2NjEyNWU3NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTExNzAsNiArMTE3MCwxNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlcwogCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVG
b3JUZXN0aW5nKHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3Rpbmcoc2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRl
c3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAppbmRleCA5YzA0YTg1OWJhZGUyODMzMTUwMjA5YzlmY2QwZWRhOWQz
YjQwNTQyLi42NDY1NDcwYmFlNDJjMjUzODY5OTZjZWIyZTcxYTU4NzBhNDdjNDM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERvd25n
cmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9v
bCBiYWNrZ3JvdW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggN2U2YWU4OTM3NjczNDAwMTdkZmJh
ZDRkMGM5MjliMGEwMWYwYjgzZS4uYzdhMmM1MzViZGVjOGI4NTBjM2Y2M2NhM2UyOGYzZjMyOTc0
YmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE4NTcsNiArMTg1NywxNiBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgbW9kZSwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAg
fQogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NU
b1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9v
bHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+
bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdXJsIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgIH0KK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDRmNWNhMTdj
YzU1YzcwOTJmZjg3ZTFiZDY5YzE2N2QyNjE2OWVkZjkuLmRhMDI0ZTU0ZjlhYWZlYWE0OWM1ODIz
YmQxZjRiOGNkYWQxM2IyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rp
bmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
Zyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OyB9CiAgICAgdm9pZCB1c2VFeHBsaWNpdElU
UFN0YXRlKCkgeyBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0ID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA2MTQ3MzRhMDMwNWZm
NWYyMjhmOWI1M2JjZDk2ZjliN2ViZDVjYzUuLmI1YmNkZmU1MWQwNDg5NDdhMzI3OTE5ZDc0OTIy
MGRiOWQ1NTY0Y2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMy0yMyAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGNhcGFiaWxpdHkgdG8gY2hhbmdlIGFs
bCBvZiBhIHdlYnNpdGUncyBjb29raWVzIHRvIFNhbWVTaXRlPVN0cmljdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzY5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82MDcxMDY5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVzZSBjaGFuZ2VzIGFkZCBUZXN0UnVubmVyIGZ1bmN0aW9uIHN0YXRp
c3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcygpLgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENv
b2tpZXMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDIwLTAzLTIzICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjaGVja3MgZm9yIGFwcC1ib3Vu
ZCBuYXZpZ2F0aW9ucyB3aGVuIGV2YWx1YXRpbmcgdXNlciBzdHlsZSBzaGVldHMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCmluZGV4IDFlOTdjNjZiNzhmZTUxZTc0YTliNGZjNWYzN2IzYWZhM2Y0
ZTU3ZTguLmZhNjdmMzdhOGRhYjk4YjMwNWYwMDVjZDEwYzExZjUwMzBhYjlkMTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzQ1LDYgKzM0NSw3IEBAIGludGVyZmFjZSBUZXN0UnVu
bmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29s
ZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBv
cHRpb25hbCBib29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVh
biB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxsYmFjayk7CiAg
ICAgdm9pZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhvYmplY3QgY2FsbGJhY2spOwogCiAgICAg
Ly8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA1MmYx
Njg5MGQ5YWUwZTA1ZDBlYmI2NTUwNmNjZTM3MTFkOGFjOGY3Li4xNjY3NTgwMjEwMTJmMGU0OGFi
ZTQzNjgzMTE0NzY1ODViZTY3MDc4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzU3LDYgKzM1Nywx
MSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlk
U2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMiKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFjaygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUi
KSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGUwYzdl
YmY1MTllYWU5M2EwZTg3OTMxMWI0N2ZiZmYzNTNhZjAwYTcuLjk1YWU2NDI0OGU0ZmU5NDUyOWQ2
ZDMwMjczZWY2ZjU5OGFiMzU5YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzU0LDYgKzc1NCw3IEBAIGVudW0g
ewogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckNhbGxiYWNrSUQs
CiAgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFj
a0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZUNhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVz
Q2FsbGJhY2tJRCwKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCiAgICAg
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCkBAIC0yMjg2LDYgKzIyODcsMjAgQEAgdm9pZCBUZXN0
UnVubmVyOjpzdGF0aXN0aWNzQ2FsbENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxi
YWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRDbGVhclRocm91
Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoSlNTdHJpbmdSZWYgaG9zdE5hbWUs
IEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2Fs
bGJhY2soU3RhdGlzdGljc0RpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCwg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llcyIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJD
YWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lE
KTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNh
bGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29t
cGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1ZjI0NzVjYzAxNTZlMTAzZmQ0NjQzNzkzMjY4Mzc1
YTJjZDVhODRjLi43MjhkMzZlMmE5ODJhMThmYWNiNTY5OThkZDZjMDRiZDVjMDI3M2M0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlk
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2soKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJp
Y3RDb29raWVzQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGlj
c0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKICAgICB2b2lkIGxvYWRl
ZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAzY2JjZDYyYWMxZGZjZDM3ZWQxNTUyYTVm
N2Y1MTYwZWI1OGFlMjlhLi5iYTk4MjlmYmFmODY5NzE0YTRhMTE3NDQ4ZWZkNTQ1NmYyMmUwYzU4
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzcwNCw2
ICszNzA0LDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlKQogICAgIG1fY3VycmVudEludm9jYXRp
b24tPmRpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKCk7CiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0
cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRl
eHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyh3ZWJzaXRlRGF0YVN0
b3JlKCksIGhvc3ROYW1lLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENh
bGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKTsKK30KKwog
dm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQog
ewogICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA4ZWI5Njc0MWE2MTMw
ZWY2NWViNTI2MzI5Y2E1MTU2MzRhZTRkMmNiLi44YmNhNjQ1NWQwNzE5Zjc3NmNjYmQwYzVlMThm
NWNlODkxMDQ3NTliIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0yNjIsNiArMjYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERv
d25ncmFkZVJlZmVycmVyKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlKGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1Rv
U2FtZVNpdGVTdHJpY3RDb29raWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IGU0NzQ5ZDJhNjkxMTljZTljYWNhNTUxOTIwZmM1YmU0YjZjYzg0MzUuLmNiZDE0
NjliOTI4OGVjNjRlZDZjNmE1N2MxM2ZiNjdiZjVmNzBiOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC05NTAsNiArOTUwLDEzIEBAIHZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NTZXRUb1NhbWVTaXRl
U3RyaWN0Q29va2llcyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1l
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2ll
cyhob3N0TmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlIikpIHsKICAgICAgICAgaWYgKG1fc2hvdWxkRHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MpCiAgICAgICAgICAgICBtX3NhdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpAQCAt
MTkxNiw2ICsxOTIzLDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzIikpOworICAgIFdLUGFnZVBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHZvaWQg
VGVzdEludm9jYXRpb246OmRpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0YXRlKCkKIHsK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0
ZW50U3RhdGUiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXgg
ZGMxZjk1MzA2YmMxNTI3MTFhYWYyNGVhMzQwMDQ0YTQwMDM0ODk5ZS4uZTg0ZjVlYjc0OWEyNDAy
YmI5ODVhMDE2MzY0YzgxYTY2MjlkOWJiNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRTaG91
bGREb3duZ3JhZGVSZWZlcnJlcigpOwogICAgIHZvaWQgZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llcygpOwogICAgIHZvaWQgZGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUoKTsKKyAgICB2b2lkIGRpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiAgICAg
dm9pZCBkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpOwogICAgIHZvaWQgZGlk
U2V0QmxvY2tDb29raWVzRm9ySG9zdCgpOwogICAgIHZvaWQgZGlkU2V0U3RhdGlzdGljc0RlYnVn
TW9kZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDhhODMwNzI3Mzc4YzA4NzAxZDRiMWE0Y2U1MDZmYTY2NTU0ZDU4OWEu
LjkzM2NmOTYyN2JlZWUxZjU1NzFiN2Q3MTcwZTg1MmVhMjhhNmRhNGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAyMC0wMy0yMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgdGhlIGNhcGFiaWxpdHkgdG8gY2hhbmdlIGFsbCBvZiBhIHdlYnNpdGUn
cyBjb29raWVzIHRvIFNhbWVTaXRlPVN0cmljdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDcx
MDY5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvc2V0LWFsbC1raW5k
cy1vZi1jb29raWVzLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTWFya2VkIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1z
aXRlLXN0cmljdC5odG1sCisgICAgICAgICAgICBhcyBQYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE1hcmtlZCBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJp
Y3QuaHRtbAorICAgICAgICAgICAgYXMgUGFzcyBmb3IgQ2F0YWxpbmErLgorICAgICAgICAqIHBs
YXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgU2tpcHBlZCBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1z
dHJpY3QuaHRtbAorICAgICAgICAgICAgc2luY2UgaXQncyBvbmx5IGF2YWlsYWJsZSBvbiBtYWNP
UyBDYXRhbGluYSBhbmQgdXAgYW5kIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdAorICAgICAgICAg
ICAgaW1wbGVtZW50ZWQgb24gbm9uLUNvY29hIHBsYXRmb3Jtcy4KKwogMjAyMC0wMy0yMyAgSmFj
b2IgVXBob2ZmICA8amFjb2JfdXBob2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhpbmcgbWVy
Z2UgY29uZmxpY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvc2V0LWFsbC1raW5kcy1vZi1jb29raWVzLnBocCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvc2V0
LWFsbC1raW5kcy1vZi1jb29raWVzLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2IyMzg3YTgzYjMyOGU2MjVi
OTI2NjBiMWFjMTZlNGM4ZTFiODhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9zZXQtYWxsLWtpbmRzLW9m
LWNvb2tpZXMucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhwCitoZWFkZXIoIkhUVFAvMS4xIDIw
MCBPSyIpOworCitzZXRjb29raWUoInBlcnNpc3RlbnRDb29raWUiLCAiMSIsIHRpbWUoKSArIDMw
MCwgIi8iKTsKK3NldGNvb2tpZSgicGVyc2lzdGVudFNlY3VyZUNvb2tpZSIsICIxIiwgdGltZSgp
ICsgMzAwLCAiLyIsICIiLCBUUlVFKTsKK3NldGNvb2tpZSgicGVyc2lzdGVudEh0dHBPbmx5Q29v
a2llIiwgIjEiLCB0aW1lKCkgKyAzMDAsICIvIiwgIiIsIEZBTFNFLCBUUlVFKTsKK3NldGNvb2tp
ZSgicGVyc2lzdGVudFNhbWVTaXRlTGF4Q29va2llIiwgIjEiLCBbImV4cGlyZXMiID0+IHRpbWUo
KSArIDMwMCwgInBhdGgiID0+ICIvIiwgInNhbWVzaXRlIiA9PiAiTGF4Il0pOworc2V0Y29va2ll
KCJwZXJzaXN0ZW50U2FtZVNpdGVTdHJpY3RDb29raWUiLCAiMSIsIFsiZXhwaXJlcyIgPT4gdGlt
ZSgpICsgMzAwLCAicGF0aCIgPT4gIi8iLCAic2FtZXNpdGUiID0+ICJTdHJpY3QiXSk7CisKK3Nl
dGNvb2tpZSgic2Vzc2lvbkNvb2tpZSIsICIxIiwgIiIsICIvIik7CitzZXRjb29raWUoInNlc3Np
b25TZWN1cmVDb29raWUiLCAiMSIsICIiLCAiLyIsICIiLCBUUlVFKTsKK3NldGNvb2tpZSgic2Vz
c2lvbkh0dHBPbmx5Q29va2llIiwgIjEiLCAiIiwgIi8iLCAiIiwgRkFMU0UsIFRSVUUpOworc2V0
Y29va2llKCJzZXNzaW9uU2FtZVNpdGVMYXhDb29raWUiLCAiMSIsIFsicGF0aCIgPT4gIi8iLCAi
c2FtZXNpdGUiID0+ICJMYXgiXSk7CitzZXRjb29raWUoInNlc3Npb25TYW1lU2l0ZVN0cmljdENv
b2tpZSIsICIxIiwgWyJwYXRoIiA9PiAiLyIsICJzYW1lc2l0ZSIgPT4gIlN0cmljdCJdKTsKKz8+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2ll
cy10by1zYW1lLXNpdGUtc3RyaWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWJjMWNmNGVh
ZTVhNjc0YzA4MGFjNDVjOWE2ZmVmMWZlOTlkNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10
by1zYW1lLXNpdGUtc3RyaWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitUZXN0cyBz
ZXR0aW5nIGFsbCBvZiBhIHNpdGUncyBjb29raWVzIHRvIFNhbWVTaXRlPXN0cmljdC4KKworJ2Ns
aWVudFNpZGVDb29raWUnIDEgQmVmb3JlIENoYW5nZSAtLSBkb21haW46ICcxMjcuMC4wLjEnIGlz
U2Vzc2lvbjogJ3RydWUnCisnY2xpZW50U2lkZUNvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRv
bWFpbjogJzEyNy4wLjAuMScgaXNTZXNzaW9uOiAndHJ1ZScgaXNTYW1lU2l0ZVN0cmljdDogJ3Ry
dWUnCisKKydwZXJzaXN0ZW50Q29va2llJyAxIEJlZm9yZSBDaGFuZ2UgLS0gZG9tYWluOiAnMTI3
LjAuMC4xJyBleHBpcnkgc2V0CisncGVyc2lzdGVudENvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0t
IGRvbWFpbjogJzEyNy4wLjAuMScgZXhwaXJ5IHNldCBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScK
KworJ3BlcnNpc3RlbnRIdHRwT25seUNvb2tpZScgMSBCZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjog
JzEyNy4wLjAuMScgZXhwaXJ5IHNldCBpc0h0dHBPbmx5OiAndHJ1ZScKKydwZXJzaXN0ZW50SHR0
cE9ubHlDb29raWUnIDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGV4cGly
eSBzZXQgaXNIdHRwT25seTogJ3RydWUnIGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisncGVy
c2lzdGVudFNhbWVTaXRlTGF4Q29va2llJyAxIEJlZm9yZSBDaGFuZ2UgLS0gZG9tYWluOiAnMTI3
LjAuMC4xJyBleHBpcnkgc2V0IGlzU2FtZVNpdGVMYXg6ICd0cnVlJworJ3BlcnNpc3RlbnRTYW1l
U2l0ZUxheENvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEyNy4wLjAuMScgZXhw
aXJ5IHNldCBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScKKworJ3BlcnNpc3RlbnRTYW1lU2l0ZVN0
cmljdENvb2tpZScgMSBCZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScgZXhwaXJ5
IHNldCBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScKKydwZXJzaXN0ZW50U2FtZVNpdGVTdHJpY3RD
b29raWUnIDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQg
aXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisKKydzZXNzaW9uQ29va2llJyAxIEJlZm9yZSBDaGFu
Z2UgLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc1Nlc3Npb246ICd0cnVlJworJ3Nlc3Npb25Db29r
aWUnIDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGlzU2Vzc2lvbjogJ3Ry
dWUnIGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisnc2Vzc2lvbkh0dHBPbmx5Q29va2llJyAx
IEJlZm9yZSBDaGFuZ2UgLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc0h0dHBPbmx5OiAndHJ1ZScg
aXNTZXNzaW9uOiAndHJ1ZScKKydzZXNzaW9uSHR0cE9ubHlDb29raWUnIDIgQWZ0ZXIgQ2hhbmdl
IC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGlzSHR0cE9ubHk6ICd0cnVlJyBpc1Nlc3Npb246ICd0
cnVlJyBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScKKworJ3Nlc3Npb25TYW1lU2l0ZUxheENvb2tp
ZScgMSBCZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScgaXNTZXNzaW9uOiAndHJ1
ZScgaXNTYW1lU2l0ZUxheDogJ3RydWUnCisnc2Vzc2lvblNhbWVTaXRlTGF4Q29va2llJyAyIEFm
dGVyIENoYW5nZSAtLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc1Nlc3Npb246ICd0cnVlJyBpc1Nh
bWVTaXRlU3RyaWN0OiAndHJ1ZScKKworJ3Nlc3Npb25TYW1lU2l0ZVN0cmljdENvb2tpZScgMSBC
ZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjogJzEyNy4wLjAuMScgaXNTZXNzaW9uOiAndHJ1ZScgaXNT
YW1lU2l0ZVN0cmljdDogJ3RydWUnCisnc2Vzc2lvblNhbWVTaXRlU3RyaWN0Q29va2llJyAyIEFm
dGVyIENoYW5nZSAtLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc1Nlc3Npb246ICd0cnVlJyBpc1Nh
bWVTaXRlU3RyaWN0OiAndHJ1ZScKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRl
LXN0cmljdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTc0OTg1MzNmZjk2NGM0ZThhZWRiZWU0MDcxOTZiNzRkNDk4MzFhYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxs
LWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jl
c291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0ic2V0VGltZW91dCgncnVuKCknLCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVz
dHMgc2V0dGluZyBhbGwgb2YgYSBzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1zdHJpY3QuPC9k
aXY+Cis8YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRv
TG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0
dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFk
ZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50
LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdHJpbmdpZnlDb29raWVQcm9wZXJ0aWVzKGNvb2tp
ZSwgaXNCZWZvcmUpIHsKKyAgICAgICAgbGV0IGNvb2tpZVN0cmluZyA9ICInIiArIGNvb2tpZS5u
YW1lICsgKGlzQmVmb3JlID8gIicgMSBCZWZvcmUgQ2hhbmdlIC0tIiA6ICInIDIgQWZ0ZXIgQ2hh
bmdlIC0tLSIpOworICAgICAgICBpZiAoY29va2llLmRvbWFpbikKKyAgICAgICAgICAgIGNvb2tp
ZVN0cmluZyArPSAiIGRvbWFpbjogJyIgKyBjb29raWUuZG9tYWluICsgIiciOworICAgICAgICBp
ZiAoY29va2llLnBhdGgpCisgICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBwYXRoOiAnIiAr
IGNvb2tpZS5wYXRoICsgIiciOworICAgICAgICBpZiAoY29va2llLmV4cGlyZXMpCisgICAgICAg
ICAgICBjb29raWVTdHJpbmcgKz0gIiBleHBpcnkgc2V0IjsKKyAgICAgICAgaWYgKGNvb2tpZS5p
c0h0dHBPbmx5KQorICAgICAgICAgICAgY29va2llU3RyaW5nICs9ICIgaXNIdHRwT25seTogJyIg
KyBjb29raWUuaXNIdHRwT25seSArICInIjsKKyAgICAgICAgaWYgKGNvb2tpZS5pc1NlY3VyZSkK
KyAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSAiIGlzU2VjdXJlOiAnIiArIGNvb2tpZS5pc1Nl
Y3VyZSArICInIjsKKyAgICAgICAgaWYgKGNvb2tpZS5pc1Nlc3Npb24pCisgICAgICAgICAgICBj
b29raWVTdHJpbmcgKz0gIiBpc1Nlc3Npb246ICciICsgY29va2llLmlzU2Vzc2lvbiArICInIjsK
KyAgICAgICAgaWYgKGNvb2tpZS5pc1NhbWVTaXRlTm9uZSkKKyAgICAgICAgICAgIGNvb2tpZVN0
cmluZyArPSAiIGlzU2FtZVNpdGVOb25lOiAnIiArIGNvb2tpZS5pc1NhbWVTaXRlTm9uZSArICIn
IjsKKyAgICAgICAgaWYgKGNvb2tpZS5pc1NhbWVTaXRlTGF4KQorICAgICAgICAgICAgY29va2ll
U3RyaW5nICs9ICIgaXNTYW1lU2l0ZUxheDogJyIgKyBjb29raWUuaXNTYW1lU2l0ZUxheCArICIn
IjsKKyAgICAgICAgaWYgKGNvb2tpZS5pc1NhbWVTaXRlU3RyaWN0KQorICAgICAgICAgICAgY29v
a2llU3RyaW5nICs9ICIgaXNTYW1lU2l0ZVN0cmljdDogJyIgKyBjb29raWUuaXNTYW1lU2l0ZVN0
cmljdCArICInIjsKKyAgICAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKKyAgICB9CisKKyAgICBs
ZXQgY29va2llc0JlZm9yZUNoYW5nZTsKKyAgICBsZXQgY29va2llc0FmdGVyQ2hhbmdlOworCisg
ICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKCkgeworICAgICAgICBpZiAoIWNvb2tpZXNCZWZvcmVD
aGFuZ2UubGVuZ3RoKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6IE5vIGNvb2tpZXMg
Zm91bmQgYmVmb3JlIGNoYW5nZS4iKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjb29r
aWVzQmVmb3JlQ2hhbmdlLmxlbmd0aCB8fCAhY29va2llc0FmdGVyQ2hhbmdlLmxlbmd0aCkgewor
ICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiBObyBjb29raWVzIGZvdW5kIGFmdGVyIGNoYW5n
ZS4iKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvb2tpZXNCZWZvcmVDaGFuZ2UubGVu
Z3RoICE9PSBjb29raWVzQWZ0ZXJDaGFuZ2UubGVuZ3RoKSB7CisgICAgICAgICAgICBhZGRPdXRw
dXQoIkZBSUw6IE5vdCB0aGUgc2FtZSBhbW91bnQgb2YgY29va2llcyBiZWZvcmUgYW5kIGFmdGVy
IGNoYW5nZS4iKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3Nl
ZE1lc3NhZ2VzID0gW107CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29va2llc0JlZm9y
ZUNoYW5nZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaChzdHJpbmdpZnlDb29raWVQcm9wZXJ0aWVzKGNvb2tpZXNCZWZvcmVDaGFuZ2Vb
aV0sIHRydWUpKTsKKyAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
c3RyaW5naWZ5Q29va2llUHJvcGVydGllcyhjb29raWVzQWZ0ZXJDaGFuZ2VbaV0sIGZhbHNlKSk7
CisgICAgICAgIH0KKworICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5z
b3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBs
ZXQgcm93ID0gMTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1l
c3NhZ2UpOworICAgICAgICAgICAgaWYgKHJvdyAlIDIgPT09IDApCisgICAgICAgICAgICAgICAg
YWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICsrcm93OworICAgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcnVuKCkgeworICAgICAgICBmZXRjaCgicmVzb3VyY2VzL3Nl
dC1hbGwta2luZHMtb2YtY29va2llcy5waHA/ZHVtbXk9IiArIE1hdGgucmFuZG9tKCkpCisgICAg
ICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0g
ImNsaWVudFNpZGVDb29raWU9MSI7CisgICAgICAgICAgICAgICAgY29va2llc0JlZm9yZUNoYW5n
ZSA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgY29va2llc0FmdGVyQ2hhbmdl
ID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29r
aWVzKCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSkKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYTMzYmI1ZmM2ZjQ3ODAxZWZhNmE0M2EzNWJjZjUzMmZmZDQ3ZjNmOC4uYjNmZGVkMTlmNjQ5
NGQ4OGYwZTI4YmVhNjNjODNiOGE1MTVjM2VkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3MzgsNiArMjczOCwxMCBAQCBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0
bWwgWyBQYQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9y
eS1hbmQtcGVyc2lzdGVudC1zdG9yZS1vbmUtaG91ci5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGly
ZC1wYXJ0eS1yZWRpcmVjdHMuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVz
dHMuaHRtbCBbIFBhc3MgXQorCisjIFRoZSBTYW1lU2l0ZSBjb29raWUgQVBJIGlzIG9ubHkgYXZh
aWxhYmxlIGluIG1hY09TIENhdGFsaW5hIGFuZCBhYm92ZSwgYW5kIHRodXMgc2tpcHBlZCBmb3Ig
V0syIGluIGdlbmVyYWwuCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFs
bC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFBhc3MgXQorCiBodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvZGVueS1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbCBbIFBh
c3MgXQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXIt
b3BlbmVyLWlmLWF1dG8tZGlzbWlzcy5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5o
dG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggNjk4YjNkNWNlMWVlMDRhYzk0M2E5OGRjN2U2YTNiZDU3ZjM3MmVkMS4uOTE1
OTc4MDFjZTZmMDY3Mjk2MjQ5NDRkYTRjMDhmNWRhZjk2ODdhZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzM5LDYgKzczOSw5IEBAIHdl
YmtpdC5vcmcvYi8xODU5OTQgZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL3NoYWRvdy1w
b3N0c2NyaXB0LWZhbWlseS5odG1sCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHkt
cmVxdWVzdHMuaHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNl
Lmh0bWwgWyBQYXNzIF0KIAorIyBUaGUgU2FtZVNpdGUgY29va2llIEFQSSBpcyBvbmx5IGF2YWls
YWJsZSBpbiBtYWNPUyBDYXRhbGluYSBhbmQgYWJvdmUuCitbIENhdGFsaW5hKyBdIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0
cmljdC5odG1sIFsgUGFzcyBdCisKICMgU2tpcHBlZCBpbiBnZW5lcmFsIGV4cGVjdGF0aW9ucyBz
aW5jZSB0aGV5IG9ubHkgd29yayBvbiBpT1MgYW5kIE1hYywgV0syLgogbWVkaWEvZGVhY3RpdmF0
ZS1hdWRpby1zZXNzaW9uLmh0bWwgWyBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZTMyN2Q0MzM2NDE3MDQ2MTJjZjI0MDdkM2QyMmNlNzIy
ZTc3NTA4Li5kY2YyMDJjODlhNzQ3ZGY1Nzg3MTZiMDdkOTQwOTQ4MmVhMWVmMDBmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMyLDYgKzczMiwxMCBA
QCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MDcwMyBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJ1bmUtc3RhdGlzdGljcy5odG1sIFsgUGFzcyBd
CiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgWyBQYXNzIF0KKworIyBUaGUgU2Ft
ZVNpdGUgY29va2llIEFQSSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBDYXRhbGluYSBhbmQg
YWJvdmUuCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVz
LXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFNraXAgXQorCiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC9jb25uZWN0aW9uLXJlZnVzYWwtaW4tZnJhbWUtcmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzLmh0
bWwgWyBQYXNzIF0KICMgVGhlc2UgYXJlIG9ubHkgc3VwcG9ydGVkIGJlaGluZCBhIGNvbXBpbGUg
dGltZSBmbGFnIGluIG1hY09TIEhpZ2ggU2llcnJhICsgaU9TIDExLCBhbmQgYWJvdmUuCiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394310</attachid>
            <date>2020-03-23 15:18:20 -0700</date>
            <delta_ts>2020-03-23 16:00:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209369-20200323151819.patch</filename>
            <type>text/plain</type>
            <size>43516</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFkNGMyZjk1ODQ5MmEyODAzMDc3MjYx
NTY4YTZiODFiNWNkYjM4NDcuLmQ4MjI0NDg5NzBmODA3OWUyYzc3OGU3NmY5YWM1MTRkYzg3NWJi
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNoYW5nZSBh
bGwgb2YgYSB3ZWJzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1TdHJpY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjA3MTA2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbiBhbmQgRGF2aWQgS2lsemVyLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgor
ICAgICAgICAgICAgQWRkcyBIQVZFX0NGTkVUV09SS19TQU1FU0lURV9DT09LSUVfQVBJIGZvciBt
YWNPUyBDYXRhbGluYSBhbmQgdXAsCisgICAgICAgICAgICBpT1MgMTMgYW5kIHVwLCBDYXRhbHlz
dCwgd2F0Y2hPUywgYW5kIEFwcGxlIFRWLgorCiAyMDIwLTAzLTIzICB5b3Vlbm4gZmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgYmxhbmtVUkwgdG8gYWJvdXRCbGFu
a1VSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDc5M2Q0MGZlYThiOTA4N2QyZmQyZDJlYzZkMDY3MDkyMGQzM2Zm
MDEuLmFiNmM1M2ZmNGMyNTk0M2FhOWU4M2E4ZWRlNzMzNDE1MzliNWQyMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAyMC0wMy0yMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGNhcGFiaWxpdHkgdG8gY2hhbmdlIGFsbCBvZiBh
IHdlYnNpdGUncyBjb29raWVzIHRvIFNhbWVTaXRlPVN0cmljdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzY5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MDcxMDY5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuIGFu
ZCBEYXZpZCBLaWx6ZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0QWxsQ29va2llc1RvU2FtZVNp
dGVTdHJpY3QpOgorICAgICAgICAgICAgU3R1YiBmdW5jdGlvbiBmb3Igbm9uLUNvY29hIHBsYXRm
b3Jtcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFs
bENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAgICAgQWRkZWQgY29kZSB0byBleHBvc2UgU2FtZVNpdGU9Tm9uZSBhbmQgcGF0
aCBwcm9wZXJ0aWVzIG9mIGNvb2tpZXMuCisgICAgICAgICAgICBIb3dldmVyLCB0aGV5IGRvbid0
IHNlZW0gdG8gY2Fycnkgb3ZlciBzbyBJJ2xsIGhhdmUgdG8gcmV2aXNpdCB0aGUKKyAgICAgICAg
ICAgIGludGVybmFsIHdvcmtpbmdzLgorCiAyMDIwLTAzLTIzICBEZWFuIEphY2tzb24gIDxkaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIFNraXAgdmVydGV4QXR0cmliMCBzaW11bGF0
aW9uIHdoZW4gdXNpbmcgQU5HTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzc0OWJmM2Q1MThhMzBjZDQyNzhjODUy
NDRhOGQ5ZjhiNDBjM2U4MC4uOWYwZmRiOTAxYzIyZDA2MDcyYzBhOWYxNWI3YjMyOGYyYzliZjEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wMy0yMyAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGNhcGFiaWxpdHkgdG8gY2hh
bmdlIGFsbCBvZiBhIHdlYnNpdGUncyBjb29raWVzIHRvIFNhbWVTaXRlPVN0cmljdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MDcxMDY5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuIGFuZCBEYXZpZCBLaWx6ZXIuCisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhZGQg
dGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gZnVuY3Rpb24KKyAgICAgICAgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBbGxDb29raWVzVG9TYW1lU2l0ZVN0cmljdCgpIGluIHRo
ZQorICAgICAgICBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRU
b1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wMy0yMyAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBpbnNlcnRpbmcgdGV4
dCBvciBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgYnkgc2ltdWxhdGluZyBrZXlib2FyZCBpbnB1dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCBiMTc1MzliZTkxOTMxMmFiODNlOTM5OTM1Y2VmZDIyZDE5
M2IyOTkzLi43ZmE2MDI3OWVmNzA1NmQ2NjA2OTkwMGE4Y2U3OGRmYWJhMWQxZDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaApAQCAtNDQ0LDYgKzQ0NCwxMCBAQAogI2RlZmluZSBIQVZFX0NGTkVUV09S
S19ORUdPVElBVEVEX1NTTF9QUk9UT0NPTF9DSVBIRVIgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwg
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEzMDAwMCkgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKFdBVENIT1Mp
IHx8IFBMQVRGT1JNKEFQUExFVFYpCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX1NBTUVTSVRFX0NP
T0tJRV9BUEkgMQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKICNkZWZpbmUgSEFW
RV9DRk5FVFdPUktfTUVUUklDU19BUElTX1Y0IDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmlu
ZGV4IDkxMDE1OTAwNWQ3YjExZGQwYzhiMzE2MmEzZDI0YWYwMDAwNDZmMWIuLmM1ODY2OWYxY2Yy
YzliMWM0YjZlNmU4YzY0NTlkY2JhOTFhZjU4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTg4
LDYgKzg4LDE0IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzCiAgICAgcmV0dXJuIG1fcmVnaXN0
cmFibGVEb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRBbGxDb29raWVzVG9TYW1lU2l0ZVN0cmljdChjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKyNl
bmRpZgorCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzSGFkVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikg
Y29uc3QKIHsKICAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKaW5kZXggYTg3YjkxYzlkZWM5MWI4ZThjZTQ5NWI4MTMxNTIxMTRkYzQ4YmRjOS4uODg1ZmY4
N2U3NmU4ODQ2OGFhNzg1YjM0YWE4ZjI1MTAyMDk2ZWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0x
NzcsNiArMTc3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVz
b3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29r
aWVzRm9yKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRBbGxDb29raWVzVG9TYW1lU2l0ZVN0cmljdChjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5MGUzNDE4ZDEzMzRjMGI1
YTk3ZjJhNTkzM2MyMWY5ZWMxZDEyMmUuLjcyZWU4NDk5YzVhZGE1ZTFmMDlkYTUxMzM1Y2UyZDdl
YjM3NmYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMTE2
LDYgKzExNiwzNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7CisKKyNpZiBIQVZFKENGTkVUV09SS19TQU1FU0lURV9DT09LSUVfQVBJKQorICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4+IG9sZENvb2tpZXNUb0RlbGV0ZSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4+IG5ld0Nvb2tpZXNUb0FkZCA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAgZm9yIChOU0hUVFBDb29raWUg
Km5zQ29va2llIGluIG5zQ29va2llU3RvcmFnZSgpLmNvb2tpZXMpIHsKKyAgICAgICAgaWYgKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChuc0Nvb2tpZS5kb21haW4p
ID09IGRvbWFpbiAmJiBuc0Nvb2tpZS5zYW1lU2l0ZVBvbGljeSAhPSBOU0hUVFBDb29raWVTYW1l
U2l0ZVN0cmljdCkgeworICAgICAgICAgICAgW29sZENvb2tpZXNUb0RlbGV0ZSBhZGRPYmplY3Q6
bnNDb29raWVdOworICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk8TlNI
VFRQQ29va2llUHJvcGVydHlLZXksIGlkPj4gbXV0YWJsZVByb3BlcnRpZXMgPSBhZG9wdE5TKFtb
bnNDb29raWUgcHJvcGVydGllc10gbXV0YWJsZUNvcHldKTsKKyAgICAgICAgICAgIG11dGFibGVQ
cm9wZXJ0aWVzLmdldCgpW05TSFRUUENvb2tpZVNhbWVTaXRlUG9saWN5XSA9IE5TSFRUUENvb2tp
ZVNhbWVTaXRlU3RyaWN0OworICAgICAgICAgICAgTlNIVFRQQ29va2llICpzdHJpY3RDb29raWUg
PSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOm11dGFibGVQcm9wZXJ0aWVzLmdl
dCgpXTsKKyAgICAgICAgICAgIFtuZXdDb29raWVzVG9BZGQgYWRkT2JqZWN0OnN0cmljdENvb2tp
ZV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisgICAgZm9yIChOU0hUVFBDb29raWUgKm9sZENvb2tpZSBpbiBvbGRDb29raWVzVG9EZWxldGUu
Z2V0KCkpCisgICAgICAgIGRlbGV0ZUhUVFBDb29raWUoY29va2llU3RvcmFnZSgpLmdldCgpLCBv
bGRDb29raWUpOworCisgICAgZm9yIChOU0hUVFBDb29raWUgKm5ld0Nvb2tpZSBpbiBuZXdDb29r
aWVzVG9BZGQuZ2V0KCkpCisgICAgICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6bmV3
Q29va2llXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZG9tYWluKTsKKyNlbmRpZgorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmbHVzaENvb2tpZVN0b3JlKCkKIHsKICAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3MmY0OWUyNDhkZWNj
ZmFlZTQzMjI4NjYzY2RmMjA1OTdiYWE3MGVjLi5lMjM1MjM0MWRiOGMxNWQ0MjlmOWNlZmQyODlk
ZjUyMjcwZTVhYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTg0OCwxMSAr
ODQ4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG5hbWU7CiAgICAgICAgIFN0cmluZyB2
YWx1ZTsKICAgICAgICAgU3RyaW5nIGRvbWFpbjsKKyAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAg
ICAgIC8vIEV4cGlyYXRpb24gZGF0ZXMgYXJlIGV4cHJlc3NlZCBhcyBtaWxsaXNlY29uZHMgc2lu
Y2UgdGhlIFVOSVggZXBvY2guCiAgICAgICAgIGRvdWJsZSBleHBpcmVzIHsgMCB9OwogICAgICAg
ICBib29sIGlzSHR0cE9ubHkgeyBmYWxzZSB9OwogICAgICAgICBib29sIGlzU2VjdXJlIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBpc1Nlc3Npb24geyBmYWxzZSB9OworICAgICAgICBib29sIGlz
U2FtZVNpdGVOb25lIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpc1NhbWVTaXRlTGF4IHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBpc1NhbWVTaXRlU3RyaWN0IHsgZmFsc2UgfTsKIApAQCAtODYw
LDE0ICs4NjIsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgOiBuYW1lKGNvb2tpZS5uYW1lKQog
ICAgICAgICAgICAgLCB2YWx1ZShjb29raWUudmFsdWUpCiAgICAgICAgICAgICAsIGRvbWFpbihj
b29raWUuZG9tYWluKQorICAgICAgICAgICAgLCBwYXRoKGNvb2tpZS5wYXRoKQogICAgICAgICAg
ICAgLCBleHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVlT3IoMCkpCiAgICAgICAgICAgICAsIGlz
SHR0cE9ubHkoY29va2llLmh0dHBPbmx5KQogICAgICAgICAgICAgLCBpc1NlY3VyZShjb29raWUu
c2VjdXJlKQogICAgICAgICAgICAgLCBpc1Nlc3Npb24oY29va2llLnNlc3Npb24pCisgICAgICAg
ICAgICAsIGlzU2FtZVNpdGVOb25lKGNvb2tpZS5zYW1lU2l0ZSA9PSBDb29raWU6OlNhbWVTaXRl
UG9saWN5OjpOb25lKQogICAgICAgICAgICAgLCBpc1NhbWVTaXRlTGF4KGNvb2tpZS5zYW1lU2l0
ZSA9PSBDb29raWU6OlNhbWVTaXRlUG9saWN5OjpMYXgpCiAgICAgICAgICAgICAsIGlzU2FtZVNp
dGVTdHJpY3QoY29va2llLnNhbWVTaXRlID09IENvb2tpZTo6U2FtZVNpdGVQb2xpY3k6OlN0cmlj
dCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEoaXNTYW1lU2l0ZUxheCAmJiBpc1Nh
bWVTaXRlU3RyaWN0KSk7CisgICAgICAgICAgICBBU1NFUlQoIShpc1NhbWVTaXRlTGF4ICYmIGlz
U2FtZVNpdGVTdHJpY3QpICYmICEoaXNTYW1lU2l0ZUxheCAmJiBpc1NhbWVTaXRlTm9uZSkgJiYg
IShpc1NhbWVTaXRlU3RyaWN0ICYmIGlzU2FtZVNpdGVOb25lKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBDb29raWVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggNWFiNmQ0Y2YzNTg5OWRmZTc4MTdjMTMxM2ExZDVjNzc4Y2Jj
YTYzZS4uMGUyMzE2ZDZiNmEyOTUxOTU2MzNmOGRjZTEzOGNhMDgyZTIwYWYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzMDYs
NiArMTMwNiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0KIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9TYW1lU2l0
ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0KGRvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9Cit9CiAjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2NWJiNjQ2YzRiM2Q4ZTk3MzkwYTNmM2M3MDg4MTYz
N2Y2YmE3M2IxLi4xYzE5ODQxNDc0YmQxZDVkYjIyY2Q3NTNmZTRhNDE0OGU0YzM3OWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNjUs
NiArMjY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJG
b3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
ZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwg
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRU
b1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICNlbmRpZgogCiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFmZTAxYTdm
OTdiYTM1NmI5YWM4MTI1ZjRmNjUzODk5YmIzY2IwMWIuLmFhZWU0OTM4NTc1MzM5MmYyN2RjNzM2
OTdhMmU3ZGIxMDBmZWE5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTQyLDYgKzE0Miw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkKSAtPiAoKSBBc3luYwogICAg
IFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgYmxvY2tpbmdNb2RlKSAtPiAoKSBBc3luYwogICAgIFNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06
dWludDhfdCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlKSAt
PiAoKSBBc3luYworICAgIFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikg
LT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAppbmRleCAzMzVmYzIwYjMzOTMwM2RmNmFhZWQzYzk1YjQ1YWIyYzQxNjc4ZjE4Li45N2Fm
Y2FiNjg1NzJmMTk0Yzg5NzI5ZmQyNjhjODU4OWI3MjZhMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAg
LTU4Miw2ICs1ODIsMTcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUKICNlbmRpZgogfQogCit2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRl
U3RyaWN0Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0TmFtZSktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAg
IH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyNlbmRpZgorfQor
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmgKaW5kZXggNTgwMmZlYWIyZTNhYzRmMzk4OWY0ZWE3NjhiNGY5MmNkYzliYTg5Ni4u
ZTViOGJlZGFkZmVkOGFjMjc3NTgxYWFlOGRiZTQwYzY3NzE1OWM2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAg
LTEyNyw2ICsxMjcsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5QwogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGJvb2wgZW5hYmxlZCwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmdG
dW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
Ym9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9y
VGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJp
Y3RDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0TmFtZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1
bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggZWQ2NDU4MjJmNWY2MjBjMzdhMTlhZjNmNmJlYzM1ZWNiODNmZTAxNy4uYTE1M2M0ODE2Nzkw
YTE1MTQwOTk2MzFiZTk3MTQzNjYxMjVlNzQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMTcwLDYg
KzExNzAsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXMKIAogICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VG9TYW1lU2l0ZVN0cmlj
dENvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHlGb3JUZXN0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggOWMwNGE4NTliYWRlMjgzMzE1MDIwOWM5
ZmNkMGVkYTlkM2I0MDU0Mi4uNjQ2NTQ3MGJhZTQyYzI1Mzg2OTk2Y2ViMmU3MWE1ODcwYTQ3YzQz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKQEAgLTE3NSw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
aG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBzeW50aGVzaXplQXBwSXNCYWNr
Z3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDdlNmFlODkzNzY3
MzQwMDE3ZGZiYWQ0ZDBjOTI5YjBhMDFmMGI4M2UuLmM3YTJjNTM1YmRlYzhiODUwYzNmNjNjYTNl
MjhmM2YzMjk3NGJkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODU3LDYgKzE4NTcsMTYgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcobV9zZXNzaW9uSUQsIG1v
ZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+
c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CiAjZW5kaWYgLy8gRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRl
eCA0ZjVjYTE3Y2M1NWM3MDkyZmY4N2UxYmQ2OWMxNjdkMjYxNjllZGY5Li5kYTAyNGU1NGY5YWFm
ZWFhNDljNTgyM2JkMWY0YjhjZGFkMTNiMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xOTYsNiArMTk2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERv
d25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgYm9vbCBvbmx5T25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGVGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2ll
c0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoKSBjb25zdDsKICAgICBib29sIGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0l0cFN0YXRlRXhwbGljaXRseVNldDsgfQogICAgIHZvaWQgdXNl
RXhwbGljaXRJVFBTdGF0ZSgpIHsgbV9pc0l0cFN0YXRlRXhwbGljaXRseVNldCA9IHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNDg0
MWUyMTMzNTQ5ODU3ZDcyM2NhOTA1ZjgwNDcyOTM4OTI2YjkyLi40ZmUxYWE4NDE4MDFlN2Q1MmY2
NWJmMWJjMDhiOTY1NGZmOWE0M2MwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDMtMjMgIEpvaG4gV2lsYW5k
ZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBjYXBhYmlsaXR5IHRv
IGNoYW5nZSBhbGwgb2YgYSB3ZWJzaXRlJ3MgY29va2llcyB0byBTYW1lU2l0ZT1TdHJpY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM2OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjA3MTA2OTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eCBDaHJpc3RlbnNlbiBhbmQgRGF2aWQgS2lsemVyLgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMg
YWRkIFRlc3RSdW5uZXIgZnVuY3Rpb24gc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29r
aWVzKCkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0
YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFj
ayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENv
b2tpZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29r
aWVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIw
MjAtMDMtMjMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgaW5zZXJ0aW5nIHRleHQgb3IgZGljdGF0aW9uIGFsdGVybmF0aXZlIGJ5IHNpbXVsYXRp
bmcga2V5Ym9hcmQgaW5wdXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDFlOTdjNjZi
NzhmZTUxZTc0YTliNGZjNWYzN2IzYWZhM2Y0ZTU3ZTguLmZhNjdmMzdhOGRhYjk4YjMwNWYwMDVj
ZDEwYzExZjUwMzBhYjlkMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzQ1LDYg
KzM0NSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NT
aG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVh
biB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBib29sZWFuIG9ubHlPblNpdGVzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKKyAg
ICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhET01TdHJpbmcgaG9z
dE5hbWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyhvYmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAppbmRleCA1MmYxNjg5MGQ5YWUwZTA1ZDBlYmI2NTUwNmNjZTM3MTFk
OGFjOGY3Li4xNjY3NTgwMjEwMTJmMGU0OGFiZTQzNjgzMTE0NzY1ODViZTY3MDc4IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzU3LDYgKzM1NywxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRS
ZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMiKSkg
eworICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVzZXRT
dGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IGUwYzdlYmY1MTllYWU5M2EwZTg3OTMxMWI0N2ZiZmYzNTNh
ZjAwYTcuLjk1YWU2NDI0OGU0ZmU5NDUyOWQ2ZDMwMjczZWY2ZjU5OGFiMzU5YmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cApAQCAtNzU0LDYgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0Rp
ZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCwKICAgICBBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrSUQsCiAgICAgTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFj
a0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCkBAIC0y
Mjg2LDYgKzIyODcsMjAgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbENsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxi
YWNrKFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lE
KTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENv
b2tpZXMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgYXV0
byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0
YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyIpKTsKKyAgICBhdXRvIG1lc3NhZ2VC
b2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhob3N0TmFtZSkpOworICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFj
aygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRvQ29u
c2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1ZjI0
NzVjYzAxNTZlMTAzZmQ0NjQzNzkzMjY4Mzc1YTJjZDVhODRjLi43MjhkMzZlMmE5ODJhMThmYWNi
NTY5OThkZDZjMDRiZDVjMDI3M2M0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJh
Y2soKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhKU1N0
cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0
aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2soKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRl
Q2FsbGJhY2soKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVSZWYg
Y2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRl
eCAzY2JjZDYyYWMxZGZjZDM3ZWQxNTUyYTVmN2Y1MTYwZWI1OGFlMjlhLi5iYTk4MjlmYmFmODY5
NzE0YTRhMTE3NDQ4ZWZkNTQ1NmYyMmUwYzU4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcApAQCAtMzcwNCw2ICszNzA0LDE0IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZh
bHVlKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NU
b1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICBSZXNv
dXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29r
aWVzRm9yVGVzdGluZyh3ZWJzaXRlRGF0YVN0b3JlKCksIGhvc3ROYW1lLCAmY29udGV4dCwgcmVz
b3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0
LmRvbmUsIG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXMoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxi
YWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAppbmRleCA4ZWI5Njc0MWE2MTMwZWY2NWViNTI2MzI5Y2E1MTU2MzRhZTRkMmNiLi44
YmNhNjQ1NWQwNzE5Zjc3NmNjYmQwYzVlMThmNWNlODkxMDQ3NTliIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNjIsNiArMjYyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2wgdmFsdWUpOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2
YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2wgdmFsdWUp
OworICAgIHZvaWQgc2V0U3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKFdLU3RyaW5n
UmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
KCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGU0NzQ5ZDJhNjkxMTljZTljYWNh
NTUxOTIwZmM1YmU0YjZjYzg0MzUuLmNiZDE0NjliOTI4OGVjNjRlZDZjNmE1N2MxM2ZiNjdiZjVm
NzBiOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC05
NTAsNiArOTUwLDEzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIlN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyIpKSB7CisgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7Cisg
ICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1l
c3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRp
c3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhob3N0TmFtZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIlN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgaWYgKG1f
c2hvdWxkRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgICAgICBtX3NhdmVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpOwpAQCAtMTkxNiw2ICsxOTIzLDEyIEBAIHZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKCkKICAgICBX
S1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwog
fQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcygp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbnVsbHB0cik7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlc2V0U3RhdGlz
dGljc1RvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUiKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZGMxZjk1MzA2YmMxNTI3MTFhYWYyNGVhMzQwMDQ0
YTQwMDM0ODk5ZS4uZTg0ZjVlYjc0OWEyNDAyYmI5ODVhMDE2MzY0YzgxYTY2MjlkOWJiNiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNzcsNiArNzcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlcigpOwogICAgIHZv
aWQgZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcygpOwogICAgIHZvaWQgZGlkU2V0
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKTsKKyAgICB2b2lkIGRpZFNldFRvU2Ft
ZVNpdGVTdHJpY3RDb29raWVzKCk7CiAgICAgdm9pZCBkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNp
c3RlbnRTdGF0ZSgpOwogICAgIHZvaWQgZGlkU2V0QmxvY2tDb29raWVzRm9ySG9zdCgpOwogICAg
IHZvaWQgZGlkU2V0U3RhdGlzdGljc0RlYnVnTW9kZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM0ZTczNmRlZWUwN2Zh
NDRhMzNjNWE2MmJlODI4NDEyNjgwNjY3ZmIuLjZhYzFjMzA1OGQ4ZWY1ZmE2MzhhNGQ3N2IyY2I4
OTdiMzk5ZTQ4NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wMy0yMyAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGNhcGFiaWxpdHkg
dG8gY2hhbmdlIGFsbCBvZiBhIHdlYnNpdGUncyBjb29raWVzIHRvIFNhbWVTaXRlPVN0cmljdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzY5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDcxMDY5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bGV4IENocmlzdGVuc2VuIGFuZCBEYXZpZCBLaWx6ZXIuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3NldC1hbGwta2luZHMtb2YtY29va2ll
cy5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNv
b2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE1hcmtlZCBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3Qu
aHRtbAorICAgICAgICAgICAgYXMgUGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBNYXJrZWQgaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwKKyAg
ICAgICAgICAgIGFzIFBhc3MgZm9yIENhdGFsaW5hKy4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIFNraXBwZWQgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwK
KyAgICAgICAgICAgIHNpbmNlIGl0J3Mgb25seSBhdmFpbGFibGUgb24gbWFjT1MgQ2F0YWxpbmEg
YW5kIHVwIGFuZCB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QKKyAgICAgICAgICAgIGltcGxlbWVu
dGVkIG9uIG5vbi1Db2NvYSBwbGF0Zm9ybXMuCisKIDIwMjAtMDMtMjMgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTF0gU2tpcCB2ZXJ0ZXhBdHRyaWIwIHNp
bXVsYXRpb24gd2hlbiB1c2luZyBBTkdMRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9zZXQtYWxsLWtpbmRzLW9mLWNv
b2tpZXMucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3Jlc291cmNlcy9zZXQtYWxsLWtpbmRzLW9mLWNvb2tpZXMucGhwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYjIz
ODdhODNiMzI4ZTYyNWI5MjY2MGIxYWMxNmU0YzhlMWI4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3Nl
dC1hbGwta2luZHMtb2YtY29va2llcy5waHAKQEAgLTAsMCArMSwxNSBAQAorPD9waHAKK2hlYWRl
cigiSFRUUC8xLjEgMjAwIE9LIik7CisKK3NldGNvb2tpZSgicGVyc2lzdGVudENvb2tpZSIsICIx
IiwgdGltZSgpICsgMzAwLCAiLyIpOworc2V0Y29va2llKCJwZXJzaXN0ZW50U2VjdXJlQ29va2ll
IiwgIjEiLCB0aW1lKCkgKyAzMDAsICIvIiwgIiIsIFRSVUUpOworc2V0Y29va2llKCJwZXJzaXN0
ZW50SHR0cE9ubHlDb29raWUiLCAiMSIsIHRpbWUoKSArIDMwMCwgIi8iLCAiIiwgRkFMU0UsIFRS
VUUpOworc2V0Y29va2llKCJwZXJzaXN0ZW50U2FtZVNpdGVMYXhDb29raWUiLCAiMSIsIFsiZXhw
aXJlcyIgPT4gdGltZSgpICsgMzAwLCAicGF0aCIgPT4gIi8iLCAic2FtZXNpdGUiID0+ICJMYXgi
XSk7CitzZXRjb29raWUoInBlcnNpc3RlbnRTYW1lU2l0ZVN0cmljdENvb2tpZSIsICIxIiwgWyJl
eHBpcmVzIiA9PiB0aW1lKCkgKyAzMDAsICJwYXRoIiA9PiAiLyIsICJzYW1lc2l0ZSIgPT4gIlN0
cmljdCJdKTsKKworc2V0Y29va2llKCJzZXNzaW9uQ29va2llIiwgIjEiLCAiIiwgIi8iKTsKK3Nl
dGNvb2tpZSgic2Vzc2lvblNlY3VyZUNvb2tpZSIsICIxIiwgIiIsICIvIiwgIiIsIFRSVUUpOwor
c2V0Y29va2llKCJzZXNzaW9uSHR0cE9ubHlDb29raWUiLCAiMSIsICIiLCAiLyIsICIiLCBGQUxT
RSwgVFJVRSk7CitzZXRjb29raWUoInNlc3Npb25TYW1lU2l0ZUxheENvb2tpZSIsICIxIiwgWyJw
YXRoIiA9PiAiLyIsICJzYW1lc2l0ZSIgPT4gIkxheCJdKTsKK3NldGNvb2tpZSgic2Vzc2lvblNh
bWVTaXRlU3RyaWN0Q29va2llIiwgIjEiLCBbInBhdGgiID0+ICIvIiwgInNhbWVzaXRlIiA9PiAi
U3RyaWN0Il0pOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
c2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1YmMxY2Y0ZWFlNWE2NzRjMDgwYWM0NWM5YTZmZWYxZmU5OWQ1YTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0
LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzEgQEAKK1Rlc3RzIHNldHRpbmcgYWxsIG9mIGEgc2l0ZSdzIGNvb2tpZXMgdG8gU2FtZVNpdGU9
c3RyaWN0LgorCisnY2xpZW50U2lkZUNvb2tpZScgMSBCZWZvcmUgQ2hhbmdlIC0tIGRvbWFpbjog
JzEyNy4wLjAuMScgaXNTZXNzaW9uOiAndHJ1ZScKKydjbGllbnRTaWRlQ29va2llJyAyIEFmdGVy
IENoYW5nZSAtLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc1Nlc3Npb246ICd0cnVlJyBpc1NhbWVT
aXRlU3RyaWN0OiAndHJ1ZScKKworJ3BlcnNpc3RlbnRDb29raWUnIDEgQmVmb3JlIENoYW5nZSAt
LSBkb21haW46ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQKKydwZXJzaXN0ZW50Q29va2llJyAyIEFm
dGVyIENoYW5nZSAtLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBleHBpcnkgc2V0IGlzU2FtZVNpdGVT
dHJpY3Q6ICd0cnVlJworCisncGVyc2lzdGVudEh0dHBPbmx5Q29va2llJyAxIEJlZm9yZSBDaGFu
Z2UgLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBleHBpcnkgc2V0IGlzSHR0cE9ubHk6ICd0cnVlJwor
J3BlcnNpc3RlbnRIdHRwT25seUNvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEy
Ny4wLjAuMScgZXhwaXJ5IHNldCBpc0h0dHBPbmx5OiAndHJ1ZScgaXNTYW1lU2l0ZVN0cmljdDog
J3RydWUnCisKKydwZXJzaXN0ZW50U2FtZVNpdGVMYXhDb29raWUnIDEgQmVmb3JlIENoYW5nZSAt
LSBkb21haW46ICcxMjcuMC4wLjEnIGV4cGlyeSBzZXQgaXNTYW1lU2l0ZUxheDogJ3RydWUnCisn
cGVyc2lzdGVudFNhbWVTaXRlTGF4Q29va2llJyAyIEFmdGVyIENoYW5nZSAtLS0gZG9tYWluOiAn
MTI3LjAuMC4xJyBleHBpcnkgc2V0IGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisncGVyc2lz
dGVudFNhbWVTaXRlU3RyaWN0Q29va2llJyAxIEJlZm9yZSBDaGFuZ2UgLS0gZG9tYWluOiAnMTI3
LjAuMC4xJyBleHBpcnkgc2V0IGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworJ3BlcnNpc3RlbnRT
YW1lU2l0ZVN0cmljdENvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEyNy4wLjAu
MScgZXhwaXJ5IHNldCBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScKKworJ3Nlc3Npb25Db29raWUn
IDEgQmVmb3JlIENoYW5nZSAtLSBkb21haW46ICcxMjcuMC4wLjEnIGlzU2Vzc2lvbjogJ3RydWUn
Cisnc2Vzc2lvbkNvb2tpZScgMiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEyNy4wLjAuMScg
aXNTZXNzaW9uOiAndHJ1ZScgaXNTYW1lU2l0ZVN0cmljdDogJ3RydWUnCisKKydzZXNzaW9uSHR0
cE9ubHlDb29raWUnIDEgQmVmb3JlIENoYW5nZSAtLSBkb21haW46ICcxMjcuMC4wLjEnIGlzSHR0
cE9ubHk6ICd0cnVlJyBpc1Nlc3Npb246ICd0cnVlJworJ3Nlc3Npb25IdHRwT25seUNvb2tpZScg
MiBBZnRlciBDaGFuZ2UgLS0tIGRvbWFpbjogJzEyNy4wLjAuMScgaXNIdHRwT25seTogJ3RydWUn
IGlzU2Vzc2lvbjogJ3RydWUnIGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisnc2Vzc2lvblNh
bWVTaXRlTGF4Q29va2llJyAxIEJlZm9yZSBDaGFuZ2UgLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBp
c1Nlc3Npb246ICd0cnVlJyBpc1NhbWVTaXRlTGF4OiAndHJ1ZScKKydzZXNzaW9uU2FtZVNpdGVM
YXhDb29raWUnIDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGlzU2Vzc2lv
bjogJ3RydWUnIGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisnc2Vzc2lvblNhbWVTaXRlU3Ry
aWN0Q29va2llJyAxIEJlZm9yZSBDaGFuZ2UgLS0gZG9tYWluOiAnMTI3LjAuMC4xJyBpc1Nlc3Np
b246ICd0cnVlJyBpc1NhbWVTaXRlU3RyaWN0OiAndHJ1ZScKKydzZXNzaW9uU2FtZVNpdGVTdHJp
Y3RDb29raWUnIDIgQWZ0ZXIgQ2hhbmdlIC0tLSBkb21haW46ICcxMjcuMC4wLjEnIGlzU2Vzc2lv
bjogJ3RydWUnIGlzU2FtZVNpdGVTdHJpY3Q6ICd0cnVlJworCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2ll
cy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NzQ5ODUzM2ZmOTY0YzRlOGFlZGJlZTQwNzE5NmI3NGQ0OTgzMWFjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwKQEAgLTAsMCAr
MSwxMDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW4oKScsIDApIj4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj5UZXN0cyBzZXR0aW5nIGFsbCBvZiBhIHNpdGUncyBjb29raWVzIHRvIFNhbWVT
aXRlPXN0cmljdC48L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8
c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAg
ICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsK
KworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENo
aWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7
CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0cmluZ2lmeUNvb2tpZVBy
b3BlcnRpZXMoY29va2llLCBpc0JlZm9yZSkgeworICAgICAgICBsZXQgY29va2llU3RyaW5nID0g
IiciICsgY29va2llLm5hbWUgKyAoaXNCZWZvcmUgPyAiJyAxIEJlZm9yZSBDaGFuZ2UgLS0iIDog
IicgMiBBZnRlciBDaGFuZ2UgLS0tIik7CisgICAgICAgIGlmIChjb29raWUuZG9tYWluKQorICAg
ICAgICAgICAgY29va2llU3RyaW5nICs9ICIgZG9tYWluOiAnIiArIGNvb2tpZS5kb21haW4gKyAi
JyI7CisgICAgICAgIGlmIChjb29raWUucGF0aCkKKyAgICAgICAgICAgIGNvb2tpZVN0cmluZyAr
PSAiIHBhdGg6ICciICsgY29va2llLnBhdGggKyAiJyI7CisgICAgICAgIGlmIChjb29raWUuZXhw
aXJlcykKKyAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSAiIGV4cGlyeSBzZXQiOworICAgICAg
ICBpZiAoY29va2llLmlzSHR0cE9ubHkpCisgICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBp
c0h0dHBPbmx5OiAnIiArIGNvb2tpZS5pc0h0dHBPbmx5ICsgIiciOworICAgICAgICBpZiAoY29v
a2llLmlzU2VjdXJlKQorICAgICAgICAgICAgY29va2llU3RyaW5nICs9ICIgaXNTZWN1cmU6ICci
ICsgY29va2llLmlzU2VjdXJlICsgIiciOworICAgICAgICBpZiAoY29va2llLmlzU2Vzc2lvbikK
KyAgICAgICAgICAgIGNvb2tpZVN0cmluZyArPSAiIGlzU2Vzc2lvbjogJyIgKyBjb29raWUuaXNT
ZXNzaW9uICsgIiciOworICAgICAgICBpZiAoY29va2llLmlzU2FtZVNpdGVOb25lKQorICAgICAg
ICAgICAgY29va2llU3RyaW5nICs9ICIgaXNTYW1lU2l0ZU5vbmU6ICciICsgY29va2llLmlzU2Ft
ZVNpdGVOb25lICsgIiciOworICAgICAgICBpZiAoY29va2llLmlzU2FtZVNpdGVMYXgpCisgICAg
ICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBpc1NhbWVTaXRlTGF4OiAnIiArIGNvb2tpZS5pc1Nh
bWVTaXRlTGF4ICsgIiciOworICAgICAgICBpZiAoY29va2llLmlzU2FtZVNpdGVTdHJpY3QpCisg
ICAgICAgICAgICBjb29raWVTdHJpbmcgKz0gIiBpc1NhbWVTaXRlU3RyaWN0OiAnIiArIGNvb2tp
ZS5pc1NhbWVTaXRlU3RyaWN0ICsgIiciOworICAgICAgICByZXR1cm4gY29va2llU3RyaW5nOwor
ICAgIH0KKworICAgIGxldCBjb29raWVzQmVmb3JlQ2hhbmdlOworICAgIGxldCBjb29raWVzQWZ0
ZXJDaGFuZ2U7CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoKSB7CisgICAgICAgIGlmICgh
Y29va2llc0JlZm9yZUNoYW5nZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJ
TDogTm8gY29va2llcyBmb3VuZCBiZWZvcmUgY2hhbmdlLiIpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWNvb2tpZXNCZWZvcmVDaGFuZ2UubGVuZ3RoIHx8ICFjb29raWVzQWZ0ZXJDaGFu
Z2UubGVuZ3RoKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6IE5vIGNvb2tpZXMgZm91
bmQgYWZ0ZXIgY2hhbmdlLiIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29va2llc0Jl
Zm9yZUNoYW5nZS5sZW5ndGggIT09IGNvb2tpZXNBZnRlckNoYW5nZS5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIGFkZE91dHB1dCgiRkFJTDogTm90IHRoZSBzYW1lIGFtb3VudCBvZiBjb29raWVzIGJl
Zm9yZSBhbmQgYWZ0ZXIgY2hhbmdlLiIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgdW5z
b3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBjb29raWVzQmVmb3JlQ2hhbmdlLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB1bnNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKHN0cmluZ2lmeUNvb2tpZVByb3BlcnRpZXMoY29va2ll
c0JlZm9yZUNoYW5nZVtpXSwgdHJ1ZSkpOworICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMucHVzaChzdHJpbmdpZnlDb29raWVQcm9wZXJ0aWVzKGNvb2tpZXNBZnRlckNoYW5n
ZVtpXSwgZmFsc2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJh
eSk7CisgICAgICAgIGxldCByb3cgPSAxOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVz
c2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1
dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgICAgICBpZiAocm93ICUgMiA9PT0gMCkKKyAg
ICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgKytyb3c7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgIGZldGNo
KCJyZXNvdXJjZXMvc2V0LWFsbC1raW5kcy1vZi1jb29raWVzLnBocD9kdW1teT0iICsgTWF0aC5y
YW5kb20oKSkKKyAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5jb29raWUgPSAiY2xpZW50U2lkZUNvb2tpZT0xIjsKKyAgICAgICAgICAgICAgICBjb29r
aWVzQmVmb3JlQ2hhbmdlID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcygiaHR0cDov
LzEyNy4wLjAuMTo4MDAwIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBjb29r
aWVzQWZ0ZXJDaGFuZ2UgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAg
ICAgICBjaGVja0Nvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KQorICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBhMzNiYjVmYzZmNDc4MDFlZmE2YTQzYTM1YmNmNTMyZmZkNDdmM2Y4
Li5iM2ZkZWQxOWY2NDk0ZDg4ZjBlMjhiZWE2M2M4M2I4YTUxNWMzZWRkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjczOCw2ICsyNzM4LDEwIEBAIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNp
c3RlbnQtc3RvcmUuaHRtbCBbIFBhCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2xlYXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLW9uZS1ob3VyLmh0bWwgWyBQYXNz
IF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1v
cmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGly
ZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCisKKyMgVGhlIFNhbWVTaXRlIGNvb2tpZSBB
UEkgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQ2F0YWxpbmEgYW5kIGFib3ZlLCBhbmQgdGh1
cyBza2lwcGVkIGZvciBXSzIgaW4gZ2VuZXJhbC4KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsgUGFzcyBd
CisKIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9w
ZW5lci5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS1zdG9yYWdl
LWFjY2Vzcy11bmRlci1vcGVuZXItaWYtYXV0by1kaXNtaXNzLmh0bWwgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2OThiM2Q1Y2UxZWUwNGFjOTQzYTk4ZGM3ZTZhM2Jk
NTdmMzcyZWQxLi45MTU5NzgwMWNlNmYwNjcyOTYyNDk0NGRhNGMwOGY1ZGFmOTY4N2FkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03Mzks
NiArNzM5LDkgQEAgd2Via2l0Lm9yZy9iLzE4NTk5NCBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQt
Zm9udHMvc2hhZG93LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwKIFsgSGlnaFNpZXJyYSsgXSBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZv
ci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2
YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFBhc3MgXQogCisjIFRoZSBTYW1lU2l0ZSBjb29raWUgQVBJ
IGlzIG9ubHkgYXZhaWxhYmxlIGluIG1hY09TIENhdGFsaW5hIGFuZCBhYm92ZS4KK1sgQ2F0YWxp
bmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10
by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwgWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVyYWwg
ZXhwZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBt
ZWRpYS9kZWFjdGl2YXRlLWF1ZGlvLXNlc3Npb24uaHRtbCBbIFBhc3MgXQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVlMzI3ZDQzMzY0MTcwNDYxMmNm
MjQwN2QzZDIyY2U3MjJlNzc1MDguLmRjZjIwMmM4OWE3NDdkZjU3ODcxNmIwN2Q5NDA5NDgyZWEx
ZWYwMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03
MzIsNiArNzMyLDEwIEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZh
dGhlcmluZy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTgwNzAzIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcnVuZS1zdGF0aXN0aWNz
Lmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFBhc3Mg
XQorCisjIFRoZSBTYW1lU2l0ZSBjb29raWUgQVBJIGlzIG9ubHkgYXZhaWxhYmxlIGluIG1hY09T
IENhdGFsaW5hIGFuZCBhYm92ZS4KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9z
ZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsgU2tpcCBdCisKIGh0dHAv
dGVzdHMvd2Vic29ja2V0L2Nvbm5lY3Rpb24tcmVmdXNhbC1pbi1mcmFtZS1yZXNvdXJjZS1sb2Fk
LXN0YXRpc3RpY3MuaHRtbCBbIFBhc3MgXQogIyBUaGVzZSBhcmUgb25seSBzdXBwb3J0ZWQgYmVo
aW5kIGEgY29tcGlsZSB0aW1lIGZsYWcgaW4gbWFjT1MgSGlnaCBTaWVycmEgKyBpT1MgMTEsIGFu
ZCBhYm92ZS4KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRp
b24uaHRtbCBbIFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>