<?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>188624</bug_id>
          
          <creation_ts>2018-08-15 15:40:54 -0700</creation_ts>
          <short_desc>[WebAuthn] Support NFC authenticators for iOS</short_desc>
          <delta_ts>2022-01-19 05:17:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201813</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex.gaynor</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>chris</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>daniel.stjean</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>james</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jschoi</cc>
    
    <cc>me</cc>
    
    <cc>paul.l.kehrer</cc>
    
    <cc>richardoliver</cc>
    
    <cc>sam</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450495</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-08-15 15:40:54 -0700</bug_when>
    <thetext>Support NFC authenticators for iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450496</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-15 15:41:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/43354214&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563215</commentid>
    <comment_count>2</comment_count>
      <attachid>376796</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 13:13:38 -0700</bug_when>
    <thetext>Created attachment 376796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563253</commentid>
    <comment_count>3</comment_count>
      <attachid>376812</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 14:53:46 -0700</bug_when>
    <thetext>Created attachment 376812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563256</commentid>
    <comment_count>4</comment_count>
      <attachid>376814</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 15:01:40 -0700</bug_when>
    <thetext>Created attachment 376814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563278</commentid>
    <comment_count>5</comment_count>
      <attachid>376823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 15:43:58 -0700</bug_when>
    <thetext>Created attachment 376823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563290</commentid>
    <comment_count>6</comment_count>
      <attachid>376823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 16:36:13 -0700</bug_when>
    <thetext>Comment on attachment 376823
Patch

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

Will upload another patch without those two files after EWS runs.

&gt; Source/WTF/wtf/Platform.h:1556
&gt; +#define HAVE_CTFONTCREATEFORCHARACTERSWITHLANGUAGEANDOPTION 0

Oops. Somehow forgot to checkout this file.

&gt; Source/WebKit/Platform/IPC/HandleMessage.h:116
&gt; +//        ASSERT(decoder.isInvalid());

Oops. Somehow forgot to checkout this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563298</commentid>
    <comment_count>7</comment_count>
      <attachid>376823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 16:45:16 -0700</bug_when>
    <thetext>Comment on attachment 376823
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:71
&gt; +        // FIXME: Somehow elminiate the need for the copy?

elminiate =&gt; eliminate

&gt; LayoutTests/http/wpt/webauthn/public-key-credential-create-success-nfc.https.html:12
&gt; +    function checkResult(credential)

Should probably move this to util and share it between NFC and HID.

&gt; LayoutTests/http/wpt/webauthn/public-key-credential-create-success-nfc.https.html:38
&gt; +    {

Should probably move this to util and share it between NFC and HID.

&gt; LayoutTests/http/wpt/webauthn/public-key-credential-get-success-nfc.https.html:12
&gt; +    {

Should probably move this to util and share it between NFC and HID.

&gt; LayoutTests/http/wpt/webauthn/public-key-credential-get-success-nfc.https.html:29
&gt; +    {

Should probably move this to util and share it between NFC and HID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563335</commentid>
    <comment_count>8</comment_count>
      <attachid>376823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-20 17:42:42 -0700</bug_when>
    <thetext>Comment on attachment 376823
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:72
&gt; +        respondAsync(WTFMove(callback), (Vector&lt;uint8_t&gt;(apduResponse-&gt;data())));

Remove the outer parenthesis of Vector&lt;uint8_t&gt;(apduResponse-&gt;data()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563515</commentid>
    <comment_count>9</comment_count>
      <attachid>376823</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-21 09:09:12 -0700</bug_when>
    <thetext>Comment on attachment 376823
Patch

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

&gt;&gt; Source/WTF/wtf/Platform.h:1556
&gt;&gt; +#define HAVE_CTFONTCREATEFORCHARACTERSWITHLANGUAGEANDOPTION 0
&gt; 
&gt; Oops. Somehow forgot to checkout this file.

LOl. r- to fix! :-)

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:74
&gt; +        addResult = result.add(AuthenticatorTransport::Nfc);

Do we support NFC on Macs?

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:44
&gt; +// FIXME(200934)

&quot;// FIXME(200934): Support NFCCTAP_GETRESPONSE&quot;

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:84
&gt; +    RunLoop::main().dispatch([callback = WTFMove(callback), response = WTFMove(response)] () mutable {

Please double-check that ResponseCallback (WTF::Function?) can be safely moved across threads without needing a cross-thread copy. I think if it&apos;s a WTF::Function and is constructed/destroyed on the same thread it&apos;s fine.

&gt;&gt; LayoutTests/http/wpt/webauthn/public-key-credential-create-success-nfc.https.html:12
&gt;&gt; +    function checkResult(credential)
&gt; 
&gt; Should probably move this to util and share it between NFC and HID.

Good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563579</commentid>
    <comment_count>10</comment_count>
      <attachid>376823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-21 11:21:50 -0700</bug_when>
    <thetext>Comment on attachment 376823
Patch

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

Thanks Brent for reviewing the patch.

&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1556
&gt;&gt;&gt; +#define HAVE_CTFONTCREATEFORCHARACTERSWITHLANGUAGEANDOPTION 0
&gt;&gt; 
&gt;&gt; Oops. Somehow forgot to checkout this file.
&gt; 
&gt; LOl. r- to fix! :-)

&apos;webkit-patch upload &apos; tricks me every time for uploading uncommitted changes...

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:74
&gt;&gt; +        addResult = result.add(AuthenticatorTransport::Nfc);
&gt; 
&gt; Do we support NFC on Macs?

The framework is available but it doesn&apos;t do anything. I figure out it is better to have the NFHardwareManager to figure it out itself in runtime than a compile time flag .

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:44
&gt;&gt; +// FIXME(200934)
&gt; 
&gt; &quot;// FIXME(200934): Support NFCCTAP_GETRESPONSE&quot;

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:84
&gt;&gt; +    RunLoop::main().dispatch([callback = WTFMove(callback), response = WTFMove(response)] () mutable {
&gt; 
&gt; Please double-check that ResponseCallback (WTF::Function?) can be safely moved across threads without needing a cross-thread copy. I think if it&apos;s a WTF::Function and is constructed/destroyed on the same thread it&apos;s fine.

I didn&apos;t move the captured list objects across threads. I just make the response happen in the next runloop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563611</commentid>
    <comment_count>11</comment_count>
      <attachid>376904</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-21 12:21:21 -0700</bug_when>
    <thetext>Created attachment 376904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563698</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-21 14:49:03 -0700</bug_when>
    <thetext>Sadly, NearField doesn&apos;t present in iOS simulator. I will add a compile time flag for it.

Good news is my mocking tests work on macOS therefore the code is still covered by tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563755</commentid>
    <comment_count>13</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-21 15:43:33 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #12)
&gt; Sadly, NearField doesn&apos;t present in iOS simulator. I will add a compile time
&gt; flag for it.
&gt; 
&gt; Good news is my mocking tests work on macOS therefore the code is still
&gt; covered by tests.

The easiest fix I guess is to skip those tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563866</commentid>
    <comment_count>14</comment_count>
      <attachid>376960</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-21 18:12:52 -0700</bug_when>
    <thetext>Created attachment 376960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564037</commentid>
    <comment_count>15</comment_count>
      <attachid>376960</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-22 07:43:19 -0700</bug_when>
    <thetext>Comment on attachment 376960
Patch

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

&gt; Source/WebKit/Platform/spi/Cocoa/NearFieldSPI.h:70
&gt; +@property (nonatomic, readonly, copy) NSData *AppData NS_DEPRECATED(10_12, 10_15, 10_0, 13_0);

Do we need to declare this deprecated property?

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:76
&gt; +        auto addResult = result.add(AuthenticatorTransport::Nfc);

I&apos;d put this outside the #if guard and call it something like nfcAddResult, or add it before Usb

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcService.mm:78
&gt; +        RunLoop::main().dispatch([weakThis, this, session = retainSession] () mutable {

You could do session = retainPtr(session).
Also move weakThis into the lambda capture.
Just reducing a little ref churn.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.mm:53
&gt; +    RunLoop::main().dispatch([connection = _connection, tags = retainTags] {

ditto about tags

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:52
&gt; +        command.setCla(0x80);
&gt; +        command.setIns(0x10);

Could these be given names and put in FidoConstants.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564178</commentid>
    <comment_count>16</comment_count>
      <attachid>376960</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-22 12:58:15 -0700</bug_when>
    <thetext>Comment on attachment 376960
Patch

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

Thanks Alex for reviewing the patch.

&gt;&gt; Source/WebKit/Platform/spi/Cocoa/NearFieldSPI.h:70
&gt;&gt; +@property (nonatomic, readonly, copy) NSData *AppData NS_DEPRECATED(10_12, 10_15, 10_0, 13_0);
&gt; 
&gt; Do we need to declare this deprecated property?

I guess not. I have to conform the protocol in MockNfcService to do mock testing.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:76
&gt;&gt; +        auto addResult = result.add(AuthenticatorTransport::Nfc);
&gt; 
&gt; I&apos;d put this outside the #if guard and call it something like nfcAddResult, or add it before Usb

Fixed. I add it before USB.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcService.mm:78
&gt;&gt; +        RunLoop::main().dispatch([weakThis, this, session = retainSession] () mutable {
&gt; 
&gt; You could do session = retainPtr(session).
&gt; Also move weakThis into the lambda capture.
&gt; Just reducing a little ref churn.

Fixed the retainPtr(session).

What do you mean by moving weakThis into the lambda capture which it is already in?

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.mm:53
&gt;&gt; +    RunLoop::main().dispatch([connection = _connection, tags = retainTags] {
&gt; 
&gt; ditto about tags

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:52
&gt;&gt; +        command.setIns(0x10);
&gt; 
&gt; Could these be given names and put in FidoConstants.h?

Definitely, yes.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564182</commentid>
    <comment_count>17</comment_count>
      <attachid>376960</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-22 12:59:14 -0700</bug_when>
    <thetext>Comment on attachment 376960
Patch

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

&gt;&gt;&gt; Source/WebKit/Platform/spi/Cocoa/NearFieldSPI.h:70
&gt;&gt;&gt; +@property (nonatomic, readonly, copy) NSData *AppData NS_DEPRECATED(10_12, 10_15, 10_0, 13_0);
&gt;&gt; 
&gt;&gt; Do we need to declare this deprecated property?
&gt; 
&gt; I guess not. I have to conform the protocol in MockNfcService to do mock testing.

What I mean is we need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564183</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-22 13:00:31 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #16)
&gt; What do you mean by moving weakThis into the lambda capture which it is
&gt; already in?
weakThis = WTFMove(weakThis)
This kind of pattern prevents one ref and one deref of the WeakPtrImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564191</commentid>
    <comment_count>19</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-22 13:10:11 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #18)
&gt; (In reply to Jiewen Tan from comment #16)
&gt; &gt; What do you mean by moving weakThis into the lambda capture which it is
&gt; &gt; already in?
&gt; weakThis = WTFMove(weakThis)
&gt; This kind of pattern prevents one ref and one deref of the WeakPtrImpl

I was not aware that WeakPtr uses a RefPtr to wrap the WeakPtrImpl. Thanks for the tips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564202</commentid>
    <comment_count>20</comment_count>
      <attachid>376960</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-22 13:44:05 -0700</bug_when>
    <thetext>Comment on attachment 376960
Patch

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

r=me with changes

&gt; Source/WebKit/Platform/spi/Cocoa/NearFieldSPI.h:85
&gt; +- (void) endSession;

Why the space before endSession? Same comment for several other below.

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:682
&gt; +        WebKit::MockWebAuthenticationConfiguration::Nfc nfc;

Why is this local needed? Why not use configuration.nfc directly below?

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:687
&gt; +        if (error == &quot;no-tags&quot;)

else if

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:689
&gt; +        if (error == &quot;wrong-tag-type&quot;)

else if

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:691
&gt; +        if (error == &quot;no-connections&quot;)

else if

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:693
&gt; +        if (error == &quot;malicious-payload&quot;)

else if

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:79
&gt; +    // FIXME(200932)

Please put in an actual comment, not just a number.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:94
&gt; +        if (!m_service)

Why is this in the loop and not at the beginning of the method? Can m_service change while iterating?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcService.h:50
&gt; +    std::unique_ptr&lt;CtapNfcDriver&gt; m_driver;

We normally try to avoid protected data members. We put data members private and have protected getters / setters for them if needed.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcService.mm:78
&gt;&gt;&gt; +        RunLoop::main().dispatch([weakThis, this, session = retainSession] () mutable {
&gt;&gt; 
&gt;&gt; You could do session = retainPtr(session).
&gt;&gt; Also move weakThis into the lambda capture.
&gt;&gt; Just reducing a little ref churn.
&gt; 
&gt; Fixed the retainPtr(session).
&gt; 
&gt; What do you mean by moving weakThis into the lambda capture which it is already in?

weakThis = WTFMove(weakThis)

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.h:31
&gt; +#import &lt;wtf/WeakPtr.h&gt;

Does not appear to be needed in the header.

&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockNfcService.mm:98
&gt; +using Mock = MockWebAuthenticationConfiguration::Nfc;

Mock seems too generic a name, especially now that we have unified builds.

&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockNfcService.mm:146
&gt; +    return result;

Should this autorelease ?

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:71
&gt; +        // FIXME: Somehow eliminate the need for the copy?

You could add the following getter to ApduResponse:
Vector&lt;uint8_t&gt;&amp; data() { return m_data; }

and then WTFMove(apduResponse-&gt;data()) below.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.cpp:56
&gt; +        weakThis-&gt;continueAfterGetInfo(ptr, WTFMove(response));

what guarantees that ptr is not stale here? Also please find a better name.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.cpp:62
&gt; +void FidoService::continueAfterGetInfo(CtapDriver* ptr, Vector&lt;uint8_t&gt;&amp;&amp; response)

ptr is not a good name.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.h:45
&gt; +    void continueAfterGetInfo(CtapDriver* ptr, Vector&lt;uint8_t&gt;&amp;&amp; info);

ptr should be omitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564218</commentid>
    <comment_count>21</comment_count>
      <attachid>376960</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-22 14:16:20 -0700</bug_when>
    <thetext>Comment on attachment 376960
Patch

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

Thanks Chris for r+ this patch.

&gt;&gt; Source/WebKit/Platform/spi/Cocoa/NearFieldSPI.h:85
&gt;&gt; +- (void) endSession;
&gt; 
&gt; Why the space before endSession? Same comment for several other below.

Good catch. I copy &amp; paste it from the actual header...

&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:682
&gt;&gt; +        WebKit::MockWebAuthenticationConfiguration::Nfc nfc;
&gt; 
&gt; Why is this local needed? Why not use configuration.nfc directly below?

configuration.nfc is an Optional. I guess I cannot directly use it?

&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:687
&gt;&gt; +        if (error == &quot;no-tags&quot;)
&gt; 
&gt; else if

Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:689
&gt;&gt; +        if (error == &quot;wrong-tag-type&quot;)
&gt; 
&gt; else if

Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:691
&gt;&gt; +        if (error == &quot;no-connections&quot;)
&gt; 
&gt; else if

Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:693
&gt;&gt; +        if (error == &quot;malicious-payload&quot;)
&gt; 
&gt; else if

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:79
&gt;&gt; +    // FIXME(200932)
&gt; 
&gt; Please put in an actual comment, not just a number.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:94
&gt;&gt; +        if (!m_service)
&gt; 
&gt; Why is this in the loop and not at the beginning of the method? Can m_service change while iterating?

I should check it ahead.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcService.h:50
&gt;&gt; +    std::unique_ptr&lt;CtapNfcDriver&gt; m_driver;
&gt; 
&gt; We normally try to avoid protected data members. We put data members private and have protected getters / setters for them if needed.

Fixed.

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcService.mm:78
&gt;&gt;&gt;&gt; +        RunLoop::main().dispatch([weakThis, this, session = retainSession] () mutable {
&gt;&gt;&gt; 
&gt;&gt;&gt; You could do session = retainPtr(session).
&gt;&gt;&gt; Also move weakThis into the lambda capture.
&gt;&gt;&gt; Just reducing a little ref churn.
&gt;&gt; 
&gt;&gt; Fixed the retainPtr(session).
&gt;&gt; 
&gt;&gt; What do you mean by moving weakThis into the lambda capture which it is already in?
&gt; 
&gt; weakThis = WTFMove(weakThis)

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.h:31
&gt;&gt; +#import &lt;wtf/WeakPtr.h&gt;
&gt; 
&gt; Does not appear to be needed in the header.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockNfcService.mm:98
&gt;&gt; +using Mock = MockWebAuthenticationConfiguration::Nfc;
&gt; 
&gt; Mock seems too generic a name, especially now that we have unified builds.

Changed to MockNfc.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockNfcService.mm:146
&gt;&gt; +    return result;
&gt; 
&gt; Should this autorelease ?

Maybe?

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp:71
&gt;&gt; +        // FIXME: Somehow eliminate the need for the copy?
&gt; 
&gt; You could add the following getter to ApduResponse:
&gt; Vector&lt;uint8_t&gt;&amp; data() { return m_data; }
&gt; 
&gt; and then WTFMove(apduResponse-&gt;data()) below.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.cpp:56
&gt;&gt; +        weakThis-&gt;continueAfterGetInfo(ptr, WTFMove(response));
&gt; 
&gt; what guarantees that ptr is not stale here? Also please find a better name.

The ptr is the key to the hashset. Therefore, it doesn&apos;t matter whether it is stale or not.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.cpp:62
&gt;&gt; +void FidoService::continueAfterGetInfo(CtapDriver* ptr, Vector&lt;uint8_t&gt;&amp;&amp; response)
&gt; 
&gt; ptr is not a good name.

id?

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/FidoService.h:45
&gt;&gt; +    void continueAfterGetInfo(CtapDriver* ptr, Vector&lt;uint8_t&gt;&amp;&amp; info);
&gt; 
&gt; ptr should be omitted.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564240</commentid>
    <comment_count>22</comment_count>
      <attachid>377048</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-22 14:45:09 -0700</bug_when>
    <thetext>Created attachment 377048
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564245</commentid>
    <comment_count>23</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-22 14:48:11 -0700</bug_when>
    <thetext>Attachment 377048 did not pass style-queue:


ERROR: Source/WebCore/Modules/webauthn/apdu/ApduResponse.h:64:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 56 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564545</commentid>
    <comment_count>24</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-23 11:56:26 -0700</bug_when>
    <thetext>Committed r249059: &lt;https://trac.webkit.org/changeset/249059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564599</commentid>
    <comment_count>25</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-23 14:22:16 -0700</bug_when>
    <thetext>A build fix:
Committed r249068: &lt;https://trac.webkit.org/changeset/249068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564970</commentid>
    <comment_count>26</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-08-26 09:44:38 -0700</bug_when>
    <thetext>It looks like two of the new tests added in https://trac.webkit.org/changeset/249059/webkit are failing 

http/wpt/webauthn/public-key-credential-create-success-nfc.https.html
http/wpt/webauthn/public-key-credential-get-success-nfc.https.html

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-create-success-nfc.https.html%20http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-get-success-nfc.https.html

Diff:
https://build.webkit.org/results/Apple%20Mojave%20Release%20WK2%20(Tests)/r249096%20(6157)/http/wpt/webauthn/public-key-credential-create-success-nfc.https-diff.txt

https://build.webkit.org/results/Apple%20Mojave%20Release%20WK2%20(Tests)/r249096%20(6157)/http/wpt/webauthn/public-key-credential-get-success-nfc.https-diff.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564973</commentid>
    <comment_count>27</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-26 09:48:39 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #26)
&gt; It looks like two of the new tests added in
&gt; https://trac.webkit.org/changeset/249059/webkit are failing 
&gt; 
&gt; http/wpt/webauthn/public-key-credential-create-success-nfc.https.html
&gt; http/wpt/webauthn/public-key-credential-get-success-nfc.https.html
&gt; 
&gt; History:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-
&gt; create-success-nfc.https.html%20http%2Fwpt%2Fwebauthn%2Fpublic-key-
&gt; credential-get-success-nfc.https.html
&gt; 
&gt; Diff:
&gt; https://build.webkit.org/results/Apple%20Mojave%20Release%20WK2%20(Tests)/
&gt; r249096%20(6157)/http/wpt/webauthn/public-key-credential-create-success-nfc.
&gt; https-diff.txt
&gt; 
&gt; https://build.webkit.org/results/Apple%20Mojave%20Release%20WK2%20(Tests)/
&gt; r249096%20(6157)/http/wpt/webauthn/public-key-credential-get-success-nfc.
&gt; https-diff.txt

They might need to be skipped on older OS&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565021</commentid>
    <comment_count>28</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-08-26 11:42:33 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #27)
&gt; (In reply to Truitt Savell from comment #26)
&gt; &gt; It looks like two of the new tests added in
&gt; &gt; https://trac.webkit.org/changeset/249059/webkit are failing 
&gt; &gt; 
&gt; &gt; http/wpt/webauthn/public-key-credential-create-success-nfc.https.html
&gt; &gt; http/wpt/webauthn/public-key-credential-get-success-nfc.https.html
&gt; &gt; 
&gt; &gt; History:
&gt; &gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; &gt; html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-
&gt; &gt; create-success-nfc.https.html%20http%2Fwpt%2Fwebauthn%2Fpublic-key-
&gt; &gt; credential-get-success-nfc.https.html
&gt; &gt; 
&gt; &gt; Diff:
&gt; &gt; https://build.webkit.org/results/Apple%20Mojave%20Release%20WK2%20(Tests)/
&gt; &gt; r249096%20(6157)/http/wpt/webauthn/public-key-credential-create-success-nfc.
&gt; &gt; https-diff.txt
&gt; &gt; 
&gt; &gt; https://build.webkit.org/results/Apple%20Mojave%20Release%20WK2%20(Tests)/
&gt; &gt; r249096%20(6157)/http/wpt/webauthn/public-key-credential-get-success-nfc.
&gt; &gt; https-diff.txt
&gt; 
&gt; They might need to be skipped on older OS&apos;s.

Yes, here we go:
Committed r249107: &lt;https://trac.webkit.org/changeset/249107&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376796</attachid>
            <date>2019-08-20 13:13:38 -0700</date>
            <delta_ts>2019-08-20 14:53:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188624-20190820131337.patch</filename>
            <type>text/plain</type>
            <size>130276</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFkODQxNTNjZDUyZmE0
OTY1ZDFkZjM1Zjc5ZTM2ZGQwMDQzM2NlMS4uNTQ0ZmE2ZTA3MjA3MzM2NTJiZDIzMjJiZTlhNjBm
NzVjNjMwZmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTIwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBw
b3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
MzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKyAgICAgICAgQWRk
cyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9uLgorCiAyMDE5LTA4LTEzICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIFdQRSBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYzZlNzFhZWViNzI4MWY0ZWRhNGMyNWU2MTkwNTJmNDE3NDllYWQ2OC4uNThj
ZGNmYTM0Y2NhY2Q5ZDRlMTRiNGIyNTU4NjJkMjJkY2IxYTkxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDIgQEAKKzIwMTktMDgtMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3JzIGZvciBpT1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODYyNAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQg
Zm9yIE5GQyBhdXRoZW50aWNhdG9ycyBpbmNsdWRpbmcgYm90aCBGSURPMiBhbmQgVTJGIG9uZXMu
IEl0IHV0aWxpemVzIGEgcHJpdmF0ZQorICAgICAgICBmcmFtZXdvcmsgY2FsbGVkIE5lYXJGaWVs
ZCBpbnN0ZWFkIG9mIENvcmVORkMgdG8gYmUgYWJsZSB0byBzdXBwbHkgYSBjdXN0b20gVUkgbGF0
ZXIgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgIFRoZSBwYXRjaCBmb2xsb3dzIGFsbW9zdCB0aGUg
c2FtZSBmbG93IGFzIHByZXZpb3VzIEhJRCBhbmQgTG9jYWwgYXV0aGVudGljYXRvciBzdXBwb3J0
LgorICAgICAgICAxKSBEaXNjb3ZlcnkgaXMgdmlhIE5mY1NlcnZpY2Ugd2hpY2ggd2lsbCBpbnZv
a2UgTkZIYXJkd2FyZU1hbmFnZXIgdG8gc3RhcnQgYSBnZW5lcmljIE5GQyByZWFkZXIgc2Vzc2lv
bi4KKyAgICAgICAgMikgT25jZSBhIHJlYWRlciBzZXNzaW9uIGlzIGVzdGFibGlzaGVkLCBhIE5m
Y0Nvbm5lY3Rpb24gaXMgY3JlYXRlZCB0byBzdGFydCB0aGUgcG9sbGluZyBhbmQgcmVnaXN0ZXIg
dGhlIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUKKyAgICAgICAgdG8gd2FpdCBmb3IgJ2RpZERl
dGVjdFRhZ3MnLgorICAgICAgICAzKSBXaGVuIHRhZ3MgYXJlIGRldGVjdGVkLCBOZmNDb25uZWN0
aW9uIHdpbGwgZGV0ZXJtaW5lIGlmIGl0IG1lZXRzIG91ciByZXF1cmllbWVudHM6IHsgdHlwZSwg
Y29ubmVjdGFiaWxpdHksIGZpZG8gYXBwbGV0IGF2YWlsYWJpbGl0eSB9LgorICAgICAgICBUaGUg
Zmlyc3QgdGFnIHRoYXQgbWVldHMgYWxsIHJlcXVpcmVtZW50IHdpbGwgdGhlbiBiZSByZXR1cm5l
ZCBmb3IgV2ViQXV0aG4gb3BlcmF0aW9ucy4KKyAgICAgICAgNCkgVGhlIGZpcnN0IFdlYkF1dGhu
IG9wZXJhdGlvbiBpcyB0byBzZW5kIGF1dGhlbnRpY2F0b3JHZXRJbmZvIGNvbW1hbmQgdG8gZGV0
ZXJtaW5lIHRoZSBzdXBwb3J0ZWQgcHJvdG9jb2wsIGFuZCB0aGVuIGluaXRpYWxpemUgY29ycmVz
cG9uZGluZworICAgICAgICBhdXRoZW50aWNhdG9ycy4gTm90ZWQsIHRoZSBzZW5kaW5nL3JlY2Vp
dmluZyBvZiB0aGlzIGNvbW1hbmQgaXMgbm93IGFic3RyYWN0ZWQgaW50byBGaWRvU2VydmljZSB3
aGljaCB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgSGlkU2VydmljZSBhbmQgTmZjU2VydmljZS4KKyAg
ICAgICAgNSkgRnJvbSB0aGVuLCB0aGUgYWN0dWFsIFdlYkF1dGhuIHJlcXVlc3QsIGVpdGhlciBt
YWtlQ3JlZGVudGlhbCBvciBnZXRBc3NlcnRpb24gd2lsbCBiZSBzZW50LgorCisgICAgICAgIEZv
ciB0ZXN0aW5nLCB0aGlzIHBhdGNoIGZvbGxvd3MgdGhlIHNhbWUgZmxvdyBhcyB3ZWxsLgorICAg
ICAgICAxKSBNb2NrTmZjU2VydmljZSBvdmVycmlkZXMgTmZjU2VydmljZSB0byBtb2NrIHRoZSBi
ZWhhdmlvciBvZiBORkMgVGFncyBkaXNjb3ZlcnkuCisgICAgICAgIDIpIFRoZSBzYW1lIGNsYXNz
IGFsc28gc3dpenpsZXMgbWV0aG9kcyBmcm9tIE5GUmVhZGVyU2Vzc2lvbiB0byBtb2NrIHRhZyBj
b25uZWN0aW9uIGFuZCBjb21tdW5pY2F0aW9uLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL0Nv
Y29hL05lYXJGaWVsZFNQSS5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbDo6Y29sbGVjdFRyYW5zcG9ydHMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vy
dmljZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZTo6Y3JlYXRlTW9jayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0hpZFNlcnZpY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6SGlkU2Vy
dmljZSk6CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmRldmljZUFkZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6SGlkU2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFy
RmllbGRTb2Z0TGluay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
LmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5l
Y3Rpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
Zmlkbzo6Y29tcGFyZVZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjpO
ZmNDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVjdGlvbjo6fk5mY0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp0cmFuc2FjdCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OmRpZERldGVjdFRhZ3MgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTmZjU2VydmljZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6
Ok5mY1NlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjp+TmZjU2VydmljZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OmRpZENvbm5lY3RUYWcpOgorICAgICAgICAo
V2ViS2l0OjpOZmNTZXJ2aWNlOjpzdGFydERpc2NvdmVyeUludGVybmFsKToKKyAgICAgICAgKFdl
YktpdDo6TmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisg
ICAgICAgICgtW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgaW5pdFdpdGhDb25uZWN0aW9uOl0p
OgorICAgICAgICAoLVtXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIHJlYWRlclNlc3Npb246ZGlk
RGV0ZWN0VGFnczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTmZjU2VydmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS01vY2tORlRhZyB0eXBlXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIHRlY2hub2xv
Z3ldKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgVUlEXSk6CisgICAgICAgICgtW1dLTW9ja05G
VGFnIHRhZ0lEXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIEFwcERhdGFdKToKKyAgICAgICAg
KC1bV0tNb2NrTkZUYWcgbmRlZkF2YWlsYWJpbGl0eV0pOgorICAgICAgICAoLVtXS01vY2tORlRh
ZyBuZGVmTWVzc2FnZVNpemVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgbmRlZkNvbnRhaW5l
clNpemVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgZGVzY3JpcHRpb25dKToKKyAgICAgICAg
KC1bV0tNb2NrTkZUYWcgdGFnQV0pOgorICAgICAgICAoLVtXS01vY2tORlRhZyB0YWdCXSk6Cisg
ICAgICAgICgtW1dLTW9ja05GVGFnIHRhZ0ZdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaW5p
dFdpdGhORlRhZzpdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaXNFcXVhbFRvTkZUYWc6XSk6
CisgICAgICAgICgtW1dLTW9ja05GVGFnIGluaXRXaXRoVHlwZTpdKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a05mY1NlcnZpY2U6OnRyYW5zY2VpdmUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2Vydmlj
ZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tOZmNTZXJ2
aWNlOjpkZXRlY3RUYWdzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cE5mY0RyaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpD
dGFwTmZjRHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6dHJhbnNhY3Qp
OgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpyZXNwb25kQXN5bmMgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0ZpZG9TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2
aWNlOjpGaWRvU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpnZXRJbmZv
KToKKyAgICAgICAgKFdlYktpdDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE5LTA4LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CiAKICAgICAgICAgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gc2hv
dWxkIGJlIGEgdmFsdWUgaW4gSW1hZ2VPcmllbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5kZXggMjExZTNjODFm
M2YwZGUyZmU1YmNiZmNlNjNlM2U0ZmM4MTUwMmEyMC4uZjI2Y2FlYThmNzIxMzE1NmY2OTdhNjM4
MWZjNjAxNWMwMzQ1ZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC0yMjMsNiArMjIzLDI1IEBAIGNvbnN0IGNo
YXIga1UyZlZlcnNpb25bXSA9ICJVMkZfVjIiOwogY29uc3QgdWludDMyX3Qga0NUQVBISURVc2Fn
ZVBhZ2UgPSAweEYxRDA7CiBjb25zdCB1aW50MzJfdCBrQ1RBUEhJRFVzYWdlID0gMHgwMTsKIAor
Ly8gQ1RBUE5GQyBBcHBsZXQgc2VsZWN0aW9uIGNvbW1hbmQgYW5kIHJlc3BvbnNlcworLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNuZmMt
YXBwbGV0LXNlbGVjdGlvbgorY29uc3QgdWludDhfdCBrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkNv
bW1hbmRbXSA9IHsKKyAgICAweDAwLCAweEE0LCAweDA0LCAweDAwLCAvLyBDTEEsIElOUywgUDEs
IFAyCisgICAgMHgwOCwgLy8gTAorICAgIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NDcsIC8v
IFJJRAorICAgIDB4MkYsIDB4MDAsIDB4MDEgLy8gUElYCit9OworCitjb25zdCB1aW50OF90IGtD
VEFQTkZDQXBwbGV0U2VsZWN0aW9uVTJmW10gPSB7CisgICAgMHg1NSwgMHgzMiwgMHg0NiwgMHg1
RiwgMHg1NiwgMHgzMiwgLy8gVmVyc2lvbgorICAgIDB4OTAsIDB4MDAgLy8gQVBEVSByZXNwb25z
ZSBjb2RlCit9OworCitjb25zdCB1aW50OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ3RhcFtd
ID0geworICAgIDB4NDYsIDB4NDksIDB4NDQsIDB4NGYsIDB4NWYsIDB4MzIsIDB4NWYsIDB4MzAs
IC8vIFZlcnNpb24KKyAgICAweDkwLCAweDAwIC8vIEFQRFUgcmVzcG9uc2UgY29kZQorfTsKKwog
fSAvLyBuYW1lc3BhY2UgZmlkbwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTczYTUzYTg1ZmJhYTZlODk1ODQzMTZlNzM2M2VlMTk1Y2Q2NGQ3MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxOZWFy
RmllbGQvTmVhckZpZWxkLmg+CisKKyNlbHNlCisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBORkZlYXR1cmUpIHsKKyAgICBORkZlYXR1cmVSZWFkZXJNb2RlICAgICAgICAgICAgICAg
ICA9IDEgPDwgMCwKK307CisKK3R5cGVkZWYgTlNfRU5VTSh1aW50MzJfdCwgTkZUYWdUeXBlKSB7
CisgICAgTkZUYWdUeXBlVW5rbm93biAgICA9IDAsCisgICAgTkZUYWdUeXBlR2VuZXJpYzRBICA9
IDMsCit9OworCitAcHJvdG9jb2wgTkZUYWdBCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZ0IKK0Bl
bmQKKworQHByb3RvY29sIE5GVGFnRgorQGVuZAorCitAcHJvdG9jb2wgTkZUYWcgPE5TT2JqZWN0
PgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBORlRhZ1R5cGUgdHlwZTsKK0BlbmQK
KworQGludGVyZmFjZSBORlRhZyA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZywgTkZUYWcsIE5G
VGFnQSwgTkZUYWdCLCBORlRhZ0Y+CitAZW5kCisKK0Bwcm90b2NvbCBORlNlc3Npb24gPE5TT2Jq
ZWN0PgorLSAodm9pZCkgZW5kU2Vzc2lvbjsKK0BlbmQKKworQGludGVyZmFjZSBORlNlc3Npb24g
OiBOU09iamVjdCA8TkZTZXNzaW9uPgorQGVuZAorCitAcHJvdG9jb2wgTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGU7CisKK0BpbnRlcmZhY2UgTkZSZWFkZXJTZXNzaW9uIDogTkZTZXNzaW9uCitAcHJv
cGVydHkgKGFzc2lnbikgaWQ8TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOworCist
IChCT09MKSBzdGFydFBvbGxpbmc7CistIChCT09MKSBzdG9wUG9sbGluZzsKKy0gKEJPT0wpIGNv
bm5lY3RUYWc6KE5GVGFnKil0YWc7CistIChCT09MKSBkaXNjb25uZWN0VGFnOworLSAoTlNEYXRh
KikgdHJhbnNjZWl2ZTooTlNEYXRhKiljYXBkdTsKKy0gKE5TRXJyb3IgKikgdXBkYXRlVUlBbGVy
dE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorLSAodm9pZCkgcmVhZGVyU2Vz
c2lvbjooTkZSZWFkZXJTZXNzaW9uKil0aGVTZXNzaW9uIGRpZERldGVjdFRhZ3M6KE5TQXJyYXk8
TkZUYWcgKj4gKil0YWdzOworQGVuZAorCitAaW50ZXJmYWNlIE5GSGFyZHdhcmVNYW5hZ2VyIDog
TlNPYmplY3QKKysgKGluc3RhbmNldHlwZSkgc2hhcmVkSGFyZHdhcmVNYW5hZ2VyOworLSAoTlNP
YmplY3Q8TkZTZXNzaW9uPiAqKSBzdGFydFJlYWRlclNlc3Npb25XaXRoQWN0aW9uU2hlZXRVSToo
dm9pZCheKShORlJlYWRlclNlc3Npb24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9yKSl0aGVTdGFy
dENhbGxiYWNrOworLSAoQk9PTClhcmVGZWF0dXJlc1N1cHBvcnRlZDooTkZGZWF0dXJlKWZlYXR1
cmVNYXNrIG91dEVycm9yOihOU0Vycm9yKiopb3V0RXJyb3I7CitAZW5kCisKKyNlbmRpZiAvLyBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDRiYzIwZmQ1MzE2Y2MwM2YyOTdkOTRlYjIxYTRlNjJjNWFjYzI0MmQuLjA4
MGQwYjM4ODJmOGM1YjQwNmM3MGRlYWZhZjA2ZjYyNzcwOTQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NDA3LDYgKzQwNyw4IEBAIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5jcHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1
dGhlbnRpY2F0b3IuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlk
RHJpdmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZl
ci5jcHAKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcAog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKIAog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDMwZjQ4OGFiNTgwODkxZTk5MzU0NTJkNmI2
MTM4ZTAzY2JiODAyY2UuLmJkOTk1ZTk1NmY4ZWY2YTNmOGIxMjFhZTBiZWI5YmI0ZmNmYzJlNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ5Niw5ICs0OTYsMTQgQEAgVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24u
bW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KK1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBAbm8t
dW5pZnkKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1t
CitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQorVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0K
IAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbQor
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KIAogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAppbmRleCA5NmIyMzM3NDJjMDlhYjYzM2RlZWQ0Mzk0NzkwZmUxYTQzNmIyZGNjLi5l
MWQ0OTAyMzYwZGQxMWI4YzA1M2ZhNTgxMzc2NGRiNzExNDBjMDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAK
QEAgLTY2OSw2ICs2NjksMzAgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29u
ZmlndXJhdGlvbi5oaWQgPSBXVEZNb3ZlKGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gbmZj
UmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIk5mYyIpKS5nZXQoKSkpKSB7CisgICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjIG5mYzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0
Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIp
KS5nZXQoKSkpKS0+c3RyaW5nKCk7CisgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCisg
ICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246Ok5mYzo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgICAgIGlmIChlcnJvciA9PSAibm8t
dGFncyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vVGFnczsKKyAgICAgICAgaWYgKGVycm9y
ID09ICJ3cm9uZy10YWctdHlwZSIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlw
ZTsKKyAgICAgICAgaWYgKGVycm9yID09ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAgICAgICBu
ZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5m
Yzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnM7CisgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNpb3Vz
LXBheWxvYWQiKQorICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOworCisg
ICAgICAgIGlmIChhdXRvIHBheWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAgbmZj
LnBheWxvYWRCYXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdW
ZWN0b3IoKTsKKworICAgICAgICBpZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKKyAg
ICAgICAgICAgIG5mYy5tdWx0aXBsZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRh
Z3MpOworCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOworICAgIH0K
KwogICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXgg
MmMwODQ0NTc4NTdkNDEwOWM4NDMxMTU5MTgzMGUzNGIyYTI1YjZkZi4uMGQ3YjY2MTNmZjZhZTZk
NmE4NTkxYjZkYzA4M2EzMWNlYWQ3MjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcApAQCAtMzgsMTUgKzM4LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFt
ZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWwgewogCiAjaWYgUExBVEZPUk0oTUFD
KQotY29uc3Qgc2l6ZV90IG1heFRyYW5zcG9ydE51bWJlciA9IDI7Citjb25zdCBzaXplX3QgbWF4
VHJhbnNwb3J0TnVtYmVyID0gMzsKICNlbHNlCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVt
YmVyID0gMTsKK2NvbnN0IHNpemVfdCBtYXhUcmFuc3BvcnROdW1iZXIgPSAyOwogI2VuZGlmCiAK
IC8vIFN1Z2dlc3RlZCBieSBXZWJBdXRoTiBzcGVjIGFzIG9mIDcgQXVndXN0IDIwMTguCiBjb25z
dCB1bnNpZ25lZCBtYXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAKLS8vIEZJWE1FKDE4ODYyNCwg
MTg4NjI1KTogU3VwcG9ydCBORkMgYW5kIEJMRSBhdXRoZW50aWNhdG9ycy4KKy8vIEZJWE1FKDE4
ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhlbnRpY2F0b3JzLgogc3RhdGljIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNy
aXRlcmlhPiYgYXV0aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFu
YWdlcjo6VHJhbnNwb3J0U2V0IHJlc3VsdDsKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0
aW9uYWw8UHVibGkKICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQo
QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTY5LDcgKzcxLDExIEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6VXNiKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworI2Vsc2UKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSByZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CiAjZW5kaWYKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGljIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVj
dG9yPFB1YmxpY0sKICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQo
QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTEwMCw4ICsxMDgsOSBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRy
YW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAg
ICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpVc2IpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgorICAgICAgICAg
ICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5z
cG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQogICAgICAg
ICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CkBAIC0x
MDksNiArMTE4LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQg
Y29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAgaWYgKCFyZXN1
bHQuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSAmJiBhbGxvd0NyZWRlbnRp
YWwudHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpKQogICAg
ICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogI2VuZGlm
CisgICAgICAgIGlmICghcmVzdWx0LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5m
YykgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRy
YW5zcG9ydDo6TmZjKSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5z
cG9ydDo6TmZjKTsKICAgICAgICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVt
YmVyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5kZXggZjQ1NjU3Yjk1OTcwOTgw
ZjRjMWY0NWVhMzE4MGMzZTc3MGY1ODA3My4uMTE1MmQzMWQ0YTQ1YzMyNzM0Y2RiYTkzMmFlMGUz
OGE5NmUwMmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgog
I2luY2x1ZGUgIk1vY2tIaWRTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiTW9ja0xvY2FsU2VydmljZS5o
IgorI2luY2x1ZGUgIk1vY2tOZmNTZXJ2aWNlLmgiCisjaW5jbHVkZSAiTmZjU2VydmljZS5oIgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNiAr
NDcsOCBAQCBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGUoVwogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6VXNiOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxIaWRT
ZXJ2aWNlPihvYnNlcnZlcik7CiAjZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6Ok5mYzoKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmZjU2Vydmlj
ZT4ob2JzZXJ2ZXIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbFNlcnZpY2U+KG9ic2VydmVyKTsK
QEAgLTYwLDYgKzY0LDggQEAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
PiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW8KICAgICBjYXNlIFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYjoKICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWVSZWY8TW9ja0hpZFNlcnZpY2U+KG9ic2VydmVyLCBjb25maWd1cmF0aW9uKTsKICNlbmRpZgor
ICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2NrTmZjU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3VyYXRp
b24pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2NrTG9jYWxTZXJ2aWNlPihvYnNlcnZlciwgY29uZmln
dXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmgKaW5kZXggN2QyZDM1ZjI0N2RlZDAyZTA2
ZjRkNmIxNWQzYTlkNzU0MWVkMmFjZi4uZThlYzIzY2JiMjEwMjFmNTY2ZGQ0ZDgxODczZjk0YmUw
MGMwYWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaApAQCAtMjcsMTcgKzI3LDE2IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCiAj
aW5jbHVkZSA8SU9LaXQvaGlkL0lPSElETWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBDdGFwSGlkRHJpdmVyOwogY2xhc3MgSGlkQ29ubmVjdGlvbjsKIAotY2xhc3MgSGlk
U2VydmljZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitjbGFzcyBI
aWRTZXJ2aWNlIDogcHVibGljIEZpZG9TZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBI
aWRTZXJ2aWNlKE9ic2VydmVyJik7CiAgICAgfkhpZFNlcnZpY2UoKTsKQEAgLTUxLDExICs1MCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKTsK
ICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBjcmVhdGVIaWRDb25uZWN0aW9u
KElPSElERGV2aWNlUmVmKSBjb25zdDsKIAotICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRl
ckdldEluZm8oQ3RhcEhpZERyaXZlciogZGV2aWNlUmVmLCBWZWN0b3I8dWludDhfdD4mJiBpbmZv
KTsKLQogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKLSAgICAvLyBL
ZWVwaW5nIGRyaXZlcnMgYWxpdmUgd2hlbiB0aGV5IGFyZSBpbml0aWFsaXppbmcgYXV0aGVudGlj
YXRvcnMuCi0gICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4+IG1fZHJp
dmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2Uu
bW0KaW5kZXggOWVhZTE4ZWRkNWY0ZDJkYzVkZjM4ZTk2ZDA1MDUwOTNiY2E5YjM5OC4uZWYwNWQ0
MmY3NjE2MjNjNWI0ZjliNDJiZDA0NDdiMWVjNzNkNzNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLm1tCkBAIC0yOCwxNSArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExB
VEZPUk0oTUFDKQogCi0jaW1wb3J0ICJDdGFwQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCAiQ3Rh
cEhpZERyaXZlci5oIgogI2ltcG9ydCAiSGlkQ29ubmVjdGlvbi5oIgotI2ltcG9ydCAiVTJmQXV0
aGVudGljYXRvci5oIgotI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2Uu
aD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIGZpZG87CkBAIC01Niw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZVJlbW92
ZWRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVm
CiB9CiAKIEhpZFNlcnZpY2U6OkhpZFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDog
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCisgICAgOiBGaWRvU2Vydmlj
ZShvYnNlcnZlcikKIHsKICAgICBtX21hbmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0Rp
Y3Rpb25hcnkgKm1hdGNoaW5nRGljdGlvbmFyeSA9IEB7CkBAIC05MiwzMiArODUsNyBAQCBVbmlx
dWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISURE
ZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
dGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBh
dXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3Qo
ZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRo
ZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0g
ZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewotICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVBZGREZXZpY2VBZnRlckdldElu
Zm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQg
PSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250
aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50
OF90PiYmIHJlc3BvbnNlKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBk
cml2ZXIgPSBtX2RyaXZlcnMudGFrZShwdHIpOwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZl
cigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBp
bmZvID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYm
IGluZm8tPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52
ZXJzaW9ucygpLmVuZCgpKSB7Ci0gICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRl
ZChDdGFwQXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5m
bykpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBh
cnNlIGEgY3RhcCBnZXQgaW5mbyByZXNwb25zZS4iKTsKLSAgICBkcml2ZXItPnNldFByb3RvY29s
KFByb3RvY29sVmVyc2lvbjo6a1UyZik7Ci0gICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFk
ZGVkKFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJ
bmZvKHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihk
ZXZpY2UpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExp
bmsuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05l
YXJGaWVsZFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUwNWZhYzIyYjlkNDA1ZjUzMjg5Nzc4YWU3
MDE1YTBiODBlNGIzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikK
KworI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFdlYktpdCwgTmVhckZpZWxkKTsKKwor
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBORlRhZyk7CitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihXZWJLaXQsIE5GU2Vzc2lvbik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihXZWJLaXQsIE5GUmVhZGVyU2Vzc2lvbik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihXZWJLaXQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
NTQ0MjMzOTQ0YjAyZmE1NWVmZGU2Y2Y0YTc0NDI5ZDBlNWFjOTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmll
bGRTb2Z0TGluay5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViS2l0LCBO
ZWFyRmllbGQpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVs
ZCwgTkZUYWcpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBOZWFyRmllbGQs
IE5GU2Vzc2lvbik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVs
ZCwgTkZSZWFkZXJTZXNzaW9uKTsKKworI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX09QVElPTkFMKFdlYktpdCwgTmVhckZpZWxkLCBORkhhcmR3YXJlTWFuYWdl
cik7CisjZWxzZQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBOZWFyRmllbGQs
IE5GSGFyZHdhcmVNYW5hZ2VyKTsKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL05mY0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODA4MzQ1MDY2MDkz
NGUxNTdkMDUxNWY1MmZhYjBkNmFkMjg4MTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIE5GUmVhZGVyU2Vzc2lvbjsKK09CSkNfQ0xBU1MgTlNB
cnJheTsKK09CSkNfQ0xBU1MgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5mY1NlcnZpY2U7CisKK2NsYXNzIE5mY0Nvbm5lY3Rpb24gOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmZjQ29ubmVjdGlvbj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5mY0Nvbm5lY3Rpb24pOworcHVi
bGljOgorICAgIE5mY0Nvbm5lY3Rpb24oUmV0YWluUHRyPE5GUmVhZGVyU2Vzc2lvbj4mJiwgTmZj
U2VydmljZSYpOworICAgIH5OZmNDb25uZWN0aW9uKCk7CisKKyAgICBWZWN0b3I8dWludDhfdD4g
dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgY29uc3Q7CisKKyAgICAvLyBGb3IgV0tO
RlJlYWRlclNlc3Npb25EZWxlZ2F0ZQorICAgIHZvaWQgZGlkRGV0ZWN0VGFncyhOU0FycmF5ICop
IGNvbnN0OworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxORlJlYWRlclNlc3Npb24+IG1fc2Vz
c2lvbjsKKyAgICBSZXRhaW5QdHI8V0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0
ZTsKKyAgICBXZWFrUHRyPE5mY1NlcnZpY2U+IG1fc2VydmljZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9O
ZmNDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MjU3ZWI5MTBlYjhiMjhlODg4NzE5MDY0MDdl
ZDYwODIzY2IyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZmNDb25uZWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZmNTZXJ2aWNlLmgiCisj
aW1wb3J0ICJXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Zp
ZG9Db25zdGFudHMuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCituYW1lc3BhY2UgeworaW5saW5lIGJv
b2wgY29tcGFyZVZlcnNpb24oTlNEYXRhICpkYXRhLCBjb25zdCB1aW50OF90IHZlcnNpb25bXSwg
c2l6ZV90IHZlcnNpb25TaXplKQoreworICAgIGlmIChkYXRhLmxlbmd0aCAhPSB2ZXJzaW9uU2l6
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhbWVtY21wKGRhdGEuYnl0ZXMs
IHZlcnNpb24sIHZlcnNpb25TaXplKTsKK30KK30gLy8gbmFtZXNwYWNlCisKK05mY0Nvbm5lY3Rp
b246Ok5mY0Nvbm5lY3Rpb24oUmV0YWluUHRyPE5GUmVhZGVyU2Vzc2lvbj4mJiBzZXNzaW9uLCBO
ZmNTZXJ2aWNlJiBzZXJ2aWNlKQorICAgIDogbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisg
ICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aENvbm5lY3Rpb246KnRoaXNdKSkKKyAgICAsIG1fc2VydmljZShtYWtlV2Vha1B0
cihzZXJ2aWNlKSkKK3sKKyAgICBbbV9zZXNzaW9uIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0
KCldOworICAgIC8vIEZJWE1FKDIwMDkzMykKKyAgICBbbV9zZXNzaW9uIHVwZGF0ZVVJQWxlcnRN
ZXNzYWdlOkAiSG9sZCB0aGUga2V5IGFnYWluc3QgdGhlIHRvcCBvZiB5b3VyIGRldmljZS4iXTsK
KyAgICBbbV9zZXNzaW9uIHN0YXJ0UG9sbGluZ107Cit9CisKK05mY0Nvbm5lY3Rpb246On5OZmND
b25uZWN0aW9uKCkKK3sKKyAgICBbbV9zZXNzaW9uIGRpc2Nvbm5lY3RUYWddOworICAgIFttX3Nl
c3Npb24gc3RvcFBvbGxpbmddOworICAgIFttX3Nlc3Npb24gZW5kU2Vzc2lvbl07Cit9CisKK1Zl
Y3Rvcjx1aW50OF90PiBOZmNDb25uZWN0aW9uOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSBjb25zdAoreworICAgIGF1dG8gcmVzcG9uc2VEYXRhID0gW21fc2Vzc2lvbiB0cmFuc2Nl
aXZlOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCld
XTsKKworICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZTsKKyAgICByZXNwb25zZS5hcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzcG9uc2VEYXRhLmJ5dGVzKSwgcmVz
cG9uc2VEYXRhLmxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCit2b2lkIE5mY0Nv
bm5lY3Rpb246OmRpZERldGVjdFRhZ3MoTlNBcnJheSAqdGFncykgY29uc3QKK3sKKyAgICAvLyBG
SVhNRSgyMDA5MzIpCisgICAgZm9yIChORlRhZyAqdGFnIGluIHRhZ3MpIHsKKyAgICAgICAgaWYg
KHRhZy50eXBlICE9IE5GVGFnVHlwZUdlbmVyaWM0QSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoIVttX3Nlc3Npb24gY29ubmVjdFRhZzp0YWddKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgLy8gQ29uZmlybSB0aGUgRklETyBhcHBsZXQgaXMgYXZhbGlhYmxl
IGJlZm9yZSByZXR1cm4uCisgICAgICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWFwcGxldC1zZWxlY3Rpb24KKyAgICAgICAg
YXV0byB2ZXJzaW9uRGF0YSA9IFttX3Nlc3Npb24gdHJhbnNjZWl2ZTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6a0NUQVBORkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kIGxlbmd0aDpzaXplb2Yoa0NUQVBO
RkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kKV1dOworICAgICAgICBpZiAoIXZlcnNpb25EYXRhIHx8
ICghY29tcGFyZVZlcnNpb24odmVyc2lvbkRhdGEsIGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uVTJm
LCBzaXplb2Yoa0NUQVBORkNBcHBsZXRTZWxlY3Rpb25VMmYpKSAmJiAhY29tcGFyZVZlcnNpb24o
dmVyc2lvbkRhdGEsIGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ3RhcCwgc2l6ZW9mKGtDVEFQTkZD
QXBwbGV0U2VsZWN0aW9uQ3RhcCkpKSkgeworICAgICAgICAgICAgW21fc2Vzc2lvbiBkaXNjb25u
ZWN0VGFnXTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFtX3NlcnZpY2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2VydmljZS0+ZGlk
Q29ubmVjdFRhZygpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZp
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDlmZjNjZTNkMGJlYjM5NmY5ZjY2M2Y1ZjQyNjgxODg5NjMwNzFi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjU2VydmljZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJGaWRvU2Vy
dmljZS5oIgorCitPQkpDX0NMQVNTIE5GUmVhZGVyU2Vzc2lvbjsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEN0YXBOZmNEcml2ZXI7CisKK2NsYXNzIE5mY1NlcnZpY2UgOiBwdWJsaWMg
Rmlkb1NlcnZpY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5mY1NlcnZpY2UoT2JzZXJ2ZXIm
KTsKKyAgICB+TmZjU2VydmljZSgpOworCisgICAgLy8gRm9yIE5mY0Nvbm5lY3Rpb24uCisgICAg
dm9pZCBkaWRDb25uZWN0VGFnKCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBPbmx5IG9uZSByZWFk
ZXIgc2Vzc2lvbiBpcyBhbGxvd2VkIHBlciB0aW1lLgorICAgIC8vIEtlZXAgdGhlIHJlYWRlciBz
ZXNzaW9uIGFsaXZlIGhlcmUgd2hlbiBpdCB0cmllcyB0byBjb25uZWN0IHRvIGEgdGFnLgorICAg
IHN0ZDo6dW5pcXVlX3B0cjxDdGFwTmZjRHJpdmVyPiBtX2RyaXZlcjsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIHN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwoKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRpbnVl
QWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKTsKKworICAg
IC8vIE92ZXJyaWRlZCBieSBNb2NrTmZjU2VydmljZS4KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1TdGFydERpc2NvdmVyeSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmE5ZWU3NGYyNGMxOTY2OWQyNjFlNjg3NjQ2NzI5MDg2OWE4NzU2NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05m
Y1NlcnZpY2UubW0KQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiTmZjU2VydmljZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKwor
I2ltcG9ydCAiQ3RhcE5mY0RyaXZlci5oIgorI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1w
b3J0ICJOZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisKKyNpbXBvcnQgIk5l
YXJGaWVsZFNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IGZpZG87CisKK05mY1NlcnZpY2U6Ok5mY1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQorICAg
IDogRmlkb1NlcnZpY2Uob2JzZXJ2ZXIpCit7Cit9CisKK05mY1NlcnZpY2U6On5OZmNTZXJ2aWNl
KCkKK3sKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpkaWRDb25uZWN0VGFnKCkKK3sKKyAgICBnZXRJ
bmZvKFdURk1vdmUobV9kcml2ZXIpKTsKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpzdGFydERpc2Nv
dmVyeUludGVybmFsKCkKK3sKKyAgICBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCk7Cit9CisKK3Zv
aWQgTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCit7CisgICAgaWYgKCFbW2dl
dE5GSGFyZHdhcmVNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRIYXJkd2FyZU1hbmFnZXJdIGFyZUZlYXR1
cmVzU3VwcG9ydGVkOk5GRmVhdHVyZVJlYWRlck1vZGUgb3V0RXJyb3I6bmlsXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gV2lsbCBiZSBleGVjdXRlZCBpbiBhIGRpZmZlcmVudCB0aHJlYWQu
CisgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHRoaXNdIChORlJlYWRlclNlc3Npb24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzdGFydCBhIE5G
QyByZWFkZXIgc2Vzc2lvbjogJUAiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBSZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiByZXRhaW5TZXNzaW9u
ID0gc2Vzc2lvbjsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywg
dGhpcywgc2Vzc2lvbiA9IHJldGFpblNlc3Npb25dICgpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAgIFtzZXNzaW9uIGVuZFNlc3Npb25dOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
Q3RhcE5mY0RyaXZlciBhbmQgTmZjQ29ubmVjdGlvbiB3aWxsIHRha2UgY2FyZSBvZiBwb2xsaW5n
IHRhZ3MgYW5kIGNvbm5lY3RpbmcgdG8gdGhlbS4KKyAgICAgICAgICAgIG1fZHJpdmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDdGFwTmZjRHJpdmVyPihtYWtlVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+
KFdURk1vdmUoc2Vzc2lvbiksICp0aGlzKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtb
Z2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygpIHNoYXJlZEhhcmR3YXJlTWFuYWdlcl0gc3RhcnRS
ZWFkZXJTZXNzaW9uV2l0aEFjdGlvblNoZWV0VUk6Y2FsbGJhY2suZ2V0KCldOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWUwYjk2Yzc2NjBkNDliY2M4Mzc1NmFlNWViZGQ4MGFhMDZlOTRlMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZS
ZWFkZXJTZXNzaW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZWFyRmllbGRT
UEkuaCIKKyNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgTmZjQ29ubmVjdGlvbjsKK30KKworQGludGVyZmFjZSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVn
YXRlIDogTlNPYmplY3QgPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPgorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb24mKWNvbm5lY3Rpb247
CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vz
c2lvbkRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjVkNzA4
MzIzMmEwZTA3YTNhMGYzMTZhMTYyMTJlYzRhMTZhNmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNl
c3Npb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgiCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgorCisjaW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCitAaW1wbGVt
ZW50YXRpb24gV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSB7CisgICAgV2Vha1B0cjxXZWJLaXQ6
Ok5mY0Nvbm5lY3Rpb24+IF9jb25uZWN0aW9uOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb24mKWNvbm5lY3Rpb24KK3sKKyAgICBp
ZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBfY29ubmVjdGlvbiA9IG1ha2VXZWFr
UHRyKGNvbm5lY3Rpb24pOworICAgIHJldHVybiBzZWxmOworfQorCisvLyBFeGVjdXRlZCBpbiBh
IGRpZmZlcmVudCB0aHJlYWQuCistICh2b2lkKXJlYWRlclNlc3Npb246KE5GUmVhZGVyU2Vzc2lv
biopdGhlU2Vzc2lvbiBkaWREZXRlY3RUYWdzOihOU0FycmF5PE5GVGFnICo+ICopdGFncworewor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgUmV0YWluUHRyPE5TQXJyYXk+
IHJldGFpblRhZ3MgPSB0YWdzOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVj
dGlvbiA9IF9jb25uZWN0aW9uLCB0YWdzID0gcmV0YWluVGFnc10geworICAgICAgICBpZiAoIWNv
bm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbm5lY3Rpb24tPmRpZERl
dGVjdFRhZ3ModGFncy5nZXQoKSk7CisgICAgfSk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4MjZhMjZiMzMwMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05m
Y1NlcnZpY2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk5mY1NlcnZpY2UuaCIKKworT0JKQ19DTEFTUyBO
U0RhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjsKKworY2xhc3MgTW9ja05mY1NlcnZpY2UgZmluYWwgOiBwdWJsaWMg
TmZjU2VydmljZSB7CitwdWJsaWM6CisgICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25z
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CisKKyAgICBOU0RhdGEqIHRy
YW5zY2VpdmUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3Zlcnko
KSBmaW5hbDsKKworICAgIHZvaWQgZGV0ZWN0VGFncygpIGNvbnN0OworCisgICAgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNT
ZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTmZjU2VydmljZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNjMWE0OTIwY2JkNTMxNmE0MDMyZDdl
YWE4YzVmYTY0ZTBkN2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMCwwICsxLDI1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTW9ja05mY1Nl
cnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisjaW1wb3J0ICJDdGFwTmZjRHJpdmVy
LmgiCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIK
KyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCisj
aW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCitAaW50ZXJmYWNlIFdLTW9ja05GVGFnIDog
TlNPYmplY3QgPE5GVGFnPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihORlRhZ1R5
cGUpdHlwZTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tNb2NrTkZUYWcgeworICAgIE5G
VGFnVHlwZSBfdHlwZTsKKyAgICBORlRlY2hub2xvZ3kgX3RlY2hub2xvZ3k7CisgICAgTlNEYXRh
ICpfdGFnSUQ7CisgICAgTlNEYXRhICpfYXBwRGF0YTsKKyAgICBOU0RhdGEgKl91aWQ7CisgICAg
TlNTdHJpbmcgKl9kZXNjcmlwdGlvbjsKKyAgICBORk5kZWZBdmFpbGFiaWxpdHkgX25kZWZBdmFp
bGFiaWxpdHk7CisgICAgc2l6ZV90IF9uZGVmTWVzc2FnZVNpemU7CisgICAgc2l6ZV90IF9uZGVm
Q29udGFpbmVyU2l6ZTsKK30KKworLSAoTkZUYWdUeXBlKXR5cGUKK3sKKyAgICByZXR1cm4gX3R5
cGU7Cit9CisKKy0gKE5GVGVjaG5vbG9neSl0ZWNobm9sb2d5Cit7CisgICAgcmV0dXJuIF90ZWNo
bm9sb2d5OworfQorCistIChOU0RhdGEgKilVSUQKK3sKKyAgICByZXR1cm4gX3VpZDsKK30KKwor
LSAoTlNEYXRhICopdGFnSUQKK3sKKyAgICByZXR1cm4gX3RhZ0lEOworfQorCitBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAoTlNEYXRhICopQXBwRGF0YQoreworICAg
IHJldHVybiBfYXBwRGF0YTsKK30KK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAorCistIChORk5kZWZBdmFpbGFiaWxpdHkpbmRlZkF2YWlsYWJpbGl0eQoreworICAgIHJldHVy
biBfbmRlZkF2YWlsYWJpbGl0eTsKK30KKworLSAoc2l6ZV90KW5kZWZNZXNzYWdlU2l6ZQorewor
ICAgIHJldHVybiBfbmRlZk1lc3NhZ2VTaXplOworfQorCistIChzaXplX3QpbmRlZkNvbnRhaW5l
clNpemUKK3sKKyAgICByZXR1cm4gX25kZWZDb250YWluZXJTaXplOworfQorCistIChOU1N0cmlu
ZyopZGVzY3JpcHRpb24KK3sKKyAgICByZXR1cm4gX2Rlc2NyaXB0aW9uOworfQorCistIChpZDxO
RlRhZ0E+KXRhZ0EKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChpZDxORlRhZ0E+KXRhZ0IK
K3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChpZDxORlRhZ0E+KXRhZ0YKK3sKKyAgICByZXR1
cm4gbmlsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhORlRhZzooaWQ8TkZUYWc+KXRh
ZworeworICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKKyAgICAgICAgX3R5cGUgPSB0
YWcudHlwZTsKKyAgICAgICAgX3RlY2hub2xvZ3kgPSB0YWcudGVjaG5vbG9neTsKKyAgICAgICAg
X3VpZCA9IFt0YWcuVUlEIGNvcHldOworICAgICAgICBfdGFnSUQgPSBbdGFnLnRhZ0lEIGNvcHld
OworICAgICAgICBfZGVzY3JpcHRpb24gPSBbdGFnLmRlc2NyaXB0aW9uIGNvcHldOworICAgICAg
ICBfbmRlZkF2YWlsYWJpbGl0eSA9IHRhZy5uZGVmQXZhaWxhYmlsaXR5OworICAgICAgICBfbmRl
Zk1lc3NhZ2VTaXplID0gdGFnLm5kZWZNZXNzYWdlU2l6ZTsKKyAgICAgICAgX25kZWZDb250YWlu
ZXJTaXplID0gdGFnLm5kZWZDb250YWluZXJTaXplOworICAgIH0KKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAoQk9PTClpc0VxdWFsVG9ORlRhZzooaWQ8TkZUYWc+KXRhZworeworICAgIHJldHVy
biBOTzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTkZUYWdUeXBlKXR5cGUK
K3sKKyAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBfdHlwZSA9IHR5cGU7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2lu
ZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIE1vY2sgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpOZmM7CisKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBpZDxORlJlYWRlclNlc3Np
b25EZWxlZ2F0ZT4gZ2xvYmFsTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CitzdGF0aWMgTW9ja05m
Y1NlcnZpY2UqIGdsb2JhbE5mY1NlcnZpY2U7CisKK3N0YXRpYyB2b2lkIE5GUmVhZGVyU2Vzc2lv
blNldERlbGVnYXRlKGlkLCBTRUwsIGlkPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSkKK3sKKyAgICBnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworfQor
CitzdGF0aWMgQk9PTCBORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbChpZCwgU0VMLCBORlRh
ZyAqKQoreworICAgIHJldHVybiBOTzsKK30KKworc3RhdGljIEJPT0wgTkZSZWFkZXJTZXNzaW9u
Q29ubmVjdFRhZyhpZCwgU0VMLCBORlRhZyAqKQoreworICAgIHJldHVybiBZRVM7Cit9CisKK3N0
YXRpYyBOU0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUoaWQsIFNFTCwgTlNEYXRhICop
Cit7CisgICAgaWYgKCFnbG9iYWxOZmNTZXJ2aWNlKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiBnbG9iYWxOZmNTZXJ2aWNlLT50cmFuc2NlaXZlKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlCisKK01vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIs
IGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CisgICAgOiBOZmNTZXJ2aWNlKG9ic2VydmVyKQorICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pCit7Cit9CisKK05TRGF0YSogTW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUoKQor
eworICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gcmVzdWx0ID0gW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzptX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2Fk
QmFzZTY0WzBdIG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFj
dGVyc107CisgICAgbV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NC5yZW1vdmUoMCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1T
dGFydERpc2NvdmVyeSgpCit7CisgICAgaWYgKCEhbV9jb25maWd1cmF0aW9uLm5mYykgeworICAg
ICAgICBnbG9iYWxOZmNTZXJ2aWNlID0gdGhpczsKKworICAgICAgICBNZXRob2QgbWV0aG9kVG9T
d2l6emxlMSA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNz
KCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopKTsKKyAgICAgICAgbWV0aG9kX3NldEltcGxlbWVu
dGF0aW9uKG1ldGhvZFRvU3dpenpsZTEsIChJTVApTkZSZWFkZXJTZXNzaW9uU2V0RGVsZWdhdGUp
OworCisgICAgICAgIE1ldGhvZCBtZXRob2RUb1N3aXp6bGUyID0gY2xhc3NfZ2V0SW5zdGFuY2VN
ZXRob2QoZ2V0TkZSZWFkZXJTZXNzaW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNvbm5lY3RUYWc6KSk7
CisgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6
Tm9Db25uZWN0aW9ucykKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRo
b2RUb1N3aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWdGYWlsKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dp
enpsZTIsIChJTVApTkZSZWFkZXJTZXNzaW9uQ29ubmVjdFRhZyk7CisKKyAgICAgICAgTWV0aG9k
IG1ldGhvZFRvU3dpenpsZTMgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNl
c3Npb25DbGFzcygpLCBAc2VsZWN0b3IodHJhbnNjZWl2ZTopKTsKKyAgICAgICAgbWV0aG9kX3Nl
dEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTMsIChJTVApTkZSZWFkZXJTZXNzaW9uVHJh
bnNjZWl2ZSk7CisKKyAgICAgICAgYXV0byByZWFkZXJTZXNzaW9uID0gYWRvcHROUyhbYWxsb2NO
RlJlYWRlclNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICAgICAgbV9kcml2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEN0YXBOZmNEcml2ZXI+KG1ha2VVbmlxdWVSZWY8TmZjQ29ubmVjdGlvbj4o
cmVhZGVyU2Vzc2lvbi5nZXQoKSwgKnRoaXMpKTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5kZXRlY3RUYWdzKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIExPR19FUlJPUigiTm8gbmZjIGF1dGhlbnRpY2F0b3JzIGlzIGF2YWlsYWJsZS4iKTsKK30K
Kwordm9pZCBNb2NrTmZjU2VydmljZTo6ZGV0ZWN0VGFncygpIGNvbnN0Cit7CisgICAgaWYgKG1f
Y29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6OkVycm9yOjpOb1RhZ3MpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW2NvbmZpZ3VyYXRp
b24gPSBtX2NvbmZpZ3VyYXRpb25dIHsKKyAgICAgICAgYXV0byB0YWdzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5m
Yy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5m
Yy0+bXVsdGlwbGVUYWdzKQorICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OltbV0tNb2NrTkZU
YWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVVbmtub3duXV07CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dLTW9ja05GVGFnIGFsbG9jXSBpbml0V2l0
aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24u
bmZjLT5tdWx0aXBsZVRhZ3MpCisgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6W1tXS01vY2tO
RlRhZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZUdlbmVyaWM0QV1dOworCisgICAgICAg
IFtnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSByZWFkZXJTZXNzaW9uOm5pbCBkaWREZXRl
Y3RUYWdzOnRhZ3MuZ2V0KCldOworICAgIH0pOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIGNh
bGxiYWNrLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCBmN2MzOTY5Njk1OTQxOGFiOTUwZDY3
ZjQ0MzZlY2ZlM2EzY2JmZDFjLi5mNDBhN2I3YmQ4YmUxYjdkMGIzNDI4NWJkNjY2Yzg3ZDBkY2Q3
OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtNzIsOSArNzIsMjQgQEAgc3RydWN0IE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZh
bHNlIH07CiAgICAgfTsKIAorICAgIHN0cnVjdCBOZmMgeworICAgICAgICBlbnVtIGNsYXNzIEVy
cm9yIDogdWludDhfdCB7CisgICAgICAgICAgICBTdWNjZXNzLAorICAgICAgICAgICAgTm9UYWdz
LAorICAgICAgICAgICAgV3JvbmdUYWdUeXBlLAorICAgICAgICAgICAgTm9Db25uZWN0aW9ucywK
KyAgICAgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICAgICAgfTsKKworICAgICAgICBFcnJv
ciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxv
YWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdzIHsgZmFsc2UgfTsKKyAgICB9Owor
CiAgICAgYm9vbCBzaWxlbnRGYWlsdXJlIHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxMb2NhbD4g
bG9jYWw7CiAgICAgT3B0aW9uYWw8SGlkPiBoaWQ7CisgICAgT3B0aW9uYWw8TmZjPiBuZmM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5jcHAKaW5kZXggYTAxNTVlZDFiZjYyMGY4MGE4YzRlODg2NjU1MWRjNDg2MzE0MGM2ZS4u
MGY5OTMzMzQ5OGIyYzczMDVjMzMxYTE1OGYyMWE0MWRhNDkwOWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDdGFwQXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdF
Ql9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNs
dWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSAiQ3RhcEhpZERyaXZlci5oIgpAQCAtMTE1LDQg
KzExNSw0IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSgpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZP
Uk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBB
dXRoZW50aWNhdG9yLmgKaW5kZXggMzFlODg4ODc1YTU2ZmVmOGUwOTA4MThhMTg2YzU3MTMzNTAz
Y2YzYi4uYTE4ZGYwNDk0YTk3N2U5OTA1ZDRmZTNkZTYwODI4NmNlNDc3YjA3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0
aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oPgpAQCAtNTgsNCArNTgsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5ODYzOTM2Yzk0YTJlNGE3
ZjAyZjk2YTZkZDU4YTQ2ZjQ3MjkxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKQEAgLTAs
MCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
dGFwTmZjRHJpdmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9BcGR1Q29tbWFuZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXBkdVJlc3BvbnNlLmg+Cisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1l
c3BhY2UgYXBkdTsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCitDdGFwTmZjRHJpdmVyOjpDdGFw
TmZjRHJpdmVyKFVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgOiBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworLy8gRklYTUUoMjAwOTM0
KQordm9pZCBDdGFwTmZjRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBS
ZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gRm9yIENUQVAyLCBjb21tYW5k
cyBmb2xsb3c6CisgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIu
MC1wcy0yMDE5MDEzMC9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAt
cHMtMjAxOTAxMzAuaHRtbCNuZmMtY29tbWFuZC1mcmFtaW5nCisgICAgaWYgKHByb3RvY29sKCkg
PT0gUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkgeworICAgICAgICBBcGR1Q29tbWFuZCBjb21tYW5k
OworICAgICAgICBjb21tYW5kLnNldENsYSgweDgwKTsKKyAgICAgICAgY29tbWFuZC5zZXRJbnMo
MHgxMCk7CisgICAgICAgIGNvbW1hbmQuc2V0RGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
Y29tbWFuZC5zZXRSZXNwb25zZUxlbmd0aChBcGR1Q29tbWFuZDo6a0FwZHVNYXhSZXNwb25zZUxl
bmd0aCk7CisKKyAgICAgICAgYXV0byBhcGR1UmVzcG9uc2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0
ZUZyb21NZXNzYWdlKG1fY29ubmVjdGlvbi0+dHJhbnNhY3QoY29tbWFuZC5nZXRFbmNvZGVkQ29t
bWFuZCgpKSk7CisgICAgICAgIGlmICghYXBkdVJlc3BvbnNlKSB7CisgICAgICAgICAgICByZXNw
b25kQXN5bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25zZS0+c3RhdHVzKCkgPT0gQXBkdVJlc3Bv
bnNlOjpTdGF0dXM6OlNXX0lOU19OT1RfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICAvLyBSZXR1
cm4ga0N0YXAxRXJySW52YWxpZENvbW1hbmQgaW5zdGVhZCBvZiBhbiBlbXB0eSByZXNwb25zZSB0
byBzaWduYWwgRmlkb1NlcnZpY2UgdG8gY3JlYXRlIGEgVTJGIGF1dGhlbnRpY2F0b3IKKyAgICAg
ICAgICAgIC8vIGZvciB0aGUgZ2V0SW5mbyBzdGFnZS4KKyAgICAgICAgICAgIHJlc3BvbmRBc3lu
YyhXVEZNb3ZlKGNhbGxiYWNrKSwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVz
cG9uc2VDb2RlOjprQ3RhcDFFcnJJbnZhbGlkQ29tbWFuZCkgfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25zZS0+c3RhdHVzKCkgIT0gQXBk
dVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SKSB7CisgICAgICAgICAgICByZXNwb25kQXN5
bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgLy8gRklYTUU6IFNvbWVob3cgZWxtaW5pYXRlIHRoZSBuZWVkIGZvciB0aGUg
Y29weT8KKyAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCAoVmVjdG9yPHVp
bnQ4X3Q+KGFwZHVSZXNwb25zZS0+ZGF0YSgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gRm9yIFUyRiwgVTJmQXV0aGVudGljYXRvciB3b3VsZCBoYW5kbGUgdGhlIEFQRFUg
ZW5jb2RpbmcuCisgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJm
LXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtbmZjLXByb3RvY29sLXYxLjItcHMtMjAxNzA0MTEu
aHRtbCNmcmFtaW5nCisgICAgY2FsbGJhY2sobV9jb25uZWN0aW9uLT50cmFuc2FjdChXVEZNb3Zl
KGRhdGEpKSk7Cit9CisKKy8vIFJldHVybiB0aGUgcmVzcG9uc2UgYXN5bmMgdG8gbWF0Y2ggdGhl
IEhJRCBiZWhhdmlvdXIsIHN1Y2ggdGhhdCBuZmMgY291bGQgZml0IGludG8gdGhlIGN1cnJlbnQg
aW5mcmEuCit2b2lkIEN0YXBOZmNEcml2ZXI6OnJlc3BvbmRBc3luYyhSZXNwb25zZUNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKSBjb25zdAoreworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZDAzYTgwMTA4MzBlNTQ2MjdhZTFkOWYxNDVhMDYzZGViYjdkOTVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwTmZjRHJpdmVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkN0YXBEcml2
ZXIuaCIKKyNpbmNsdWRlICJOZmNDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRz
IHRoZSBDVEFQIE5GQyBwcm90b2NvbDoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjCitjbGFzcyBDdGFwTmZjRHJpdmVyIDogcHVi
bGljIEN0YXBEcml2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEN0YXBOZmNEcml2ZXIoVW5p
cXVlUmVmPE5mY0Nvbm5lY3Rpb24+JiYpOworCisgICAgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpIGZpbmFsOworCitwcml2YXRlOgorICAg
IHZvaWQgcmVzcG9uZEFzeW5jKFJlc3BvbnNlQ2FsbGJhY2smJiwgVmVjdG9yPHVpbnQ4X3Q+JiYg
cmVzcG9uc2UpIGNvbnN0OworCisgICAgVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE4OWQ3Y2Y4
Y2RjMzkxNDNiNTNiZTk5ZTZlZDhiOGUwZTI4OGM1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRmlkb1NlcnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRl
ICJDdGFwQXV0aGVudGljYXRvci5oIgorI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIKKyNpbmNsdWRl
ICJVMmZBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlk
b0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitGaWRvU2VydmljZTo6Rmlkb1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQor
ICAgIDogQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCit7Cit9CisKK3Zv
aWQgRmlkb1NlcnZpY2U6OmdldEluZm8oc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJp
dmVyKQoreworICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgor
ICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFw
UmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNw
b25zZSkgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+Y29udGlu
dWVBZnRlckdldEluZm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgfSk7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7CisgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBGaWRv
U2VydmljZTo6Y29udGludWVBZnRlckdldEluZm8oQ3RhcERyaXZlciogcHRyLCBWZWN0b3I8dWlu
dDhfdD4mJiByZXNwb25zZSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJp
dmVyID0gbV9kcml2ZXJzLnRha2UocHRyKTsKKyAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIo
KSB8fCByZXNwb25zZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW5m
byA9IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBpZiAoaW5mbyAmJiBp
bmZvLT52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkgIT0gaW5mby0+dmVy
c2lvbnMoKS5lbmQoKSkgeworICAgICAgICBvYnNlcnZlcigpLT5hdXRoZW50aWNhdG9yQWRkZWQo
Q3RhcEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlciksIFdURk1vdmUoKmluZm8p
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJz
ZSBhIGN0YXAgZ2V0IGluZm8gcmVzcG9uc2UuIik7CisgICAgZHJpdmVyLT5zZXRQcm90b2NvbChQ
cm90b2NvbFZlcnNpb246OmtVMmYpOworICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRl
ZChVMmZBdXRoZW50aWNhdG9yOjpjcmVhdGUoV1RGTW92ZShkcml2ZXIpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1Nl
cnZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Rmlkb1NlcnZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGMzZDhkYjdkOTM5ZTA0M2E1ZGU5ZjNjOTg1Mzc2
ZjU3OGVlMDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBDdGFwRHJpdmVyOworCitjbGFzcyBGaWRvU2VydmljZSA6IHB1YmxpYyBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRmlkb1NlcnZp
Y2UoT2JzZXJ2ZXImKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZ2V0SW5mbyhzdGQ6OnVuaXF1
ZV9wdHI8Q3RhcERyaXZlcj4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb250aW51ZUFmdGVy
R2V0SW5mbyhDdGFwRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIGluZm8pOworCisgICAg
Ly8gS2VlcGluZyBkcml2ZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgZ2V0dGluZyBpbmZvIGZyb20g
ZGV2aWNlcy4KKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPj4gbV9kcml2
ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggYTU4NTY3
MmZkMmM5YzMxY2VlYzQzNjE2ZmM3MDU3ODU1NzVhYTU3Ny4uNGQxMmE5NjVkN2YwMTlhM2E1M2I5
ZmQyNmVjNmNhM2ZlMjY0YjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3Iu
Y3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVTJm
QXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFD
KQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KQEAgLTIzOCw0ICsyMzgsNCBAQCB2b2lkIFUy
ZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
QXBkdVJlc3BvbnNlJiYgYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAppbmRleCA5YTQ3NzM2ODZmNjA3
YzBiYTQwZGNjYzdmNWRmODExMDVjNTU1OTljLi5kOTA1NWNkMDU5MDE0MTVhYWQ1M2QyMTllYTEz
ZjljZWY0NjdhOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBM
QVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03OSw0ICs3OSw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiMDI4MjQ4
OTIwMDNhMDQ5ODkyOWU3MDZhNTkwNDU5YTRmODcxYWNkLi44NGEyYzhkMjEzZWJjYmQ3MDg4NzI0
MTIwMzU0ODM5NGQ1NmQ5NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckRh
dGEuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIxM2Uz
M2RhYzE5ZWMzY2Q0YTNkMjQ5MmFlOGU4ZWU0Y2VhM2FlZGYuLjBjYTM5NTE5YzI4MTEwODdiYTc3
NGQ4ODkwOTRkYWRmNTViZTg5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNiw2ICsxMDM2LDEwIEBACiAJCTUzQkE0N0QxMURD
MkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyog
TmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0NGQkJDODIyMjREMUI1MDAyNjY1NDYg
LyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0NGQkJDNzIyMjREMUIwMDAyNjY1NDYgLyogVGV4dENoZWNrZXJD
b21wbGV0aW9uLmggKi87IH07CiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQ
cm94eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9Owor
CQk1NzBEQUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQUMyMzAyNkY1QzAwRThGQzA0
IC8qIE5mY1NlcnZpY2UuaCAqLzsgfTsKKwkJNTcwREFBQzIyMzAzNzMwMzAwRThGQzA0IC8qIE5m
Y0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3MERBQUMwMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggKi87IH07CisJ
CTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDNDIz
MDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oICovOyB9OworCQk1
NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzgyMzAzODVGRDAwRThGQzA0
IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0NDMyMjI2NUNFMjAwQTFFQ0MzIC8q
IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZp
ZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9OwogCQk1NzU5N0VCOTIxODExRDlBMDAz
N0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIu
aCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VC
QjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRpY2F0b3IuaCAqLzsgfTsKQEAgLTEwNDQs
NiArMTA0OCwxMSBAQAogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50
aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0FD
OEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0I0QjQ2
MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0Nv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRp
b25YUENDb25zdGFudHMuaCAqLzsgfTsKKwkJNTdCODI2NDEyMzA0RUIzRTAwQjcyRUIwIC8qIE5l
YXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovOyB9OworCQk1
N0I4MjY0NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjgyNjQyMjMwNEYxNDAwMEI3
MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovOyB9OworCQk1N0I4MjY0NTIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxk
U29mdExpbmsubW0gKi87IH07CisJCTU3QjgyNjQ4MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2Vy
dmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdC
ODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi87IH07CisJCTU3QjgyNjRD
MjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1v
Y2tOZmNTZXJ2aWNlLmggKi87IH07CiAJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1
dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeS5oICovOyB9OwogCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAv
KiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JN
ZXNzYWdlcy5oICovOyB9OwpAQCAtMzQ2OCw2ICszNDc3LDE1IEBACiAJCTU3MEFCOTAwMjBCMjUx
NzQwMEI4QkU4NyAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4QkU4NyAvKiBT
ZWNLZXlQcm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2VjS2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcw
QjczQ0YyMzAyMzZERDAwRkFFQzUzIC8qIEN0YXBEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Rh
cERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFBQzIzMDI2RjVD
MDBFOEZDMDQgLyogTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZmNTZXJ2aWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBO
ZmNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmZjU2VydmljZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQjAyMzAyNzNEMjAwRThGQzA0IC8qIE5lYXJG
aWVsZC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE5lYXJGaWVsZC5mcmFtZXdvcms7IHBh
dGggPSBTeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9OZWFyRmllbGQuZnJhbWV3b3Jr
OyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0IC8q
IE5mY0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmZjQ29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29u
bmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5mY0Nvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzUyMzAzN0Y3
RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dpbmRvd09i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzUwNzVBNzIwQUI3NjM2MDA2OTNFQTkg
LyogV2ViQ3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNyZWRlbnRp
YWxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTBGMzJBMjAzMkQ0RTUw
MDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RL
Uk9PVDsgfTsKQEAgLTM0OTIsNiArMzUxMCwxMyBAQAogCQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQz
OEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZENvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0
QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xp
ZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29u
c3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQwMjMwNEVCM0Uw
MEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmVhckZpZWxkU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAv
KiBOZWFyRmllbGRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZWFyRmllbGRTb2Z0TGluay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZWFyRmllbGRT
b2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDYyMzA1MEM1
MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpZG9TZXJ2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAv
KiBGaWRvU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvU2VydmljZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjRBMjMwNjAzQzEwMEI3MkVCMCAvKiBN
b2NrTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTmZjU2VydmljZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05m
Y1NlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrTmZjU2VydmljZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCQkVBNkMyMkJDMEJGRTAwMjczOTk1IC8qIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRUQ2QTIxNDJF
QUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NjE4Miw2ICs2MjA3LDcgQEAKIAkJCQlBMUZCNjgyNjFGNkU1MUMxMDBDNDNGOUYgLyogQ3Jhc2hS
ZXBvcnRlckNsaWVudFNQSS5oICovLAogCQkJCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBE
ZXZpY2VJZGVudGl0eVNQSS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAvKiBE
ZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8q
IE5lYXJGaWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0MUIzQTI5RkQwMDNBNEM3RiAvKiBOU0lu
dm9jYXRpb25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFENjREQjc2MDA1RjRFRkYgLyogb2JqY1NQ
SS5oICovLAogCQkJCTBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEku
aCAqLywKQEAgLTY5NDgsNiArNjk3NCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uLmZyYW1ld29yayAqLywKKwkJCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyogTmVhckZp
ZWxkLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02OTYwLDYgKzY5ODcsMTAgQEAKIAkJCQk1NzBCNzNDRjIz
MDIzNkREMDBGQUVDNTMgLyogQ3RhcERyaXZlci5oICovLAogCQkJCTU3NTk3RUMwMjE4MThCRTIw
MDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLywKIAkJCQk1NzU5N0VCNzIxODExRDlBMDAz
N0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovLAorCQkJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMw
NCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLywKKwkJCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQg
LyogQ3RhcE5mY0RyaXZlci5oICovLAorCQkJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBG
aWRvU2VydmljZS5jcHAgKi8sCisJCQkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9T
ZXJ2aWNlLmggKi8sCiAJCQkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRp
Y2F0b3IuY3BwICovLAogCQkJCTU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50
aWNhdG9yLmggKi8sCiAJCQkpOwpAQCAtNzAyMSw2ICs3MDUyLDE0IEBACiAJCQkJNTdEQ0VEQTgy
MTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1N0RDRUQ5QTIx
NDhCMDgzMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggKi8sCiAJCQkJNTdEQ0VEQTAyMTQ4RkEw
RjAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1N0I4MjY0MjIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCAqLywKKwkJCQk1N0I4MjY0MzIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi8sCisJCQkJNTcwREFBQzAyMzAzNzMwMzAw
RThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZD
MDQgLyogTmZjQ29ubmVjdGlvbi5tbSAqLywKKwkJCQk1NzBEQUFBQzIzMDI2RjVDMDBFOEZDMDQg
LyogTmZjU2VydmljZS5oICovLAorCQkJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNT
ZXJ2aWNlLm1tICovLAorCQkJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLmggKi8sCisJCQkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0IC8qIFdL
TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcwMzgsNiArNzA3Nyw4IEBACiAJCQkJNTdE
Q0VEQzYyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8sCiAJCQkJ
NTdEQ0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLywKIAkJCQk1
N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1
N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLywKKwkJCQk1N0I4
MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UubW0gKi8sCiAJCQkJNTdEQ0VE
QkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9jazsKQEAgLTkzNDEsNiArOTM4Miw3IEBACiAJCQkJ
QTFGQjY4MjcxRjZFNTFDMTAwQzQzRjlGIC8qIENyYXNoUmVwb3J0ZXJDbGllbnRTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGlj
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0
YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMw
NCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZF
MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
NzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTkzNzIsNiArOTQxNCw3IEBACiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEVu
Y29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBF
bnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIxNDk2QjUy
NjAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2
NDgyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
MEI5NjYxQTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE5MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDYwLDYgKzk1MDMsNyBAQAogCQkJCTU3RENF
RENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9j
a0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcy
RUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURCRjIxNEYw
RENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1
cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDY3LDYgKzk1MTEsOCBAQAogCQkJCTFBRENC
ODZCMTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdGRDMxODAyMkIzNTE1ODAwOEQwRThCIC8qIE5hdmlnYXRpb25TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUJDM0RGNjE4OTlFNDM3MDA0RjA2
MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0I4MjY0NDIzMDRG
MTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
QjgyNjQxMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNkZCQTJBMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE2RkJEMjgxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1
Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTUxMiw2ICs5NTU4LDggQEAK
IAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNv
Y29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVCOTIyNTcwNDZGMDBENkY5N0UgLyogTmV0
d29ya1NvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUMyMjMwMzczMDMw
MEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQUFBRTIz
MDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVD
NTYxNDg5OUMwOTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTMxMjYxRjE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM1MjE0
ODk5ODE5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxMzgsNiArMTAxODYsNyBAQAogCQkJCTFBMUIwRUI4
MThBNDI0Q0QwMDM4NDgxQSAvKiBXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUExMzIxMjE5MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNBNjVERjFBN0MzQTdEMDBDQUM2
MzcgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERB
QUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlm
aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgx
MEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTExMTIyLDYgKzExMTcxLDcgQEAKIAkJCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyog
TWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgyMjEyQjZB
NzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJB
NzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdC
ODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MTM0NDMyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAwMDEyOEFGRCAvKiBOZXRz
Y2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5NjIxMkI2QURBMDBGNDkz
RkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdjZGExYTBiMzhhNmRl
ZjkwYWQzMzQ1YzIyNmNlYjBkN2U1NzYyMC4uYTdlNWIyNzY1YzEwNmVkZDFjOTEwN2NhYmYwMTA4
NjkyYzI2ZTE1MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNh
dG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgIFNldHVw
IE5GQyBtb2NrIHRlc3RpbmcgY29uZmlndXJhdGlvbi4KKwogMjAxOS0wOC0xMyAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChVQ2hhcjMyKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXIoVUNoYXIzMikg
dG8gYXZvaWQgYWNjaWRlbnRhbCBjaGFuZ2UgaW4gYmVoYXZpb3Igd2hlbiByZXBsYWNpbmcgYXBw
ZW5kIHdpdGggZmxleGlibGVBcHBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3MjllMDVhOWI3YmM1OTEwYjA5
OTgwOWU4NmYwYTcyZmE1Y2ZjOTkuLjVkZjVhMDJjNWMwZTI2NjkyZTVjNzFmOThlM2ZiZTBlNjhi
NDMzY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtMjcwOCw2ICsyNzA4LDcxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3Vy
YXRpb25WCiAgICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0hpZEtleXMuZGF0YSgpLCByYXdIaWRWYWx1ZXMuZGF0YSgpLCByYXdI
aWRLZXlzLnNpemUoKSkpKTsKICAgICB9CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
bmZjUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmZj
IikpOworICAgIEpTVmFsdWVSZWYgbmZjVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIGNvbmZpZ3VyYXRpb24sIG5mY1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgaWYgKCFK
U1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbmZjVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIG5mY1ZhbHVlKSkgeworICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0
LCBuZmNWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTT2JqZWN0UmVmIG5m
YyA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSwgMCk7CisKKyAgICAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVycm9yUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXJyb3IiKSk7CisgICAgICAgIEpTVmFsdWVSZWYgZXJyb3JW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBlcnJvclByb3BlcnR5TmFt
ZS5nZXQoKSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGVycm9y
VmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4+IG5mY0tleXM7CisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5
cGVSZWY+PiBuZmNWYWx1ZXM7CisgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpKTsKKyAgICAgICAgbmZjVmFsdWVzLmFw
cGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXJyb3JWYWx1ZSwg
MCkpLmdldCgpKSk7CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRC
YXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJw
YXlsb2FkQmFzZTY0IikpOworICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwg
cGF5bG9hZEJhc2U2NFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0VmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBKU09iamVjdFJlZiBwYXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5n
dGhQcm9wZXJ0eSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgi
KSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHku
Z2V0KCksIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4
dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGF1dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5
Q3JlYXRlKCkpOworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0
aFZhbHVlLCBudWxscHRyKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
eWxvYWRCYXNlNjRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5
bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5
bG9hZEJhc2U2NCwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2
NHMuZ2V0KCksIHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2Fk
QmFzZTY0VmFsdWUsIDApKS5nZXQoKSkuZ2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJQYXlsb2FkQmFzZTY0IikpKTsKKyAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQocGF5bG9h
ZEJhc2U2NHMpOworICAgICAgICB9CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IG11bHRpcGxlVGFnc1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIm11bHRpcGxlVGFncyIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBtdWx0aXBsZVRhZ3NW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBtdWx0aXBsZVRhZ3NQcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbXVsdGlw
bGVUYWdzVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4
dCwgbXVsdGlwbGVUYWdzVmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGJvb2wgbXVsdGlwbGVUYWdzID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBtdWx0aXBs
ZVRhZ3NWYWx1ZSk7CisgICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkpOworICAgICAgICAgICAgbmZj
VmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtdWx0aXBsZVRhZ3MpKS5nZXQo
KSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd05mY0tleXM7
CisgICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd05mY1ZhbHVlczsKKyAgICAgICAgcmF3TmZj
S2V5cy5yZXNpemUobmZjS2V5cy5zaXplKCkpOworICAgICAgICByYXdOZmNWYWx1ZXMucmVzaXpl
KG5mY1ZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5mY0tl
eXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHJhd05mY0tleXNbaV0gPSBuZmNLZXlzW2ld
LmdldCgpOworICAgICAgICAgICAgcmF3TmZjVmFsdWVzW2ldID0gbmZjVmFsdWVzW2ldLmdldCgp
OworICAgICAgICB9CisKKyAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKSk7CisgICAgICAgIGNvbmZpZ3Vy
YXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd05mY0tleXMu
ZGF0YSgpLCByYXdOZmNWYWx1ZXMuZGF0YSgpLCByYXdOZmNLZXlzLnNpemUoKSkpKTsKKyAgICB9
CisKICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0NvbmZpZ3VyYXRpb25LZXlzOwogICAgIFZl
Y3RvcjxXS1R5cGVSZWY+IHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXM7CiAgICAgcmF3Q29uZmlndXJh
dGlvbktleXMucmVzaXplKGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTdhOTg5
ZDI5NjUzNTc5NjEyYmU2ZGE3MWIxMGEzMTQ1Njk1MWViNi4uZTU4OTA2NWMxMWQ0MDZkOGU0NzJh
NTg3ZmIyZWMwOTZlMTA1MjU3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTIwICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBT
dXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICBUaGlzIHBhdGNoIHJl
cGxhY2VzIHRoZSAibG9jYWwiIGtleXdvcmQgd2l0aCAiaGlkIi4KKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRp
bC5qczoKKwogMjAxOS0wOC0xMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpUGFkT1NdIHNsaWRlcy5nb29nbGUuY29tOiBDYW5ub3QgZGlzbWlzcyB0aGUg
Y29udGV4dCBtZW51IGJ5IHRhcHBpbmcgb24gdGhlIGNhbnZhcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDA1YjNjZGMyMzcwMjQ3ZTZlYzgwOGFhYzQ1NDA1
MDY4NzM3ZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisK
K1BBU1MgQ1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJlc3BvbnNlIGluIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci4gCitQQVNTIENUQVAgTkZDIHdpdGggd3JvbmcgZGF0YSBlcnJvciBpbiBhIG1v
Y2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMw
YjFiOGFlNDY4ODdmNWZiYTViMTMzYjg4MmY0ZTY0OWQ4YWQyNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRt
bApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGlj
YXRpb24gQVBJOiBDVEFQIE5GQyBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBu
YW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgIH0KKyAg
ICB9OworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBw
YXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgIiJdIH0gfSk7CisgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OworICAgIH0sICJDVEFQIE5GQyB3aXRoIGVtcHR5IGFwZHUgcmVzcG9uc2UgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAg
IH0sICJDVEFQIE5GQyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU3MjUwOThhZjczNTIwMWExYTc4NzI2MWUwMDliMWViZWVlZmM3MmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKwor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBubyB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdGFnIHR5cGUgaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBubyBjb25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG51bGwgdmVyc2lvbiBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9y
LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5m
Yy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MjQ4NTczM2M1YWYzNzIzODMyMWI2ZjI0YjIyMDM0
ZGZlZDRiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSwxNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlv
biBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0
aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3Vy
YXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBj
b25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAibm8tdGFncyIgfSB9KTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBh
c2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVu
Z2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlD
cmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAg
ICAgICAgdGltZW91dDogMTAsCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlv
bjogeyBhdXRoZW50aWNhdG9yQXR0YWNobWVudDogInBsYXRmb3JtIiB9CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2Vl
ZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJP
cGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG5vIHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
KyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBw
bGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIndyb25nLXRhZy10eXBlIiB9IH0pOworICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBlIGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBs
ZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAg
IGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby1j
b25uZWN0aW9ucyIgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBubyBjb25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7
CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbIF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBudWxsIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
KyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBw
bGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpb
dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdmVyc2lvbiBpbiBhIG1vY2sgbmZj
IGF1dGhlbnRpY2F0b3IuIik7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhp
ZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dApp
bmRleCAzMTJkZTkzMGU0ZGI2NjAxMjczNzdmOTY4Y2VhY2Y4MGU1MWFkZmE2Li44MDcyNTFmODY5
NWRiODEyY2U0Njc0NzUyOWFmNDE4MDdiNzNhYWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlk
Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMSwxMiArMSwxMiBAQAogCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAK
LVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9y
U2VsZWN0aW9uIHsgJ2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJl
UmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBB
U1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9u
IHsgJ3ByZWZlcnJlZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdk
aXNjb3VyYWdlZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNl
bGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlcXVpcmVSZXNp
ZGVudEtleSB7IGZhbHNlIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3By
ZWZlcnJlZCcgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFn
ZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdv
IGNvbnNlY3V0aXZlIHJlcXVlc3RzLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9y
LiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0
ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
CitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVz
dGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IGExNDdlZjM3ZDUzOTNkZWI5Njk4NjVm
NDBiMWVlYzc1ZTk1YzdhNWIuLjNlNmFmMWE5NjI3MTNkMDdkZDY3ZWNiYmU5N2E2OGQ3NjAzMzM0
M2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3Nz
LXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rp
b24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAt
MTEwLDcgKzExMCw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Jlc3Vs
dChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfSBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAn
cHJlZmVycmVkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAn
cHJlZmVycmVkJyB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21p
c2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTE1Niw3ICsxNTYs
NyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlh
bCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdkaXNjb3VyYWdlZCcgfSBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25z
ID0gewpAQCAtMjI1LDcgKzIyNSw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
QEAgLTI0OCw3ICsyNDgsNyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKQEAgLTI3MSw1ICsyNzEsNSBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAg
Y2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWY1ZTgzMTJlMDJmM2JiZjk1OGEyOGI0MzcxZGVkYmVlMzA1ZjM3ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NiBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11
bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9z
cy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG11bHRpcGxlIHRhZ3MgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBVMkYgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjljYTRkMWJlOGI3Y2ZjOTY1MTIxZjNjZjE4NDc2MGIwMjUyOTQwZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNTQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRp
Y2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAg
Ly8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYg
dGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZj
Q3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3Jl
YXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKworICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25zZQorICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0
VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0
ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0
eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJo
dHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3Jl
ZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisgICAgICAg
IC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0g
Q0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9uZSIpOworCisgICAg
ICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0
aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRi
OTA5MmUxYzhkOWU1ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFkOCIpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYXV0aERhdGEuY291bnRlciwgNzgpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9I
ZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwIik7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElE
LCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICAv
LyBDaGVjayBub25lIGF0dGVzdGF0aW9uCisgICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGlj
S2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhh
dHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNo
ZWNrVTJmUmVzdWx0KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25z
ZQorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFs
LmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJh
c2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0
YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIi
LCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X25v
dF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIp
OworCisgICAgICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNvbnN0IGF0dGVzdGF0
aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9i
amVjdCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9u
ZSIpOworCisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRh
ID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBk
ZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2
MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAiKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdXRoRGF0YS5j
cmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7
CisgICAgICAgIC8vIENoZWNrIG5vbmUgYXR0ZXN0YXRpb24KKyAgICAgICAgYXNzZXJ0X3RydWUo
Y2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7CisgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7CisgICAgfQorCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAg
ICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2Nr
IG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAg
ICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAg
ICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAg
ICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0s
CisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNhdG9y
QXR0YWNobWVudDogImNyb3NzLXBsYXRmb3JtIiB9LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6
IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAg
ICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlv
biB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVk
IiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRs
ZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJM
LnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0
OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQs
IHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSwgbXVsdGlwbGVUYWdzOiB0cnVlIH0gfSk7
CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbXVsdGlwbGUgdGFncyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBw
cm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAg
ICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2
NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNl
KCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RO
ZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgICAgICBjaGVja1UyZlJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggVTJGIGluIGEgbW9j
ayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5m
Yy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMDhhMDQ4NDQyYTg0MGUwZDFkOTM0OTc2YTk3MzZhOTk3OTEwMDJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjY0ODc0ZmZmNWQ4MWZl
N2I2MTQ0MzlmNzI2MjlhOTlkMDAyNTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5o
dHRwcy5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBB
dXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIGZhaWx1cmUg
Y2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2Nr
IGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZl
cmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQg
aW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUyNjhiOWZkOGU1NmZkNDYwYWVhMWM3MDhhYWFhMGJjZTcwYTBlMmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmlt
dW0gb3B0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3Iu
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzgyYmNkY2JmNzc4OGUxNWE2YzExYTkzNTExMzVjY2JlMWY5ZjNh
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDcz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBzdWNjZXNzIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBu
ZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNl
QXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworCisgICAg
ZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIENoZWNr
IHJlc3BvbmQKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3Jl
ZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOwor
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3
SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNs
aWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpO
RFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoY3JlZGVudGlhbC5yZXNwb25zZS51c2VySGFuZGxlLCBudWxsKTsKKyAgICAgICAg
YXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCks
ICJhcHBpZCIpOworCisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1
dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25z
ZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhT
dHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1
ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFkOCIpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5j
b3VudGVyLCA4MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tVMmZSZXN1bHQoY3JlZGVu
dGlhbCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKKyAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3Jl
ZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUy
ZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJ
SVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6Indl
YmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2Nh
bGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5yZXNwb25z
ZS51c2VySGFuZGxlLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlh
bC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisgICAgICAgIC8vIENo
ZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3
IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAi
NDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4
MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCA1OSk7CisgICAgfQorCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAx
MDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1UyZlJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggVTJGIGluIGEgbW9j
ayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCA5ODdkMDcyMTlkNGU0NzcwNzRj
OThmNDJjMTViMTg1M2M3M2FjNjEyLi5iMGMyMjM5MjQ0MGEwYjU4ZDg4YjlhYWM5NTU3OWU2ZWQ5
NTk2YzhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJj
ZXMvdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMv
dXRpbC5qcwpAQCAtOTksNiArOTksNDAgQEAgY29uc3QgdGVzdFUyZlNpZ25SZXNwb25zZSA9CiAg
ICAgImY0VjRMZUVBaHFlRDBlZmZUalk1NTNIMTlxK2pXcTFUYzRXT2tBQT0iOwogY29uc3QgdGVz
dEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VCYXNlNjQgPSAiR1E9PSI7CiBj
b25zdCB0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQgPSAiSWc9PSI7
Citjb25zdCB0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCA9ICJWVEpHWDFZeWtBQT0iOworY29uc3Qg
dGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0ID0gIlJrbEVUMTh5WHpDUUFBPT0iOworY29uc3QgdGVz
dEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQgPQorICAgICJBS1lCZ21aVk1rWmZWakpvUmtsRVQx
OHlYekFDZ1d0b2JXRmpMWE5sWTNKbGRBTlFiVVM2bS9ic0xrbTVNQXlQIiArCisgICAgIjZTRExj
d1NrWW5KcjlXSjFjUFZrY0d4aGRQUnBZMnhwWlc1MFVHbHU5QVVaQkxBR2dRR1FBQT09IjsKK2Nv
bnN0IHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0ID0KKyAgICAiQUtNQlpuQmhZMnRsWkFK
WXhFYk1mN2xublZXeTI1Q1M0Y2paNWVIUUszV0E4TFNCTEhjSll1SGtqMXJZUVFBQSIgKworICAg
ICJBRTc0b0JIempBcE5GWUFHRnhFZm50eDlBRUFvQ0szTzZQNU95WE42Vi9mKzluQWdhME5BMkNn
cDRWM21nU0o1IiArCisgICAgImpPSExNRHJteHAvUzByYkQrYWlocnUxQzBhQU4zQmtpTTZHTnk1
blNsRFZxT2dUZ3BRRUNBeVlnQVNGWUlFRmIiICsKKyAgICAiaGUzUmtOdWQ2c2d5cmFCR2psaDFw
elRsQ1plaFFsTC9iMThIWjZXR0lsZ2dKZ2ZVZC9lbjlwNUFJcU1RYlVuaSIgKworICAgICJuRWVY
ZEZMa3ZXMC96VjVCcEVqak54QURvMk5oYkdjbVkzTnBaMWhITUVVQ0lRREtnK1pCbUVCdGYwbFdx
NFJlIiArCisgICAgImRINC9pL0xPWXFPUjR1UjJOQWoyelFtdzlRSWdiVFhiNGh2RmJqNFQyN2J2
L3JHcmMreSswcHVvWU9Ca0JrOVAiICsKKyAgICAibUNld1dsTmplRFZqZ1ZrQ3dqQ0NBcjR3Z2dH
bW9BTUNBUUlDQkhTRy9jSXdEUVlKS29aSWh2Y05BUUVMQlFBdyIgKworICAgICJMakVzTUNvR0Ex
VUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3IiAr
CisgICAgIklCY05NVFF3T0RBeE1EQXdNREF3V2hnUE1qQTFNREE1TURRd01EQXdNREJhTUc4eEN6
QUpCZ05WQkFZVEFsTkYiICsKKyAgICAiTVJJd0VBWURWUVFLREFsWmRXSnBZMjhnUVVJeElqQWdC
Z05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMCIgKworICAgICJaWE4wWVhScGIyNHhLREFt
QmdOVkJBTU1IMWwxWW1samJ5QlZNa1lnUlVVZ1UyVnlhV0ZzSURFNU5UVXdNRE00IiArCisgICAg
Ik5ESXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU1ZYZk90OXlSOU1YWHYvWnpF
OHhwT2g0NjYiICsKKyAgICAiNFlFSlZtRlEremlMTGw5bEo3OVhRSnFsZ2FVTkNzVXZHRVJjQ2hO
VWloTlR5S1RsbW5CT1VqdkFUZXZ0bzJ3dyIgKworICAgICJhakFpQmdrckJnRUVBWUxFQ2dJRUZU
RXVNeTQyTGpFdU5DNHhMalF4TkRneUxqRXVNVEFUQmdzckJnRUVBWUxsIiArCisgICAgIkhBSUJB
UVFFQXdJRklEQWhCZ3NyQmdFRUFZTGxIQUVCQkFRU0JCRDRvQkh6akFwTkZZQUdGeEVmbnR4OU1B
d0ciICsKKyAgICAiQTFVZEV3RUIvd1FDTUFBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFERmNT
SURtbWxKK09HYUp2V245Q3FodiIgKworICAgICJTZXVlVG9WRlFWVnZxdEFMT2dDS0hkd0IrV3gy
OW1nMkdwSGlNc2dRcDV4akIweWJibnBHNngyMTJGeEVTSitHIiArCisgICAgImluWkQwaXBjaGk3
QVB3UGxoSXZqZ0gxNnpWWDQ0YTRlNGhPc2M2dExJT1A3MVNhTXNIdUhnQ2NkSDB2ZzVkMnMiICsK
KyAgICAiYzAwNldKZTlUWE82ZnpWK29nakpuWXBOS1FMbUNYb0FYRTNKQk53S0dCSU9DdmZRRFB5
V21paUc1Ykd4WWZQdCIgKworICAgICJ5OFozcG5qWCsxTURuTTJoaHI0MHVsTXhsU05EblgvWlNu
RHlNR0liazhUT1FtalRGMDJVTzhhdVA4azN3dDVEIiArCisgICAgIjFyUk9JUlU5K0ZDU1g1V1FZ
aTY4UnVEckdNWkI4UDUrYnlvSnFiS1FkeG4yTG1FMW9aQXlvaFBBbUxjb1BPNlEiICsKKyAgICAi
QUE9PSI7Citjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjQgPQorICAgICJBS01C
b21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVzYWYw
dEsyIiArCisgICAgIncvbW9vYTd0UXRHZ0Rkd1pJak9oamN1WjBwUTFham9FNEdSMGVYQmxhbkIx
WW14cFl5MXJaWGtDV0NWR3pIKzUiICsKKyAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMwZ1N4
M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKworICAgICI0L0YwVkI3RGxV
Vk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiAr
CisgICAgIlFvSjFMN0ZlNjRHOXVCZVFBQT09IjsKIAogY29uc3QgUkVTT1VSQ0VTX0RJUiA9ICIv
V2ViS2l0L3dlYmF1dGhuL3Jlc291cmNlcy8iOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376812</attachid>
            <date>2019-08-20 14:53:46 -0700</date>
            <delta_ts>2019-08-20 15:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188624-20190820145345.patch</filename>
            <type>text/plain</type>
            <size>130276</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFkODQxNTNjZDUyZmE0
OTY1ZDFkZjM1Zjc5ZTM2ZGQwMDQzM2NlMS4uNTQ0ZmE2ZTA3MjA3MzM2NTJiZDIzMjJiZTlhNjBm
NzVjNjMwZmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTIwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBw
b3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
MzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKyAgICAgICAgQWRk
cyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9uLgorCiAyMDE5LTA4LTEzICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIFdQRSBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYzZlNzFhZWViNzI4MWY0ZWRhNGMyNWU2MTkwNTJmNDE3NDllYWQ2OC4uNThj
ZGNmYTM0Y2NhY2Q5ZDRlMTRiNGIyNTU4NjJkMjJkY2IxYTkxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDIgQEAKKzIwMTktMDgtMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3JzIGZvciBpT1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODYyNAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQg
Zm9yIE5GQyBhdXRoZW50aWNhdG9ycyBpbmNsdWRpbmcgYm90aCBGSURPMiBhbmQgVTJGIG9uZXMu
IEl0IHV0aWxpemVzIGEgcHJpdmF0ZQorICAgICAgICBmcmFtZXdvcmsgY2FsbGVkIE5lYXJGaWVs
ZCBpbnN0ZWFkIG9mIENvcmVORkMgdG8gYmUgYWJsZSB0byBzdXBwbHkgYSBjdXN0b20gVUkgbGF0
ZXIgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgIFRoZSBwYXRjaCBmb2xsb3dzIGFsbW9zdCB0aGUg
c2FtZSBmbG93IGFzIHByZXZpb3VzIEhJRCBhbmQgTG9jYWwgYXV0aGVudGljYXRvciBzdXBwb3J0
LgorICAgICAgICAxKSBEaXNjb3ZlcnkgaXMgdmlhIE5mY1NlcnZpY2Ugd2hpY2ggd2lsbCBpbnZv
a2UgTkZIYXJkd2FyZU1hbmFnZXIgdG8gc3RhcnQgYSBnZW5lcmljIE5GQyByZWFkZXIgc2Vzc2lv
bi4KKyAgICAgICAgMikgT25jZSBhIHJlYWRlciBzZXNzaW9uIGlzIGVzdGFibGlzaGVkLCBhIE5m
Y0Nvbm5lY3Rpb24gaXMgY3JlYXRlZCB0byBzdGFydCB0aGUgcG9sbGluZyBhbmQgcmVnaXN0ZXIg
dGhlIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUKKyAgICAgICAgdG8gd2FpdCBmb3IgJ2RpZERl
dGVjdFRhZ3MnLgorICAgICAgICAzKSBXaGVuIHRhZ3MgYXJlIGRldGVjdGVkLCBOZmNDb25uZWN0
aW9uIHdpbGwgZGV0ZXJtaW5lIGlmIGl0IG1lZXRzIG91ciByZXF1cmllbWVudHM6IHsgdHlwZSwg
Y29ubmVjdGFiaWxpdHksIGZpZG8gYXBwbGV0IGF2YWlsYWJpbGl0eSB9LgorICAgICAgICBUaGUg
Zmlyc3QgdGFnIHRoYXQgbWVldHMgYWxsIHJlcXVpcmVtZW50IHdpbGwgdGhlbiBiZSByZXR1cm5l
ZCBmb3IgV2ViQXV0aG4gb3BlcmF0aW9ucy4KKyAgICAgICAgNCkgVGhlIGZpcnN0IFdlYkF1dGhu
IG9wZXJhdGlvbiBpcyB0byBzZW5kIGF1dGhlbnRpY2F0b3JHZXRJbmZvIGNvbW1hbmQgdG8gZGV0
ZXJtaW5lIHRoZSBzdXBwb3J0ZWQgcHJvdG9jb2wsIGFuZCB0aGVuIGluaXRpYWxpemUgY29ycmVz
cG9uZGluZworICAgICAgICBhdXRoZW50aWNhdG9ycy4gTm90ZWQsIHRoZSBzZW5kaW5nL3JlY2Vp
dmluZyBvZiB0aGlzIGNvbW1hbmQgaXMgbm93IGFic3RyYWN0ZWQgaW50byBGaWRvU2VydmljZSB3
aGljaCB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgSGlkU2VydmljZSBhbmQgTmZjU2VydmljZS4KKyAg
ICAgICAgNSkgRnJvbSB0aGVuLCB0aGUgYWN0dWFsIFdlYkF1dGhuIHJlcXVlc3QsIGVpdGhlciBt
YWtlQ3JlZGVudGlhbCBvciBnZXRBc3NlcnRpb24gd2lsbCBiZSBzZW50LgorCisgICAgICAgIEZv
ciB0ZXN0aW5nLCB0aGlzIHBhdGNoIGZvbGxvd3MgdGhlIHNhbWUgZmxvdyBhcyB3ZWxsLgorICAg
ICAgICAxKSBNb2NrTmZjU2VydmljZSBvdmVycmlkZXMgTmZjU2VydmljZSB0byBtb2NrIHRoZSBi
ZWhhdmlvciBvZiBORkMgVGFncyBkaXNjb3ZlcnkuCisgICAgICAgIDIpIFRoZSBzYW1lIGNsYXNz
IGFsc28gc3dpenpsZXMgbWV0aG9kcyBmcm9tIE5GUmVhZGVyU2Vzc2lvbiB0byBtb2NrIHRhZyBj
b25uZWN0aW9uIGFuZCBjb21tdW5pY2F0aW9uLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL0Nv
Y29hL05lYXJGaWVsZFNQSS5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbDo6Y29sbGVjdFRyYW5zcG9ydHMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vy
dmljZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZTo6Y3JlYXRlTW9jayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0hpZFNlcnZpY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6SGlkU2Vy
dmljZSk6CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmRldmljZUFkZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6SGlkU2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFy
RmllbGRTb2Z0TGluay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
LmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5l
Y3Rpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
Zmlkbzo6Y29tcGFyZVZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjpO
ZmNDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVjdGlvbjo6fk5mY0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp0cmFuc2FjdCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OmRpZERldGVjdFRhZ3MgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTmZjU2VydmljZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6
Ok5mY1NlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjp+TmZjU2VydmljZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OmRpZENvbm5lY3RUYWcpOgorICAgICAgICAo
V2ViS2l0OjpOZmNTZXJ2aWNlOjpzdGFydERpc2NvdmVyeUludGVybmFsKToKKyAgICAgICAgKFdl
YktpdDo6TmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisg
ICAgICAgICgtW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgaW5pdFdpdGhDb25uZWN0aW9uOl0p
OgorICAgICAgICAoLVtXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIHJlYWRlclNlc3Npb246ZGlk
RGV0ZWN0VGFnczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTmZjU2VydmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS01vY2tORlRhZyB0eXBlXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIHRlY2hub2xv
Z3ldKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgVUlEXSk6CisgICAgICAgICgtW1dLTW9ja05G
VGFnIHRhZ0lEXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIEFwcERhdGFdKToKKyAgICAgICAg
KC1bV0tNb2NrTkZUYWcgbmRlZkF2YWlsYWJpbGl0eV0pOgorICAgICAgICAoLVtXS01vY2tORlRh
ZyBuZGVmTWVzc2FnZVNpemVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgbmRlZkNvbnRhaW5l
clNpemVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgZGVzY3JpcHRpb25dKToKKyAgICAgICAg
KC1bV0tNb2NrTkZUYWcgdGFnQV0pOgorICAgICAgICAoLVtXS01vY2tORlRhZyB0YWdCXSk6Cisg
ICAgICAgICgtW1dLTW9ja05GVGFnIHRhZ0ZdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaW5p
dFdpdGhORlRhZzpdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaXNFcXVhbFRvTkZUYWc6XSk6
CisgICAgICAgICgtW1dLTW9ja05GVGFnIGluaXRXaXRoVHlwZTpdKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a05mY1NlcnZpY2U6OnRyYW5zY2VpdmUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2Vydmlj
ZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tOZmNTZXJ2
aWNlOjpkZXRlY3RUYWdzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cE5mY0RyaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpD
dGFwTmZjRHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6dHJhbnNhY3Qp
OgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpyZXNwb25kQXN5bmMgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0ZpZG9TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2
aWNlOjpGaWRvU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpnZXRJbmZv
KToKKyAgICAgICAgKFdlYktpdDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE5LTA4LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CiAKICAgICAgICAgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gc2hv
dWxkIGJlIGEgdmFsdWUgaW4gSW1hZ2VPcmllbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5kZXggMjExZTNjODFm
M2YwZGUyZmU1YmNiZmNlNjNlM2U0ZmM4MTUwMmEyMC4uZjI2Y2FlYThmNzIxMzE1NmY2OTdhNjM4
MWZjNjAxNWMwMzQ1ZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC0yMjMsNiArMjIzLDI1IEBAIGNvbnN0IGNo
YXIga1UyZlZlcnNpb25bXSA9ICJVMkZfVjIiOwogY29uc3QgdWludDMyX3Qga0NUQVBISURVc2Fn
ZVBhZ2UgPSAweEYxRDA7CiBjb25zdCB1aW50MzJfdCBrQ1RBUEhJRFVzYWdlID0gMHgwMTsKIAor
Ly8gQ1RBUE5GQyBBcHBsZXQgc2VsZWN0aW9uIGNvbW1hbmQgYW5kIHJlc3BvbnNlcworLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNuZmMt
YXBwbGV0LXNlbGVjdGlvbgorY29uc3QgdWludDhfdCBrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkNv
bW1hbmRbXSA9IHsKKyAgICAweDAwLCAweEE0LCAweDA0LCAweDAwLCAvLyBDTEEsIElOUywgUDEs
IFAyCisgICAgMHgwOCwgLy8gTAorICAgIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NDcsIC8v
IFJJRAorICAgIDB4MkYsIDB4MDAsIDB4MDEgLy8gUElYCit9OworCitjb25zdCB1aW50OF90IGtD
VEFQTkZDQXBwbGV0U2VsZWN0aW9uVTJmW10gPSB7CisgICAgMHg1NSwgMHgzMiwgMHg0NiwgMHg1
RiwgMHg1NiwgMHgzMiwgLy8gVmVyc2lvbgorICAgIDB4OTAsIDB4MDAgLy8gQVBEVSByZXNwb25z
ZSBjb2RlCit9OworCitjb25zdCB1aW50OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ3RhcFtd
ID0geworICAgIDB4NDYsIDB4NDksIDB4NDQsIDB4NGYsIDB4NWYsIDB4MzIsIDB4NWYsIDB4MzAs
IC8vIFZlcnNpb24KKyAgICAweDkwLCAweDAwIC8vIEFQRFUgcmVzcG9uc2UgY29kZQorfTsKKwog
fSAvLyBuYW1lc3BhY2UgZmlkbwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTczYTUzYTg1ZmJhYTZlODk1ODQzMTZlNzM2M2VlMTk1Y2Q2NGQ3MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxOZWFy
RmllbGQvTmVhckZpZWxkLmg+CisKKyNlbHNlCisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBORkZlYXR1cmUpIHsKKyAgICBORkZlYXR1cmVSZWFkZXJNb2RlICAgICAgICAgICAgICAg
ICA9IDEgPDwgMCwKK307CisKK3R5cGVkZWYgTlNfRU5VTSh1aW50MzJfdCwgTkZUYWdUeXBlKSB7
CisgICAgTkZUYWdUeXBlVW5rbm93biAgICA9IDAsCisgICAgTkZUYWdUeXBlR2VuZXJpYzRBICA9
IDMsCit9OworCitAcHJvdG9jb2wgTkZUYWdBCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZ0IKK0Bl
bmQKKworQHByb3RvY29sIE5GVGFnRgorQGVuZAorCitAcHJvdG9jb2wgTkZUYWcgPE5TT2JqZWN0
PgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBORlRhZ1R5cGUgdHlwZTsKK0BlbmQK
KworQGludGVyZmFjZSBORlRhZyA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZywgTkZUYWcsIE5G
VGFnQSwgTkZUYWdCLCBORlRhZ0Y+CitAZW5kCisKK0Bwcm90b2NvbCBORlNlc3Npb24gPE5TT2Jq
ZWN0PgorLSAodm9pZCkgZW5kU2Vzc2lvbjsKK0BlbmQKKworQGludGVyZmFjZSBORlNlc3Npb24g
OiBOU09iamVjdCA8TkZTZXNzaW9uPgorQGVuZAorCitAcHJvdG9jb2wgTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGU7CisKK0BpbnRlcmZhY2UgTkZSZWFkZXJTZXNzaW9uIDogTkZTZXNzaW9uCitAcHJv
cGVydHkgKGFzc2lnbikgaWQ8TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOworCist
IChCT09MKSBzdGFydFBvbGxpbmc7CistIChCT09MKSBzdG9wUG9sbGluZzsKKy0gKEJPT0wpIGNv
bm5lY3RUYWc6KE5GVGFnKil0YWc7CistIChCT09MKSBkaXNjb25uZWN0VGFnOworLSAoTlNEYXRh
KikgdHJhbnNjZWl2ZTooTlNEYXRhKiljYXBkdTsKKy0gKE5TRXJyb3IgKikgdXBkYXRlVUlBbGVy
dE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorLSAodm9pZCkgcmVhZGVyU2Vz
c2lvbjooTkZSZWFkZXJTZXNzaW9uKil0aGVTZXNzaW9uIGRpZERldGVjdFRhZ3M6KE5TQXJyYXk8
TkZUYWcgKj4gKil0YWdzOworQGVuZAorCitAaW50ZXJmYWNlIE5GSGFyZHdhcmVNYW5hZ2VyIDog
TlNPYmplY3QKKysgKGluc3RhbmNldHlwZSkgc2hhcmVkSGFyZHdhcmVNYW5hZ2VyOworLSAoTlNP
YmplY3Q8TkZTZXNzaW9uPiAqKSBzdGFydFJlYWRlclNlc3Npb25XaXRoQWN0aW9uU2hlZXRVSToo
dm9pZCheKShORlJlYWRlclNlc3Npb24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9yKSl0aGVTdGFy
dENhbGxiYWNrOworLSAoQk9PTClhcmVGZWF0dXJlc1N1cHBvcnRlZDooTkZGZWF0dXJlKWZlYXR1
cmVNYXNrIG91dEVycm9yOihOU0Vycm9yKiopb3V0RXJyb3I7CitAZW5kCisKKyNlbmRpZiAvLyBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDRiYzIwZmQ1MzE2Y2MwM2YyOTdkOTRlYjIxYTRlNjJjNWFjYzI0MmQuLjA4
MGQwYjM4ODJmOGM1YjQwNmM3MGRlYWZhZjA2ZjYyNzcwOTQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NDA3LDYgKzQwNyw4IEBAIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5jcHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1
dGhlbnRpY2F0b3IuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlk
RHJpdmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZl
ci5jcHAKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcAog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKIAog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDMwZjQ4OGFiNTgwODkxZTk5MzU0NTJkNmI2
MTM4ZTAzY2JiODAyY2UuLmJkOTk1ZTk1NmY4ZWY2YTNmOGIxMjFhZTBiZWI5YmI0ZmNmYzJlNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ5Niw5ICs0OTYsMTQgQEAgVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24u
bW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KK1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBAbm8t
dW5pZnkKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1t
CitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQorVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0K
IAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbQor
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KIAogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAppbmRleCA5NmIyMzM3NDJjMDlhYjYzM2RlZWQ0Mzk0NzkwZmUxYTQzNmIyZGNjLi5l
MWQ0OTAyMzYwZGQxMWI4YzA1M2ZhNTgxMzc2NGRiNzExNDBjMDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAK
QEAgLTY2OSw2ICs2NjksMzAgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29u
ZmlndXJhdGlvbi5oaWQgPSBXVEZNb3ZlKGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gbmZj
UmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIk5mYyIpKS5nZXQoKSkpKSB7CisgICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6TmZjIG5mYzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0
Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIp
KS5nZXQoKSkpKS0+c3RyaW5nKCk7CisgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCisg
ICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246Ok5mYzo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgICAgIGlmIChlcnJvciA9PSAibm8t
dGFncyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vVGFnczsKKyAgICAgICAgaWYgKGVycm9y
ID09ICJ3cm9uZy10YWctdHlwZSIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlw
ZTsKKyAgICAgICAgaWYgKGVycm9yID09ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAgICAgICBu
ZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5m
Yzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnM7CisgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNpb3Vz
LXBheWxvYWQiKQorICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOworCisg
ICAgICAgIGlmIChhdXRvIHBheWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAgbmZj
LnBheWxvYWRCYXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdW
ZWN0b3IoKTsKKworICAgICAgICBpZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKKyAg
ICAgICAgICAgIG5mYy5tdWx0aXBsZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRh
Z3MpOworCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOworICAgIH0K
KwogICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXgg
MmMwODQ0NTc4NTdkNDEwOWM4NDMxMTU5MTgzMGUzNGIyYTI1YjZkZi4uMGQ3YjY2MTNmZjZhZTZk
NmE4NTkxYjZkYzA4M2EzMWNlYWQ3MjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcApAQCAtMzgsMTUgKzM4LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFt
ZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWwgewogCiAjaWYgUExBVEZPUk0oTUFD
KQotY29uc3Qgc2l6ZV90IG1heFRyYW5zcG9ydE51bWJlciA9IDI7Citjb25zdCBzaXplX3QgbWF4
VHJhbnNwb3J0TnVtYmVyID0gMzsKICNlbHNlCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVt
YmVyID0gMTsKK2NvbnN0IHNpemVfdCBtYXhUcmFuc3BvcnROdW1iZXIgPSAyOwogI2VuZGlmCiAK
IC8vIFN1Z2dlc3RlZCBieSBXZWJBdXRoTiBzcGVjIGFzIG9mIDcgQXVndXN0IDIwMTguCiBjb25z
dCB1bnNpZ25lZCBtYXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAKLS8vIEZJWE1FKDE4ODYyNCwg
MTg4NjI1KTogU3VwcG9ydCBORkMgYW5kIEJMRSBhdXRoZW50aWNhdG9ycy4KKy8vIEZJWE1FKDE4
ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhlbnRpY2F0b3JzLgogc3RhdGljIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNy
aXRlcmlhPiYgYXV0aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFu
YWdlcjo6VHJhbnNwb3J0U2V0IHJlc3VsdDsKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0
aW9uYWw8UHVibGkKICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQo
QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTY5LDcgKzcxLDExIEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6VXNiKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworI2Vsc2UKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSByZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CiAjZW5kaWYKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGljIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVj
dG9yPFB1YmxpY0sKICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQo
QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTEwMCw4ICsxMDgsOSBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRy
YW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAg
ICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpVc2IpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgorICAgICAgICAg
ICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5z
cG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQogICAgICAg
ICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CkBAIC0x
MDksNiArMTE4LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQg
Y29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAgaWYgKCFyZXN1
bHQuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSAmJiBhbGxvd0NyZWRlbnRp
YWwudHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpKQogICAg
ICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogI2VuZGlm
CisgICAgICAgIGlmICghcmVzdWx0LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5m
YykgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRy
YW5zcG9ydDo6TmZjKSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5z
cG9ydDo6TmZjKTsKICAgICAgICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVt
YmVyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5kZXggZjQ1NjU3Yjk1OTcwOTgw
ZjRjMWY0NWVhMzE4MGMzZTc3MGY1ODA3My4uMTE1MmQzMWQ0YTQ1YzMyNzM0Y2RiYTkzMmFlMGUz
OGE5NmUwMmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgog
I2luY2x1ZGUgIk1vY2tIaWRTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiTW9ja0xvY2FsU2VydmljZS5o
IgorI2luY2x1ZGUgIk1vY2tOZmNTZXJ2aWNlLmgiCisjaW5jbHVkZSAiTmZjU2VydmljZS5oIgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNiAr
NDcsOCBAQCBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGUoVwogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6VXNiOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxIaWRT
ZXJ2aWNlPihvYnNlcnZlcik7CiAjZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6Ok5mYzoKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmZjU2Vydmlj
ZT4ob2JzZXJ2ZXIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbFNlcnZpY2U+KG9ic2VydmVyKTsK
QEAgLTYwLDYgKzY0LDggQEAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
PiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW8KICAgICBjYXNlIFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYjoKICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWVSZWY8TW9ja0hpZFNlcnZpY2U+KG9ic2VydmVyLCBjb25maWd1cmF0aW9uKTsKICNlbmRpZgor
ICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2NrTmZjU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3VyYXRp
b24pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2NrTG9jYWxTZXJ2aWNlPihvYnNlcnZlciwgY29uZmln
dXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmgKaW5kZXggN2QyZDM1ZjI0N2RlZDAyZTA2
ZjRkNmIxNWQzYTlkNzU0MWVkMmFjZi4uZThlYzIzY2JiMjEwMjFmNTY2ZGQ0ZDgxODczZjk0YmUw
MGMwYWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaApAQCAtMjcsMTcgKzI3LDE2IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCiAj
aW5jbHVkZSA8SU9LaXQvaGlkL0lPSElETWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBDdGFwSGlkRHJpdmVyOwogY2xhc3MgSGlkQ29ubmVjdGlvbjsKIAotY2xhc3MgSGlk
U2VydmljZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitjbGFzcyBI
aWRTZXJ2aWNlIDogcHVibGljIEZpZG9TZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBI
aWRTZXJ2aWNlKE9ic2VydmVyJik7CiAgICAgfkhpZFNlcnZpY2UoKTsKQEAgLTUxLDExICs1MCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKTsK
ICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBjcmVhdGVIaWRDb25uZWN0aW9u
KElPSElERGV2aWNlUmVmKSBjb25zdDsKIAotICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRl
ckdldEluZm8oQ3RhcEhpZERyaXZlciogZGV2aWNlUmVmLCBWZWN0b3I8dWludDhfdD4mJiBpbmZv
KTsKLQogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKLSAgICAvLyBL
ZWVwaW5nIGRyaXZlcnMgYWxpdmUgd2hlbiB0aGV5IGFyZSBpbml0aWFsaXppbmcgYXV0aGVudGlj
YXRvcnMuCi0gICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4+IG1fZHJp
dmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2Uu
bW0KaW5kZXggOWVhZTE4ZWRkNWY0ZDJkYzVkZjM4ZTk2ZDA1MDUwOTNiY2E5YjM5OC4uZWYwNWQ0
MmY3NjE2MjNjNWI0ZjliNDJiZDA0NDdiMWVjNzNkNzNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLm1tCkBAIC0yOCwxNSArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExB
VEZPUk0oTUFDKQogCi0jaW1wb3J0ICJDdGFwQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCAiQ3Rh
cEhpZERyaXZlci5oIgogI2ltcG9ydCAiSGlkQ29ubmVjdGlvbi5oIgotI2ltcG9ydCAiVTJmQXV0
aGVudGljYXRvci5oIgotI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2Uu
aD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIGZpZG87CkBAIC01Niw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZVJlbW92
ZWRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVm
CiB9CiAKIEhpZFNlcnZpY2U6OkhpZFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDog
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCisgICAgOiBGaWRvU2Vydmlj
ZShvYnNlcnZlcikKIHsKICAgICBtX21hbmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0Rp
Y3Rpb25hcnkgKm1hdGNoaW5nRGljdGlvbmFyeSA9IEB7CkBAIC05MiwzMiArODUsNyBAQCBVbmlx
dWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISURE
ZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
dGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBh
dXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3Qo
ZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRo
ZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0g
ZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewotICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVBZGREZXZpY2VBZnRlckdldElu
Zm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQg
PSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250
aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50
OF90PiYmIHJlc3BvbnNlKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBk
cml2ZXIgPSBtX2RyaXZlcnMudGFrZShwdHIpOwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZl
cigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBp
bmZvID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYm
IGluZm8tPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52
ZXJzaW9ucygpLmVuZCgpKSB7Ci0gICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRl
ZChDdGFwQXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5m
bykpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBh
cnNlIGEgY3RhcCBnZXQgaW5mbyByZXNwb25zZS4iKTsKLSAgICBkcml2ZXItPnNldFByb3RvY29s
KFByb3RvY29sVmVyc2lvbjo6a1UyZik7Ci0gICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFk
ZGVkKFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJ
bmZvKHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihk
ZXZpY2UpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExp
bmsuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05l
YXJGaWVsZFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUwNWZhYzIyYjlkNDA1ZjUzMjg5Nzc4YWU3
MDE1YTBiODBlNGIzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikK
KworI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFdlYktpdCwgTmVhckZpZWxkKTsKKwor
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBORlRhZyk7CitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihXZWJLaXQsIE5GU2Vzc2lvbik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihXZWJLaXQsIE5GUmVhZGVyU2Vzc2lvbik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihXZWJLaXQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
NTQ0MjMzOTQ0YjAyZmE1NWVmZGU2Y2Y0YTc0NDI5ZDBlNWFjOTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmll
bGRTb2Z0TGluay5tbQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViS2l0LCBO
ZWFyRmllbGQpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVs
ZCwgTkZUYWcpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBOZWFyRmllbGQs
IE5GU2Vzc2lvbik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVs
ZCwgTkZSZWFkZXJTZXNzaW9uKTsKKworI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX09QVElPTkFMKFdlYktpdCwgTmVhckZpZWxkLCBORkhhcmR3YXJlTWFuYWdl
cik7CisjZWxzZQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBOZWFyRmllbGQs
IE5GSGFyZHdhcmVNYW5hZ2VyKTsKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL05mY0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODA4MzQ1MDY2MDkz
NGUxNTdkMDUxNWY1MmZhYjBkNmFkMjg4MTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIE5GUmVhZGVyU2Vzc2lvbjsKK09CSkNfQ0xBU1MgTlNB
cnJheTsKK09CSkNfQ0xBU1MgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5mY1NlcnZpY2U7CisKK2NsYXNzIE5mY0Nvbm5lY3Rpb24gOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmZjQ29ubmVjdGlvbj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5mY0Nvbm5lY3Rpb24pOworcHVi
bGljOgorICAgIE5mY0Nvbm5lY3Rpb24oUmV0YWluUHRyPE5GUmVhZGVyU2Vzc2lvbj4mJiwgTmZj
U2VydmljZSYpOworICAgIH5OZmNDb25uZWN0aW9uKCk7CisKKyAgICBWZWN0b3I8dWludDhfdD4g
dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgY29uc3Q7CisKKyAgICAvLyBGb3IgV0tO
RlJlYWRlclNlc3Npb25EZWxlZ2F0ZQorICAgIHZvaWQgZGlkRGV0ZWN0VGFncyhOU0FycmF5ICop
IGNvbnN0OworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxORlJlYWRlclNlc3Npb24+IG1fc2Vz
c2lvbjsKKyAgICBSZXRhaW5QdHI8V0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0
ZTsKKyAgICBXZWFrUHRyPE5mY1NlcnZpY2U+IG1fc2VydmljZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9O
ZmNDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MjU3ZWI5MTBlYjhiMjhlODg4NzE5MDY0MDdl
ZDYwODIzY2IyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZmNDb25uZWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZmNTZXJ2aWNlLmgiCisj
aW1wb3J0ICJXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Zp
ZG9Db25zdGFudHMuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCituYW1lc3BhY2UgeworaW5saW5lIGJv
b2wgY29tcGFyZVZlcnNpb24oTlNEYXRhICpkYXRhLCBjb25zdCB1aW50OF90IHZlcnNpb25bXSwg
c2l6ZV90IHZlcnNpb25TaXplKQoreworICAgIGlmIChkYXRhLmxlbmd0aCAhPSB2ZXJzaW9uU2l6
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhbWVtY21wKGRhdGEuYnl0ZXMs
IHZlcnNpb24sIHZlcnNpb25TaXplKTsKK30KK30gLy8gbmFtZXNwYWNlCisKK05mY0Nvbm5lY3Rp
b246Ok5mY0Nvbm5lY3Rpb24oUmV0YWluUHRyPE5GUmVhZGVyU2Vzc2lvbj4mJiBzZXNzaW9uLCBO
ZmNTZXJ2aWNlJiBzZXJ2aWNlKQorICAgIDogbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisg
ICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aENvbm5lY3Rpb246KnRoaXNdKSkKKyAgICAsIG1fc2VydmljZShtYWtlV2Vha1B0
cihzZXJ2aWNlKSkKK3sKKyAgICBbbV9zZXNzaW9uIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0
KCldOworICAgIC8vIEZJWE1FKDIwMDkzMykKKyAgICBbbV9zZXNzaW9uIHVwZGF0ZVVJQWxlcnRN
ZXNzYWdlOkAiSG9sZCB0aGUga2V5IGFnYWluc3QgdGhlIHRvcCBvZiB5b3VyIGRldmljZS4iXTsK
KyAgICBbbV9zZXNzaW9uIHN0YXJ0UG9sbGluZ107Cit9CisKK05mY0Nvbm5lY3Rpb246On5OZmND
b25uZWN0aW9uKCkKK3sKKyAgICBbbV9zZXNzaW9uIGRpc2Nvbm5lY3RUYWddOworICAgIFttX3Nl
c3Npb24gc3RvcFBvbGxpbmddOworICAgIFttX3Nlc3Npb24gZW5kU2Vzc2lvbl07Cit9CisKK1Zl
Y3Rvcjx1aW50OF90PiBOZmNDb25uZWN0aW9uOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSBjb25zdAoreworICAgIGF1dG8gcmVzcG9uc2VEYXRhID0gW21fc2Vzc2lvbiB0cmFuc2Nl
aXZlOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCld
XTsKKworICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZTsKKyAgICByZXNwb25zZS5hcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzcG9uc2VEYXRhLmJ5dGVzKSwgcmVz
cG9uc2VEYXRhLmxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCit2b2lkIE5mY0Nv
bm5lY3Rpb246OmRpZERldGVjdFRhZ3MoTlNBcnJheSAqdGFncykgY29uc3QKK3sKKyAgICAvLyBG
SVhNRSgyMDA5MzIpCisgICAgZm9yIChORlRhZyAqdGFnIGluIHRhZ3MpIHsKKyAgICAgICAgaWYg
KHRhZy50eXBlICE9IE5GVGFnVHlwZUdlbmVyaWM0QSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoIVttX3Nlc3Npb24gY29ubmVjdFRhZzp0YWddKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgLy8gQ29uZmlybSB0aGUgRklETyBhcHBsZXQgaXMgYXZhbGlhYmxl
IGJlZm9yZSByZXR1cm4uCisgICAgICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWFwcGxldC1zZWxlY3Rpb24KKyAgICAgICAg
YXV0byB2ZXJzaW9uRGF0YSA9IFttX3Nlc3Npb24gdHJhbnNjZWl2ZTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6a0NUQVBORkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kIGxlbmd0aDpzaXplb2Yoa0NUQVBO
RkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kKV1dOworICAgICAgICBpZiAoIXZlcnNpb25EYXRhIHx8
ICghY29tcGFyZVZlcnNpb24odmVyc2lvbkRhdGEsIGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uVTJm
LCBzaXplb2Yoa0NUQVBORkNBcHBsZXRTZWxlY3Rpb25VMmYpKSAmJiAhY29tcGFyZVZlcnNpb24o
dmVyc2lvbkRhdGEsIGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ3RhcCwgc2l6ZW9mKGtDVEFQTkZD
QXBwbGV0U2VsZWN0aW9uQ3RhcCkpKSkgeworICAgICAgICAgICAgW21fc2Vzc2lvbiBkaXNjb25u
ZWN0VGFnXTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFtX3NlcnZpY2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2VydmljZS0+ZGlk
Q29ubmVjdFRhZygpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZp
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDlmZjNjZTNkMGJlYjM5NmY5ZjY2M2Y1ZjQyNjgxODg5NjMwNzFi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjU2VydmljZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJGaWRvU2Vy
dmljZS5oIgorCitPQkpDX0NMQVNTIE5GUmVhZGVyU2Vzc2lvbjsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEN0YXBOZmNEcml2ZXI7CisKK2NsYXNzIE5mY1NlcnZpY2UgOiBwdWJsaWMg
Rmlkb1NlcnZpY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5mY1NlcnZpY2UoT2JzZXJ2ZXIm
KTsKKyAgICB+TmZjU2VydmljZSgpOworCisgICAgLy8gRm9yIE5mY0Nvbm5lY3Rpb24uCisgICAg
dm9pZCBkaWRDb25uZWN0VGFnKCk7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBPbmx5IG9uZSByZWFk
ZXIgc2Vzc2lvbiBpcyBhbGxvd2VkIHBlciB0aW1lLgorICAgIC8vIEtlZXAgdGhlIHJlYWRlciBz
ZXNzaW9uIGFsaXZlIGhlcmUgd2hlbiBpdCB0cmllcyB0byBjb25uZWN0IHRvIGEgdGFnLgorICAg
IHN0ZDo6dW5pcXVlX3B0cjxDdGFwTmZjRHJpdmVyPiBtX2RyaXZlcjsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIHN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwoKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRpbnVl
QWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKTsKKworICAg
IC8vIE92ZXJyaWRlZCBieSBNb2NrTmZjU2VydmljZS4KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1TdGFydERpc2NvdmVyeSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmE5ZWU3NGYyNGMxOTY2OWQyNjFlNjg3NjQ2NzI5MDg2OWE4NzU2NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05m
Y1NlcnZpY2UubW0KQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiTmZjU2VydmljZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKwor
I2ltcG9ydCAiQ3RhcE5mY0RyaXZlci5oIgorI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1w
b3J0ICJOZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisKKyNpbXBvcnQgIk5l
YXJGaWVsZFNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IGZpZG87CisKK05mY1NlcnZpY2U6Ok5mY1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQorICAg
IDogRmlkb1NlcnZpY2Uob2JzZXJ2ZXIpCit7Cit9CisKK05mY1NlcnZpY2U6On5OZmNTZXJ2aWNl
KCkKK3sKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpkaWRDb25uZWN0VGFnKCkKK3sKKyAgICBnZXRJ
bmZvKFdURk1vdmUobV9kcml2ZXIpKTsKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpzdGFydERpc2Nv
dmVyeUludGVybmFsKCkKK3sKKyAgICBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCk7Cit9CisKK3Zv
aWQgTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCit7CisgICAgaWYgKCFbW2dl
dE5GSGFyZHdhcmVNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRIYXJkd2FyZU1hbmFnZXJdIGFyZUZlYXR1
cmVzU3VwcG9ydGVkOk5GRmVhdHVyZVJlYWRlck1vZGUgb3V0RXJyb3I6bmlsXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gV2lsbCBiZSBleGVjdXRlZCBpbiBhIGRpZmZlcmVudCB0aHJlYWQu
CisgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHRoaXNdIChORlJlYWRlclNlc3Npb24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzdGFydCBhIE5G
QyByZWFkZXIgc2Vzc2lvbjogJUAiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBSZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiByZXRhaW5TZXNzaW9u
ID0gc2Vzc2lvbjsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywg
dGhpcywgc2Vzc2lvbiA9IHJldGFpblNlc3Npb25dICgpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAgIFtzZXNzaW9uIGVuZFNlc3Npb25dOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
Q3RhcE5mY0RyaXZlciBhbmQgTmZjQ29ubmVjdGlvbiB3aWxsIHRha2UgY2FyZSBvZiBwb2xsaW5n
IHRhZ3MgYW5kIGNvbm5lY3RpbmcgdG8gdGhlbS4KKyAgICAgICAgICAgIG1fZHJpdmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDdGFwTmZjRHJpdmVyPihtYWtlVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+
KFdURk1vdmUoc2Vzc2lvbiksICp0aGlzKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtb
Z2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygpIHNoYXJlZEhhcmR3YXJlTWFuYWdlcl0gc3RhcnRS
ZWFkZXJTZXNzaW9uV2l0aEFjdGlvblNoZWV0VUk6Y2FsbGJhY2suZ2V0KCldOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWUwYjk2Yzc2NjBkNDliY2M4Mzc1NmFlNWViZGQ4MGFhMDZlOTRlMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZS
ZWFkZXJTZXNzaW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZWFyRmllbGRT
UEkuaCIKKyNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgTmZjQ29ubmVjdGlvbjsKK30KKworQGludGVyZmFjZSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVn
YXRlIDogTlNPYmplY3QgPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPgorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb24mKWNvbm5lY3Rpb247
CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vz
c2lvbkRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjVkNzA4
MzIzMmEwZTA3YTNhMGYzMTZhMTYyMTJlYzRhMTZhNmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNl
c3Npb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgiCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgorCisjaW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCitAaW1wbGVt
ZW50YXRpb24gV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSB7CisgICAgV2Vha1B0cjxXZWJLaXQ6
Ok5mY0Nvbm5lY3Rpb24+IF9jb25uZWN0aW9uOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb24mKWNvbm5lY3Rpb24KK3sKKyAgICBp
ZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBfY29ubmVjdGlvbiA9IG1ha2VXZWFr
UHRyKGNvbm5lY3Rpb24pOworICAgIHJldHVybiBzZWxmOworfQorCisvLyBFeGVjdXRlZCBpbiBh
IGRpZmZlcmVudCB0aHJlYWQuCistICh2b2lkKXJlYWRlclNlc3Npb246KE5GUmVhZGVyU2Vzc2lv
biopdGhlU2Vzc2lvbiBkaWREZXRlY3RUYWdzOihOU0FycmF5PE5GVGFnICo+ICopdGFncworewor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgUmV0YWluUHRyPE5TQXJyYXk+
IHJldGFpblRhZ3MgPSB0YWdzOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVj
dGlvbiA9IF9jb25uZWN0aW9uLCB0YWdzID0gcmV0YWluVGFnc10geworICAgICAgICBpZiAoIWNv
bm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbm5lY3Rpb24tPmRpZERl
dGVjdFRhZ3ModGFncy5nZXQoKSk7CisgICAgfSk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4MjZhMjZiMzMwMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05m
Y1NlcnZpY2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk5mY1NlcnZpY2UuaCIKKworT0JKQ19DTEFTUyBO
U0RhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjsKKworY2xhc3MgTW9ja05mY1NlcnZpY2UgZmluYWwgOiBwdWJsaWMg
TmZjU2VydmljZSB7CitwdWJsaWM6CisgICAgTW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25z
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CisKKyAgICBOU0RhdGEqIHRy
YW5zY2VpdmUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3Zlcnko
KSBmaW5hbDsKKworICAgIHZvaWQgZGV0ZWN0VGFncygpIGNvbnN0OworCisgICAgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNT
ZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTmZjU2VydmljZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNjMWE0OTIwY2JkNTMxNmE0MDMyZDdl
YWE4YzVmYTY0ZTBkN2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpAQCAtMCwwICsxLDI1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTW9ja05mY1Nl
cnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisjaW1wb3J0ICJDdGFwTmZjRHJpdmVy
LmgiCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIK
KyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCisj
aW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCitAaW50ZXJmYWNlIFdLTW9ja05GVGFnIDog
TlNPYmplY3QgPE5GVGFnPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihORlRhZ1R5
cGUpdHlwZTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tNb2NrTkZUYWcgeworICAgIE5G
VGFnVHlwZSBfdHlwZTsKKyAgICBORlRlY2hub2xvZ3kgX3RlY2hub2xvZ3k7CisgICAgTlNEYXRh
ICpfdGFnSUQ7CisgICAgTlNEYXRhICpfYXBwRGF0YTsKKyAgICBOU0RhdGEgKl91aWQ7CisgICAg
TlNTdHJpbmcgKl9kZXNjcmlwdGlvbjsKKyAgICBORk5kZWZBdmFpbGFiaWxpdHkgX25kZWZBdmFp
bGFiaWxpdHk7CisgICAgc2l6ZV90IF9uZGVmTWVzc2FnZVNpemU7CisgICAgc2l6ZV90IF9uZGVm
Q29udGFpbmVyU2l6ZTsKK30KKworLSAoTkZUYWdUeXBlKXR5cGUKK3sKKyAgICByZXR1cm4gX3R5
cGU7Cit9CisKKy0gKE5GVGVjaG5vbG9neSl0ZWNobm9sb2d5Cit7CisgICAgcmV0dXJuIF90ZWNo
bm9sb2d5OworfQorCistIChOU0RhdGEgKilVSUQKK3sKKyAgICByZXR1cm4gX3VpZDsKK30KKwor
LSAoTlNEYXRhICopdGFnSUQKK3sKKyAgICByZXR1cm4gX3RhZ0lEOworfQorCitBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAoTlNEYXRhICopQXBwRGF0YQoreworICAg
IHJldHVybiBfYXBwRGF0YTsKK30KK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAorCistIChORk5kZWZBdmFpbGFiaWxpdHkpbmRlZkF2YWlsYWJpbGl0eQoreworICAgIHJldHVy
biBfbmRlZkF2YWlsYWJpbGl0eTsKK30KKworLSAoc2l6ZV90KW5kZWZNZXNzYWdlU2l6ZQorewor
ICAgIHJldHVybiBfbmRlZk1lc3NhZ2VTaXplOworfQorCistIChzaXplX3QpbmRlZkNvbnRhaW5l
clNpemUKK3sKKyAgICByZXR1cm4gX25kZWZDb250YWluZXJTaXplOworfQorCistIChOU1N0cmlu
ZyopZGVzY3JpcHRpb24KK3sKKyAgICByZXR1cm4gX2Rlc2NyaXB0aW9uOworfQorCistIChpZDxO
RlRhZ0E+KXRhZ0EKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChpZDxORlRhZ0E+KXRhZ0IK
K3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChpZDxORlRhZ0E+KXRhZ0YKK3sKKyAgICByZXR1
cm4gbmlsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhORlRhZzooaWQ8TkZUYWc+KXRh
ZworeworICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKKyAgICAgICAgX3R5cGUgPSB0
YWcudHlwZTsKKyAgICAgICAgX3RlY2hub2xvZ3kgPSB0YWcudGVjaG5vbG9neTsKKyAgICAgICAg
X3VpZCA9IFt0YWcuVUlEIGNvcHldOworICAgICAgICBfdGFnSUQgPSBbdGFnLnRhZ0lEIGNvcHld
OworICAgICAgICBfZGVzY3JpcHRpb24gPSBbdGFnLmRlc2NyaXB0aW9uIGNvcHldOworICAgICAg
ICBfbmRlZkF2YWlsYWJpbGl0eSA9IHRhZy5uZGVmQXZhaWxhYmlsaXR5OworICAgICAgICBfbmRl
Zk1lc3NhZ2VTaXplID0gdGFnLm5kZWZNZXNzYWdlU2l6ZTsKKyAgICAgICAgX25kZWZDb250YWlu
ZXJTaXplID0gdGFnLm5kZWZDb250YWluZXJTaXplOworICAgIH0KKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAoQk9PTClpc0VxdWFsVG9ORlRhZzooaWQ8TkZUYWc+KXRhZworeworICAgIHJldHVy
biBOTzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTkZUYWdUeXBlKXR5cGUK
K3sKKyAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBfdHlwZSA9IHR5cGU7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2lu
ZyBuYW1lc3BhY2UgZmlkbzsKK3VzaW5nIE1vY2sgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpOZmM7CisKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBpZDxORlJlYWRlclNlc3Np
b25EZWxlZ2F0ZT4gZ2xvYmFsTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CitzdGF0aWMgTW9ja05m
Y1NlcnZpY2UqIGdsb2JhbE5mY1NlcnZpY2U7CisKK3N0YXRpYyB2b2lkIE5GUmVhZGVyU2Vzc2lv
blNldERlbGVnYXRlKGlkLCBTRUwsIGlkPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSkKK3sKKyAgICBnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworfQor
CitzdGF0aWMgQk9PTCBORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbChpZCwgU0VMLCBORlRh
ZyAqKQoreworICAgIHJldHVybiBOTzsKK30KKworc3RhdGljIEJPT0wgTkZSZWFkZXJTZXNzaW9u
Q29ubmVjdFRhZyhpZCwgU0VMLCBORlRhZyAqKQoreworICAgIHJldHVybiBZRVM7Cit9CisKK3N0
YXRpYyBOU0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUoaWQsIFNFTCwgTlNEYXRhICop
Cit7CisgICAgaWYgKCFnbG9iYWxOZmNTZXJ2aWNlKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiBnbG9iYWxOZmNTZXJ2aWNlLT50cmFuc2NlaXZlKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlCisKK01vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIs
IGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CisgICAgOiBOZmNTZXJ2aWNlKG9ic2VydmVyKQorICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pCit7Cit9CisKK05TRGF0YSogTW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUoKQor
eworICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gcmVzdWx0ID0gW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzptX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2Fk
QmFzZTY0WzBdIG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFj
dGVyc107CisgICAgbV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NC5yZW1vdmUoMCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1T
dGFydERpc2NvdmVyeSgpCit7CisgICAgaWYgKCEhbV9jb25maWd1cmF0aW9uLm5mYykgeworICAg
ICAgICBnbG9iYWxOZmNTZXJ2aWNlID0gdGhpczsKKworICAgICAgICBNZXRob2QgbWV0aG9kVG9T
d2l6emxlMSA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNz
KCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopKTsKKyAgICAgICAgbWV0aG9kX3NldEltcGxlbWVu
dGF0aW9uKG1ldGhvZFRvU3dpenpsZTEsIChJTVApTkZSZWFkZXJTZXNzaW9uU2V0RGVsZWdhdGUp
OworCisgICAgICAgIE1ldGhvZCBtZXRob2RUb1N3aXp6bGUyID0gY2xhc3NfZ2V0SW5zdGFuY2VN
ZXRob2QoZ2V0TkZSZWFkZXJTZXNzaW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNvbm5lY3RUYWc6KSk7
CisgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6
Tm9Db25uZWN0aW9ucykKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRo
b2RUb1N3aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWdGYWlsKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dp
enpsZTIsIChJTVApTkZSZWFkZXJTZXNzaW9uQ29ubmVjdFRhZyk7CisKKyAgICAgICAgTWV0aG9k
IG1ldGhvZFRvU3dpenpsZTMgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNl
c3Npb25DbGFzcygpLCBAc2VsZWN0b3IodHJhbnNjZWl2ZTopKTsKKyAgICAgICAgbWV0aG9kX3Nl
dEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTMsIChJTVApTkZSZWFkZXJTZXNzaW9uVHJh
bnNjZWl2ZSk7CisKKyAgICAgICAgYXV0byByZWFkZXJTZXNzaW9uID0gYWRvcHROUyhbYWxsb2NO
RlJlYWRlclNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICAgICAgbV9kcml2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEN0YXBOZmNEcml2ZXI+KG1ha2VVbmlxdWVSZWY8TmZjQ29ubmVjdGlvbj4o
cmVhZGVyU2Vzc2lvbi5nZXQoKSwgKnRoaXMpKTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5kZXRlY3RUYWdzKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIExPR19FUlJPUigiTm8gbmZjIGF1dGhlbnRpY2F0b3JzIGlzIGF2YWlsYWJsZS4iKTsKK30K
Kwordm9pZCBNb2NrTmZjU2VydmljZTo6ZGV0ZWN0VGFncygpIGNvbnN0Cit7CisgICAgaWYgKG1f
Y29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6OkVycm9yOjpOb1RhZ3MpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW2NvbmZpZ3VyYXRp
b24gPSBtX2NvbmZpZ3VyYXRpb25dIHsKKyAgICAgICAgYXV0byB0YWdzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5m
Yy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5m
Yy0+bXVsdGlwbGVUYWdzKQorICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OltbV0tNb2NrTkZU
YWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVVbmtub3duXV07CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dLTW9ja05GVGFnIGFsbG9jXSBpbml0V2l0
aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24u
bmZjLT5tdWx0aXBsZVRhZ3MpCisgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6W1tXS01vY2tO
RlRhZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZUdlbmVyaWM0QV1dOworCisgICAgICAg
IFtnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSByZWFkZXJTZXNzaW9uOm5pbCBkaWREZXRl
Y3RUYWdzOnRhZ3MuZ2V0KCldOworICAgIH0pOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIGNh
bGxiYWNrLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCBmN2MzOTY5Njk1OTQxOGFiOTUwZDY3
ZjQ0MzZlY2ZlM2EzY2JmZDFjLi5mNDBhN2I3YmQ4YmUxYjdkMGIzNDI4NWJkNjY2Yzg3ZDBkY2Q3
OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtNzIsOSArNzIsMjQgQEAgc3RydWN0IE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZh
bHNlIH07CiAgICAgfTsKIAorICAgIHN0cnVjdCBOZmMgeworICAgICAgICBlbnVtIGNsYXNzIEVy
cm9yIDogdWludDhfdCB7CisgICAgICAgICAgICBTdWNjZXNzLAorICAgICAgICAgICAgTm9UYWdz
LAorICAgICAgICAgICAgV3JvbmdUYWdUeXBlLAorICAgICAgICAgICAgTm9Db25uZWN0aW9ucywK
KyAgICAgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICAgICAgfTsKKworICAgICAgICBFcnJv
ciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxv
YWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdzIHsgZmFsc2UgfTsKKyAgICB9Owor
CiAgICAgYm9vbCBzaWxlbnRGYWlsdXJlIHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxMb2NhbD4g
bG9jYWw7CiAgICAgT3B0aW9uYWw8SGlkPiBoaWQ7CisgICAgT3B0aW9uYWw8TmZjPiBuZmM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5jcHAKaW5kZXggYTAxNTVlZDFiZjYyMGY4MGE4YzRlODg2NjU1MWRjNDg2MzE0MGM2ZS4u
MGY5OTMzMzQ5OGIyYzczMDVjMzMxYTE1OGYyMWE0MWRhNDkwOWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDdGFwQXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdF
Ql9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNs
dWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSAiQ3RhcEhpZERyaXZlci5oIgpAQCAtMTE1LDQg
KzExNSw0IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSgpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZP
Uk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBB
dXRoZW50aWNhdG9yLmgKaW5kZXggMzFlODg4ODc1YTU2ZmVmOGUwOTA4MThhMTg2YzU3MTMzNTAz
Y2YzYi4uYTE4ZGYwNDk0YTk3N2U5OTA1ZDRmZTNkZTYwODI4NmNlNDc3YjA3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0
aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oPgpAQCAtNTgsNCArNTgsNCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5ODYzOTM2Yzk0YTJlNGE3
ZjAyZjk2YTZkZDU4YTQ2ZjQ3MjkxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKQEAgLTAs
MCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
dGFwTmZjRHJpdmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9BcGR1Q29tbWFuZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXBkdVJlc3BvbnNlLmg+Cisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1l
c3BhY2UgYXBkdTsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCitDdGFwTmZjRHJpdmVyOjpDdGFw
TmZjRHJpdmVyKFVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgOiBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworLy8gRklYTUUoMjAwOTM0
KQordm9pZCBDdGFwTmZjRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBS
ZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gRm9yIENUQVAyLCBjb21tYW5k
cyBmb2xsb3c6CisgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIu
MC1wcy0yMDE5MDEzMC9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAt
cHMtMjAxOTAxMzAuaHRtbCNuZmMtY29tbWFuZC1mcmFtaW5nCisgICAgaWYgKHByb3RvY29sKCkg
PT0gUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkgeworICAgICAgICBBcGR1Q29tbWFuZCBjb21tYW5k
OworICAgICAgICBjb21tYW5kLnNldENsYSgweDgwKTsKKyAgICAgICAgY29tbWFuZC5zZXRJbnMo
MHgxMCk7CisgICAgICAgIGNvbW1hbmQuc2V0RGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
Y29tbWFuZC5zZXRSZXNwb25zZUxlbmd0aChBcGR1Q29tbWFuZDo6a0FwZHVNYXhSZXNwb25zZUxl
bmd0aCk7CisKKyAgICAgICAgYXV0byBhcGR1UmVzcG9uc2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0
ZUZyb21NZXNzYWdlKG1fY29ubmVjdGlvbi0+dHJhbnNhY3QoY29tbWFuZC5nZXRFbmNvZGVkQ29t
bWFuZCgpKSk7CisgICAgICAgIGlmICghYXBkdVJlc3BvbnNlKSB7CisgICAgICAgICAgICByZXNw
b25kQXN5bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25zZS0+c3RhdHVzKCkgPT0gQXBkdVJlc3Bv
bnNlOjpTdGF0dXM6OlNXX0lOU19OT1RfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICAvLyBSZXR1
cm4ga0N0YXAxRXJySW52YWxpZENvbW1hbmQgaW5zdGVhZCBvZiBhbiBlbXB0eSByZXNwb25zZSB0
byBzaWduYWwgRmlkb1NlcnZpY2UgdG8gY3JlYXRlIGEgVTJGIGF1dGhlbnRpY2F0b3IKKyAgICAg
ICAgICAgIC8vIGZvciB0aGUgZ2V0SW5mbyBzdGFnZS4KKyAgICAgICAgICAgIHJlc3BvbmRBc3lu
YyhXVEZNb3ZlKGNhbGxiYWNrKSwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVz
cG9uc2VDb2RlOjprQ3RhcDFFcnJJbnZhbGlkQ29tbWFuZCkgfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25zZS0+c3RhdHVzKCkgIT0gQXBk
dVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SKSB7CisgICAgICAgICAgICByZXNwb25kQXN5
bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgLy8gRklYTUU6IFNvbWVob3cgZWxtaW5pYXRlIHRoZSBuZWVkIGZvciB0aGUg
Y29weT8KKyAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCAoVmVjdG9yPHVp
bnQ4X3Q+KGFwZHVSZXNwb25zZS0+ZGF0YSgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gRm9yIFUyRiwgVTJmQXV0aGVudGljYXRvciB3b3VsZCBoYW5kbGUgdGhlIEFQRFUg
ZW5jb2RpbmcuCisgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJm
LXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtbmZjLXByb3RvY29sLXYxLjItcHMtMjAxNzA0MTEu
aHRtbCNmcmFtaW5nCisgICAgY2FsbGJhY2sobV9jb25uZWN0aW9uLT50cmFuc2FjdChXVEZNb3Zl
KGRhdGEpKSk7Cit9CisKKy8vIFJldHVybiB0aGUgcmVzcG9uc2UgYXN5bmMgdG8gbWF0Y2ggdGhl
IEhJRCBiZWhhdmlvdXIsIHN1Y2ggdGhhdCBuZmMgY291bGQgZml0IGludG8gdGhlIGN1cnJlbnQg
aW5mcmEuCit2b2lkIEN0YXBOZmNEcml2ZXI6OnJlc3BvbmRBc3luYyhSZXNwb25zZUNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKSBjb25zdAoreworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZDAzYTgwMTA4MzBlNTQ2MjdhZTFkOWYxNDVhMDYzZGViYjdkOTVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwTmZjRHJpdmVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkN0YXBEcml2
ZXIuaCIKKyNpbmNsdWRlICJOZmNDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRz
IHRoZSBDVEFQIE5GQyBwcm90b2NvbDoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjCitjbGFzcyBDdGFwTmZjRHJpdmVyIDogcHVi
bGljIEN0YXBEcml2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEN0YXBOZmNEcml2ZXIoVW5p
cXVlUmVmPE5mY0Nvbm5lY3Rpb24+JiYpOworCisgICAgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpIGZpbmFsOworCitwcml2YXRlOgorICAg
IHZvaWQgcmVzcG9uZEFzeW5jKFJlc3BvbnNlQ2FsbGJhY2smJiwgVmVjdG9yPHVpbnQ4X3Q+JiYg
cmVzcG9uc2UpIGNvbnN0OworCisgICAgVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE4OWQ3Y2Y4
Y2RjMzkxNDNiNTNiZTk5ZTZlZDhiOGUwZTI4OGM1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRmlkb1NlcnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRl
ICJDdGFwQXV0aGVudGljYXRvci5oIgorI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIKKyNpbmNsdWRl
ICJVMmZBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlk
b0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitGaWRvU2VydmljZTo6Rmlkb1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQor
ICAgIDogQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCit7Cit9CisKK3Zv
aWQgRmlkb1NlcnZpY2U6OmdldEluZm8oc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJp
dmVyKQoreworICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgor
ICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFw
UmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNw
b25zZSkgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+Y29udGlu
dWVBZnRlckdldEluZm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgfSk7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7CisgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBGaWRv
U2VydmljZTo6Y29udGludWVBZnRlckdldEluZm8oQ3RhcERyaXZlciogcHRyLCBWZWN0b3I8dWlu
dDhfdD4mJiByZXNwb25zZSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJp
dmVyID0gbV9kcml2ZXJzLnRha2UocHRyKTsKKyAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIo
KSB8fCByZXNwb25zZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW5m
byA9IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBpZiAoaW5mbyAmJiBp
bmZvLT52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkgIT0gaW5mby0+dmVy
c2lvbnMoKS5lbmQoKSkgeworICAgICAgICBvYnNlcnZlcigpLT5hdXRoZW50aWNhdG9yQWRkZWQo
Q3RhcEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlciksIFdURk1vdmUoKmluZm8p
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJz
ZSBhIGN0YXAgZ2V0IGluZm8gcmVzcG9uc2UuIik7CisgICAgZHJpdmVyLT5zZXRQcm90b2NvbChQ
cm90b2NvbFZlcnNpb246OmtVMmYpOworICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRl
ZChVMmZBdXRoZW50aWNhdG9yOjpjcmVhdGUoV1RGTW92ZShkcml2ZXIpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1Nl
cnZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Rmlkb1NlcnZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGMzZDhkYjdkOTM5ZTA0M2E1ZGU5ZjNjOTg1Mzc2
ZjU3OGVlMDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBDdGFwRHJpdmVyOworCitjbGFzcyBGaWRvU2VydmljZSA6IHB1YmxpYyBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRmlkb1NlcnZp
Y2UoT2JzZXJ2ZXImKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZ2V0SW5mbyhzdGQ6OnVuaXF1
ZV9wdHI8Q3RhcERyaXZlcj4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb250aW51ZUFmdGVy
R2V0SW5mbyhDdGFwRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIGluZm8pOworCisgICAg
Ly8gS2VlcGluZyBkcml2ZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgZ2V0dGluZyBpbmZvIGZyb20g
ZGV2aWNlcy4KKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPj4gbV9kcml2
ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggYTU4NTY3
MmZkMmM5YzMxY2VlYzQzNjE2ZmM3MDU3ODU1NzVhYTU3Ny4uNGQxMmE5NjVkN2YwMTlhM2E1M2I5
ZmQyNmVjNmNhM2ZlMjY0YjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3Iu
Y3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVTJm
QXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFD
KQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KQEAgLTIzOCw0ICsyMzgsNCBAQCB2b2lkIFUy
ZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
QXBkdVJlc3BvbnNlJiYgYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAppbmRleCA5YTQ3NzM2ODZmNjA3
YzBiYTQwZGNjYzdmNWRmODExMDVjNTU1OTljLi5kOTA1NWNkMDU5MDE0MTVhYWQ1M2QyMTllYTEz
ZjljZWY0NjdhOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBM
QVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03OSw0ICs3OSw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiMDI4MjQ4
OTIwMDNhMDQ5ODkyOWU3MDZhNTkwNDU5YTRmODcxYWNkLi44NGEyYzhkMjEzZWJjYmQ3MDg4NzI0
MTIwMzU0ODM5NGQ1NmQ5NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckRh
dGEuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIxM2Uz
M2RhYzE5ZWMzY2Q0YTNkMjQ5MmFlOGU4ZWU0Y2VhM2FlZGYuLjBjYTM5NTE5YzI4MTEwODdiYTc3
NGQ4ODkwOTRkYWRmNTViZTg5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNiw2ICsxMDM2LDEwIEBACiAJCTUzQkE0N0QxMURD
MkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyog
TmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0NGQkJDODIyMjREMUI1MDAyNjY1NDYg
LyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0NGQkJDNzIyMjREMUIwMDAyNjY1NDYgLyogVGV4dENoZWNrZXJD
b21wbGV0aW9uLmggKi87IH07CiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQ
cm94eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9Owor
CQk1NzBEQUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQUMyMzAyNkY1QzAwRThGQzA0
IC8qIE5mY1NlcnZpY2UuaCAqLzsgfTsKKwkJNTcwREFBQzIyMzAzNzMwMzAwRThGQzA0IC8qIE5m
Y0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3MERBQUMwMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggKi87IH07CisJ
CTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDNDIz
MDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oICovOyB9OworCQk1
NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzgyMzAzODVGRDAwRThGQzA0
IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0NDMyMjI2NUNFMjAwQTFFQ0MzIC8q
IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZp
ZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9OwogCQk1NzU5N0VCOTIxODExRDlBMDAz
N0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIu
aCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VC
QjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRpY2F0b3IuaCAqLzsgfTsKQEAgLTEwNDQs
NiArMTA0OCwxMSBAQAogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50
aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0FD
OEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0I0QjQ2
MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0Nv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRp
b25YUENDb25zdGFudHMuaCAqLzsgfTsKKwkJNTdCODI2NDEyMzA0RUIzRTAwQjcyRUIwIC8qIE5l
YXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovOyB9OworCQk1
N0I4MjY0NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjgyNjQyMjMwNEYxNDAwMEI3
MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovOyB9OworCQk1N0I4MjY0NTIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxk
U29mdExpbmsubW0gKi87IH07CisJCTU3QjgyNjQ4MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2Vy
dmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdC
ODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi87IH07CisJCTU3QjgyNjRD
MjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1v
Y2tOZmNTZXJ2aWNlLmggKi87IH07CiAJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1
dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeS5oICovOyB9OwogCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAv
KiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JN
ZXNzYWdlcy5oICovOyB9OwpAQCAtMzQ2OCw2ICszNDc3LDE1IEBACiAJCTU3MEFCOTAwMjBCMjUx
NzQwMEI4QkU4NyAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4QkU4NyAvKiBT
ZWNLZXlQcm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2VjS2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcw
QjczQ0YyMzAyMzZERDAwRkFFQzUzIC8qIEN0YXBEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Rh
cERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFBQzIzMDI2RjVD
MDBFOEZDMDQgLyogTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZmNTZXJ2aWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBO
ZmNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmZjU2VydmljZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQjAyMzAyNzNEMjAwRThGQzA0IC8qIE5lYXJG
aWVsZC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE5lYXJGaWVsZC5mcmFtZXdvcms7IHBh
dGggPSBTeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9OZWFyRmllbGQuZnJhbWV3b3Jr
OyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0IC8q
IE5mY0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmZjQ29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29u
bmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5mY0Nvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzUyMzAzN0Y3
RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dpbmRvd09i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzUwNzVBNzIwQUI3NjM2MDA2OTNFQTkg
LyogV2ViQ3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNyZWRlbnRp
YWxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTBGMzJBMjAzMkQ0RTUw
MDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RL
Uk9PVDsgfTsKQEAgLTM0OTIsNiArMzUxMCwxMyBAQAogCQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQz
OEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZENvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0
QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xp
ZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29u
c3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQwMjMwNEVCM0Uw
MEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmVhckZpZWxkU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAv
KiBOZWFyRmllbGRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZWFyRmllbGRTb2Z0TGluay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZWFyRmllbGRT
b2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDYyMzA1MEM1
MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpZG9TZXJ2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAv
KiBGaWRvU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvU2VydmljZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjRBMjMwNjAzQzEwMEI3MkVCMCAvKiBN
b2NrTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTmZjU2VydmljZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05m
Y1NlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrTmZjU2VydmljZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCQkVBNkMyMkJDMEJGRTAwMjczOTk1IC8qIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRUQ2QTIxNDJF
QUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NjE4Miw2ICs2MjA3LDcgQEAKIAkJCQlBMUZCNjgyNjFGNkU1MUMxMDBDNDNGOUYgLyogQ3Jhc2hS
ZXBvcnRlckNsaWVudFNQSS5oICovLAogCQkJCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBE
ZXZpY2VJZGVudGl0eVNQSS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAvKiBE
ZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8q
IE5lYXJGaWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0MUIzQTI5RkQwMDNBNEM3RiAvKiBOU0lu
dm9jYXRpb25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFENjREQjc2MDA1RjRFRkYgLyogb2JqY1NQ
SS5oICovLAogCQkJCTBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEku
aCAqLywKQEAgLTY5NDgsNiArNjk3NCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uLmZyYW1ld29yayAqLywKKwkJCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyogTmVhckZp
ZWxkLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02OTYwLDYgKzY5ODcsMTAgQEAKIAkJCQk1NzBCNzNDRjIz
MDIzNkREMDBGQUVDNTMgLyogQ3RhcERyaXZlci5oICovLAogCQkJCTU3NTk3RUMwMjE4MThCRTIw
MDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLywKIAkJCQk1NzU5N0VCNzIxODExRDlBMDAz
N0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovLAorCQkJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMw
NCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLywKKwkJCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQg
LyogQ3RhcE5mY0RyaXZlci5oICovLAorCQkJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBG
aWRvU2VydmljZS5jcHAgKi8sCisJCQkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9T
ZXJ2aWNlLmggKi8sCiAJCQkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRp
Y2F0b3IuY3BwICovLAogCQkJCTU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50
aWNhdG9yLmggKi8sCiAJCQkpOwpAQCAtNzAyMSw2ICs3MDUyLDE0IEBACiAJCQkJNTdEQ0VEQTgy
MTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1N0RDRUQ5QTIx
NDhCMDgzMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggKi8sCiAJCQkJNTdEQ0VEQTAyMTQ4RkEw
RjAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1N0I4MjY0MjIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCAqLywKKwkJCQk1N0I4MjY0MzIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi8sCisJCQkJNTcwREFBQzAyMzAzNzMwMzAw
RThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZD
MDQgLyogTmZjQ29ubmVjdGlvbi5tbSAqLywKKwkJCQk1NzBEQUFBQzIzMDI2RjVDMDBFOEZDMDQg
LyogTmZjU2VydmljZS5oICovLAorCQkJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNT
ZXJ2aWNlLm1tICovLAorCQkJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLmggKi8sCisJCQkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0IC8qIFdL
TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcwMzgsNiArNzA3Nyw4IEBACiAJCQkJNTdE
Q0VEQzYyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8sCiAJCQkJ
NTdEQ0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLywKIAkJCQk1
N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1
N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLywKKwkJCQk1N0I4
MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UubW0gKi8sCiAJCQkJNTdEQ0VE
QkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9jazsKQEAgLTkzNDEsNiArOTM4Miw3IEBACiAJCQkJ
QTFGQjY4MjcxRjZFNTFDMTAwQzQzRjlGIC8qIENyYXNoUmVwb3J0ZXJDbGllbnRTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGlj
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0
YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMw
NCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZF
MDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
NzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTkzNzIsNiArOTQxNCw3IEBACiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEVu
Y29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBF
bnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIxNDk2QjUy
NjAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2
NDgyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
MEI5NjYxQTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE5MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDYwLDYgKzk1MDMsNyBAQAogCQkJCTU3RENF
RENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9j
a0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcy
RUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURCRjIxNEYw
RENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1
cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDY3LDYgKzk1MTEsOCBAQAogCQkJCTFBRENC
ODZCMTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdGRDMxODAyMkIzNTE1ODAwOEQwRThCIC8qIE5hdmlnYXRpb25TT0F1dGhvcml6
YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUJDM0RGNjE4OTlFNDM3MDA0RjA2
MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0I4MjY0NDIzMDRG
MTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
QjgyNjQxMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNkZCQTJBMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE2RkJEMjgxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1
Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTUxMiw2ICs5NTU4LDggQEAK
IAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNv
Y29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVCOTIyNTcwNDZGMDBENkY5N0UgLyogTmV0
d29ya1NvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUMyMjMwMzczMDMw
MEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQUFBRTIz
MDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVD
NTYxNDg5OUMwOTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTMxMjYxRjE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM1MjE0
ODk5ODE5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxMzgsNiArMTAxODYsNyBAQAogCQkJCTFBMUIwRUI4
MThBNDI0Q0QwMDM4NDgxQSAvKiBXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUExMzIxMjE5MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNBNjVERjFBN0MzQTdEMDBDQUM2
MzcgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERB
QUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlm
aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgx
MEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTExMTIyLDYgKzExMTcxLDcgQEAKIAkJCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyog
TWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgyMjEyQjZB
NzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJB
NzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdC
ODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MTM0NDMyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAwMDEyOEFGRCAvKiBOZXRz
Y2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5NjIxMkI2QURBMDBGNDkz
RkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdjZGExYTBiMzhhNmRl
ZjkwYWQzMzQ1YzIyNmNlYjBkN2U1NzYyMC4uYTdlNWIyNzY1YzEwNmVkZDFjOTEwN2NhYmYwMTA4
NjkyYzI2ZTE1MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNh
dG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgIFNldHVw
IE5GQyBtb2NrIHRlc3RpbmcgY29uZmlndXJhdGlvbi4KKwogMjAxOS0wOC0xMyAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChVQ2hhcjMyKSB0byBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXIoVUNoYXIzMikg
dG8gYXZvaWQgYWNjaWRlbnRhbCBjaGFuZ2UgaW4gYmVoYXZpb3Igd2hlbiByZXBsYWNpbmcgYXBw
ZW5kIHdpdGggZmxleGlibGVBcHBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3MjllMDVhOWI3YmM1OTEwYjA5
OTgwOWU4NmYwYTcyZmE1Y2ZjOTkuLjVkZjVhMDJjNWMwZTI2NjkyZTVjNzFmOThlM2ZiZTBlNjhi
NDMzY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtMjcwOCw2ICsyNzA4LDcxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3Vy
YXRpb25WCiAgICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0hpZEtleXMuZGF0YSgpLCByYXdIaWRWYWx1ZXMuZGF0YSgpLCByYXdI
aWRLZXlzLnNpemUoKSkpKTsKICAgICB9CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
bmZjUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmZj
IikpOworICAgIEpTVmFsdWVSZWYgbmZjVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRl
eHQsIGNvbmZpZ3VyYXRpb24sIG5mY1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgaWYgKCFK
U1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbmZjVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIG5mY1ZhbHVlKSkgeworICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0
LCBuZmNWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTT2JqZWN0UmVmIG5m
YyA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSwgMCk7CisKKyAgICAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVycm9yUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXJyb3IiKSk7CisgICAgICAgIEpTVmFsdWVSZWYgZXJyb3JW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBlcnJvclByb3BlcnR5TmFt
ZS5nZXQoKSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGVycm9y
VmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4+IG5mY0tleXM7CisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5
cGVSZWY+PiBuZmNWYWx1ZXM7CisgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpKTsKKyAgICAgICAgbmZjVmFsdWVzLmFw
cGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXJyb3JWYWx1ZSwg
MCkpLmdldCgpKSk7CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRC
YXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJw
YXlsb2FkQmFzZTY0IikpOworICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlO
YW1lLmdldCgpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwg
cGF5bG9hZEJhc2U2NFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0VmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBKU09iamVjdFJlZiBwYXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBh
eWxvYWRCYXNlNjRWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5n
dGhQcm9wZXJ0eSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgi
KSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHku
Z2V0KCksIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4
dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGF1dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5
Q3JlYXRlKCkpOworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0
aFZhbHVlLCBudWxscHRyKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
eWxvYWRCYXNlNjRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5
bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5
bG9hZEJhc2U2NCwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2
NHMuZ2V0KCksIHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2Fk
QmFzZTY0VmFsdWUsIDApKS5nZXQoKSkuZ2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJQYXlsb2FkQmFzZTY0IikpKTsKKyAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQocGF5bG9h
ZEJhc2U2NHMpOworICAgICAgICB9CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IG11bHRpcGxlVGFnc1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIm11bHRpcGxlVGFncyIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBtdWx0aXBsZVRhZ3NW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBtdWx0aXBsZVRhZ3NQcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbXVsdGlw
bGVUYWdzVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4
dCwgbXVsdGlwbGVUYWdzVmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGJvb2wgbXVsdGlwbGVUYWdzID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBtdWx0aXBs
ZVRhZ3NWYWx1ZSk7CisgICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkpOworICAgICAgICAgICAgbmZj
VmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtdWx0aXBsZVRhZ3MpKS5nZXQo
KSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd05mY0tleXM7
CisgICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd05mY1ZhbHVlczsKKyAgICAgICAgcmF3TmZj
S2V5cy5yZXNpemUobmZjS2V5cy5zaXplKCkpOworICAgICAgICByYXdOZmNWYWx1ZXMucmVzaXpl
KG5mY1ZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5mY0tl
eXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHJhd05mY0tleXNbaV0gPSBuZmNLZXlzW2ld
LmdldCgpOworICAgICAgICAgICAgcmF3TmZjVmFsdWVzW2ldID0gbmZjVmFsdWVzW2ldLmdldCgp
OworICAgICAgICB9CisKKyAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKSk7CisgICAgICAgIGNvbmZpZ3Vy
YXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd05mY0tleXMu
ZGF0YSgpLCByYXdOZmNWYWx1ZXMuZGF0YSgpLCByYXdOZmNLZXlzLnNpemUoKSkpKTsKKyAgICB9
CisKICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0NvbmZpZ3VyYXRpb25LZXlzOwogICAgIFZl
Y3RvcjxXS1R5cGVSZWY+IHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXM7CiAgICAgcmF3Q29uZmlndXJh
dGlvbktleXMucmVzaXplKGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTdhOTg5
ZDI5NjUzNTc5NjEyYmU2ZGE3MWIxMGEzMTQ1Njk1MWViNi4uZTU4OTA2NWMxMWQ0MDZkOGU0NzJh
NTg3ZmIyZWMwOTZlMTA1MjU3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTIwICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBT
dXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICBUaGlzIHBhdGNoIHJl
cGxhY2VzIHRoZSAibG9jYWwiIGtleXdvcmQgd2l0aCAiaGlkIi4KKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRp
bC5qczoKKwogMjAxOS0wOC0xMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpUGFkT1NdIHNsaWRlcy5nb29nbGUuY29tOiBDYW5ub3QgZGlzbWlzcyB0aGUg
Y29udGV4dCBtZW51IGJ5IHRhcHBpbmcgb24gdGhlIGNhbnZhcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDA1YjNjZGMyMzcwMjQ3ZTZlYzgwOGFhYzQ1NDA1
MDY4NzM3ZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisK
K1BBU1MgQ1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJlc3BvbnNlIGluIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci4gCitQQVNTIENUQVAgTkZDIHdpdGggd3JvbmcgZGF0YSBlcnJvciBpbiBhIG1v
Y2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMw
YjFiOGFlNDY4ODdmNWZiYTViMTMzYjg4MmY0ZTY0OWQ4YWQyNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRt
bApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGlj
YXRpb24gQVBJOiBDVEFQIE5GQyBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBu
YW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgIH0KKyAg
ICB9OworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBw
YXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgIiJdIH0gfSk7CisgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OworICAgIH0sICJDVEFQIE5GQyB3aXRoIGVtcHR5IGFwZHUgcmVzcG9uc2UgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAg
IH0sICJDVEFQIE5GQyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU3MjUwOThhZjczNTIwMWExYTc4NzI2MWUwMDliMWViZWVlZmM3MmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKwor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBubyB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdGFnIHR5cGUgaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBubyBjb25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG51bGwgdmVyc2lvbiBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9y
LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5m
Yy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MjQ4NTczM2M1YWYzNzIzODMyMWI2ZjI0YjIyMDM0
ZGZlZDRiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSwxNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlv
biBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0
aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3Vy
YXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBj
b25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9y
OiAibm8tdGFncyIgfSB9KTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBh
c2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVu
Z2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlD
cmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAg
ICAgICAgdGltZW91dDogMTAsCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlv
bjogeyBhdXRoZW50aWNhdG9yQXR0YWNobWVudDogInBsYXRmb3JtIiB9CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2Vl
ZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJP
cGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG5vIHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
KyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBw
bGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIndyb25nLXRhZy10eXBlIiB9IH0pOworICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBlIGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBs
ZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAg
IGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby1j
b25uZWN0aW9ucyIgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBubyBjb25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7
CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbIF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBudWxsIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
KyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBw
bGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpb
dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdmVyc2lvbiBpbiBhIG1vY2sgbmZj
IGF1dGhlbnRpY2F0b3IuIik7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhp
ZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dApp
bmRleCAzMTJkZTkzMGU0ZGI2NjAxMjczNzdmOTY4Y2VhY2Y4MGU1MWFkZmE2Li44MDcyNTFmODY5
NWRiODEyY2U0Njc0NzUyOWFmNDE4MDdiNzNhYWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlk
Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMSwxMiArMSwxMiBAQAogCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAK
LVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9y
U2VsZWN0aW9uIHsgJ2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJl
UmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBB
U1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9u
IHsgJ3ByZWZlcnJlZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdk
aXNjb3VyYWdlZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNl
bGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlcXVpcmVSZXNp
ZGVudEtleSB7IGZhbHNlIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3By
ZWZlcnJlZCcgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFn
ZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdv
IGNvbnNlY3V0aXZlIHJlcXVlc3RzLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9y
LiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0
ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
CitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVz
dGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IGExNDdlZjM3ZDUzOTNkZWI5Njk4NjVm
NDBiMWVlYzc1ZTk1YzdhNWIuLjNlNmFmMWE5NjI3MTNkMDdkZDY3ZWNiYmU5N2E2OGQ3NjAzMzM0
M2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3Nz
LXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rp
b24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAt
MTEwLDcgKzExMCw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Jlc3Vs
dChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfSBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAn
cHJlZmVycmVkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAn
cHJlZmVycmVkJyB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21p
c2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTE1Niw3ICsxNTYs
NyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlh
bCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdkaXNjb3VyYWdlZCcgfSBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25z
ID0gewpAQCAtMjI1LDcgKzIyNSw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
QEAgLTI0OCw3ICsyNDgsNyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKQEAgLTI3MSw1ICsyNzEsNSBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAg
Y2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWY1ZTgzMTJlMDJmM2JiZjk1OGEyOGI0MzcxZGVkYmVlMzA1ZjM3ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NiBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11
bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9z
cy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG11bHRpcGxlIHRhZ3MgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBVMkYgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjljYTRkMWJlOGI3Y2ZjOTY1MTIxZjNjZjE4NDc2MGIwMjUyOTQwZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNTQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRp
Y2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAg
Ly8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYg
dGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZj
Q3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3Jl
YXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKworICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25zZQorICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0
VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0
ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0
eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJo
dHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3Jl
ZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisgICAgICAg
IC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0g
Q0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9uZSIpOworCisgICAg
ICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0
aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRi
OTA5MmUxYzhkOWU1ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFkOCIpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYXV0aERhdGEuY291bnRlciwgNzgpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9I
ZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwIik7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElE
LCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICAv
LyBDaGVjayBub25lIGF0dGVzdGF0aW9uCisgICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGlj
S2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhh
dHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNo
ZWNrVTJmUmVzdWx0KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25z
ZQorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFs
LmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJh
c2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0
YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIi
LCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X25v
dF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIp
OworCisgICAgICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNvbnN0IGF0dGVzdGF0
aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9i
amVjdCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9u
ZSIpOworCisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRh
ID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBk
ZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2
MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAiKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdXRoRGF0YS5j
cmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7
CisgICAgICAgIC8vIENoZWNrIG5vbmUgYXR0ZXN0YXRpb24KKyAgICAgICAgYXNzZXJ0X3RydWUo
Y2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7CisgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7CisgICAgfQorCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAg
ICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2Nr
IG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAg
ICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAg
ICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAg
ICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0s
CisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNhdG9y
QXR0YWNobWVudDogImNyb3NzLXBsYXRmb3JtIiB9LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6
IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAg
ICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlv
biB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVk
IiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRs
ZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJM
LnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0
OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQs
IHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSwgbXVsdGlwbGVUYWdzOiB0cnVlIH0gfSk7
CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbXVsdGlwbGUgdGFncyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBw
cm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAg
ICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2
NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNl
KCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RO
ZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgICAgICBjaGVja1UyZlJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggVTJGIGluIGEgbW9j
ayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5m
Yy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMDhhMDQ4NDQyYTg0MGUwZDFkOTM0OTc2YTk3MzZhOTk3OTEwMDJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjY0ODc0ZmZmNWQ4MWZl
N2I2MTQ0MzlmNzI2MjlhOTlkMDAyNTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5o
dHRwcy5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBB
dXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIGZhaWx1cmUg
Y2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2Nr
IGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZl
cmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQg
aW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUyNjhiOWZkOGU1NmZkNDYwYWVhMWM3MDhhYWFhMGJjZTcwYTBlMmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmlt
dW0gb3B0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3Iu
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzgyYmNkY2JmNzc4OGUxNWE2YzExYTkzNTExMzVjY2JlMWY5ZjNh
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDcz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBzdWNjZXNzIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBu
ZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNl
QXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworCisgICAg
ZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIENoZWNr
IHJlc3BvbmQKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3Jl
ZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOwor
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3
SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNs
aWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpO
RFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoY3JlZGVudGlhbC5yZXNwb25zZS51c2VySGFuZGxlLCBudWxsKTsKKyAgICAgICAg
YXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCks
ICJhcHBpZCIpOworCisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1
dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25z
ZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhT
dHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1
ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFkOCIpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5j
b3VudGVyLCA4MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tVMmZSZXN1bHQoY3JlZGVu
dGlhbCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKKyAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3Jl
ZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUy
ZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJ
SVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6Indl
YmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2Nh
bGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5yZXNwb25z
ZS51c2VySGFuZGxlLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlh
bC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisgICAgICAgIC8vIENo
ZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3
IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAi
NDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4
MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCA1OSk7CisgICAgfQorCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAx
MDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1UyZlJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggVTJGIGluIGEgbW9j
ayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCA5ODdkMDcyMTlkNGU0NzcwNzRj
OThmNDJjMTViMTg1M2M3M2FjNjEyLi5iMGMyMjM5MjQ0MGEwYjU4ZDg4YjlhYWM5NTU3OWU2ZWQ5
NTk2YzhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJj
ZXMvdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMv
dXRpbC5qcwpAQCAtOTksNiArOTksNDAgQEAgY29uc3QgdGVzdFUyZlNpZ25SZXNwb25zZSA9CiAg
ICAgImY0VjRMZUVBaHFlRDBlZmZUalk1NTNIMTlxK2pXcTFUYzRXT2tBQT0iOwogY29uc3QgdGVz
dEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRPbmx5UmVzcG9uc2VCYXNlNjQgPSAiR1E9PSI7CiBj
b25zdCB0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQgPSAiSWc9PSI7
Citjb25zdCB0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCA9ICJWVEpHWDFZeWtBQT0iOworY29uc3Qg
dGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0ID0gIlJrbEVUMTh5WHpDUUFBPT0iOworY29uc3QgdGVz
dEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQgPQorICAgICJBS1lCZ21aVk1rWmZWakpvUmtsRVQx
OHlYekFDZ1d0b2JXRmpMWE5sWTNKbGRBTlFiVVM2bS9ic0xrbTVNQXlQIiArCisgICAgIjZTRExj
d1NrWW5KcjlXSjFjUFZrY0d4aGRQUnBZMnhwWlc1MFVHbHU5QVVaQkxBR2dRR1FBQT09IjsKK2Nv
bnN0IHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0ID0KKyAgICAiQUtNQlpuQmhZMnRsWkFK
WXhFYk1mN2xublZXeTI1Q1M0Y2paNWVIUUszV0E4TFNCTEhjSll1SGtqMXJZUVFBQSIgKworICAg
ICJBRTc0b0JIempBcE5GWUFHRnhFZm50eDlBRUFvQ0szTzZQNU95WE42Vi9mKzluQWdhME5BMkNn
cDRWM21nU0o1IiArCisgICAgImpPSExNRHJteHAvUzByYkQrYWlocnUxQzBhQU4zQmtpTTZHTnk1
blNsRFZxT2dUZ3BRRUNBeVlnQVNGWUlFRmIiICsKKyAgICAiaGUzUmtOdWQ2c2d5cmFCR2psaDFw
elRsQ1plaFFsTC9iMThIWjZXR0lsZ2dKZ2ZVZC9lbjlwNUFJcU1RYlVuaSIgKworICAgICJuRWVY
ZEZMa3ZXMC96VjVCcEVqak54QURvMk5oYkdjbVkzTnBaMWhITUVVQ0lRREtnK1pCbUVCdGYwbFdx
NFJlIiArCisgICAgImRINC9pL0xPWXFPUjR1UjJOQWoyelFtdzlRSWdiVFhiNGh2RmJqNFQyN2J2
L3JHcmMreSswcHVvWU9Ca0JrOVAiICsKKyAgICAibUNld1dsTmplRFZqZ1ZrQ3dqQ0NBcjR3Z2dH
bW9BTUNBUUlDQkhTRy9jSXdEUVlKS29aSWh2Y05BUUVMQlFBdyIgKworICAgICJMakVzTUNvR0Ex
VUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3IiAr
CisgICAgIklCY05NVFF3T0RBeE1EQXdNREF3V2hnUE1qQTFNREE1TURRd01EQXdNREJhTUc4eEN6
QUpCZ05WQkFZVEFsTkYiICsKKyAgICAiTVJJd0VBWURWUVFLREFsWmRXSnBZMjhnUVVJeElqQWdC
Z05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMCIgKworICAgICJaWE4wWVhScGIyNHhLREFt
QmdOVkJBTU1IMWwxWW1samJ5QlZNa1lnUlVVZ1UyVnlhV0ZzSURFNU5UVXdNRE00IiArCisgICAg
Ik5ESXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU1ZYZk90OXlSOU1YWHYvWnpF
OHhwT2g0NjYiICsKKyAgICAiNFlFSlZtRlEremlMTGw5bEo3OVhRSnFsZ2FVTkNzVXZHRVJjQ2hO
VWloTlR5S1RsbW5CT1VqdkFUZXZ0bzJ3dyIgKworICAgICJhakFpQmdrckJnRUVBWUxFQ2dJRUZU
RXVNeTQyTGpFdU5DNHhMalF4TkRneUxqRXVNVEFUQmdzckJnRUVBWUxsIiArCisgICAgIkhBSUJB
UVFFQXdJRklEQWhCZ3NyQmdFRUFZTGxIQUVCQkFRU0JCRDRvQkh6akFwTkZZQUdGeEVmbnR4OU1B
d0ciICsKKyAgICAiQTFVZEV3RUIvd1FDTUFBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFERmNT
SURtbWxKK09HYUp2V245Q3FodiIgKworICAgICJTZXVlVG9WRlFWVnZxdEFMT2dDS0hkd0IrV3gy
OW1nMkdwSGlNc2dRcDV4akIweWJibnBHNngyMTJGeEVTSitHIiArCisgICAgImluWkQwaXBjaGk3
QVB3UGxoSXZqZ0gxNnpWWDQ0YTRlNGhPc2M2dExJT1A3MVNhTXNIdUhnQ2NkSDB2ZzVkMnMiICsK
KyAgICAiYzAwNldKZTlUWE82ZnpWK29nakpuWXBOS1FMbUNYb0FYRTNKQk53S0dCSU9DdmZRRFB5
V21paUc1Ykd4WWZQdCIgKworICAgICJ5OFozcG5qWCsxTURuTTJoaHI0MHVsTXhsU05EblgvWlNu
RHlNR0liazhUT1FtalRGMDJVTzhhdVA4azN3dDVEIiArCisgICAgIjFyUk9JUlU5K0ZDU1g1V1FZ
aTY4UnVEckdNWkI4UDUrYnlvSnFiS1FkeG4yTG1FMW9aQXlvaFBBbUxjb1BPNlEiICsKKyAgICAi
QUE9PSI7Citjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjQgPQorICAgICJBS01C
b21KcFpGaEFLQWl0enVqK1RzbHplbGYzL3Zad0lHdERRTmdvS2VGZDVvRWllWXpoeXpBNjVzYWYw
dEsyIiArCisgICAgIncvbW9vYTd0UXRHZ0Rkd1pJak9oamN1WjBwUTFham9FNEdSMGVYQmxhbkIx
WW14cFl5MXJaWGtDV0NWR3pIKzUiICsKKyAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMwZ1N4
M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKworICAgICI0L0YwVkI3RGxV
Vk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJDIiAr
CisgICAgIlFvSjFMN0ZlNjRHOXVCZVFBQT09IjsKIAogY29uc3QgUkVTT1VSQ0VTX0RJUiA9ICIv
V2ViS2l0L3dlYmF1dGhuL3Jlc291cmNlcy8iOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376814</attachid>
            <date>2019-08-20 15:01:40 -0700</date>
            <delta_ts>2019-08-20 15:43:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188624-20190820150140.patch</filename>
            <type>text/plain</type>
            <size>130151</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2NzA4ZDY1OTc5MDg2
OGMyMDgwNTVmZjU0YTY0MTZjZWIwODY4Mi4uYjM5NTQ0YmIwZWYyN2Q2YWFmMDE3NTNkMDg5Njg3
NzI1ZjFiMWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTIwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBw
b3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
MzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKyAgICAgICAgQWRk
cyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9uLgorCiAyMDE5LTA4LTIwICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjb21t
ZW50IGZvbGxvdy11cCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDc1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYWVlYjViOTAxOThjYzkxMzE2YzllOGU2ZDFjNGYzMzZiMGU0
YWM5NS4uMzBjNWMwMDVhMDFmZDE3NzNkODllMTk1NWQ2YjBlNGFkMWY5NTJjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMDIgQEAKKzIwMTktMDgtMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3Jz
IGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRz
IHN1cHBvcnQgZm9yIE5GQyBhdXRoZW50aWNhdG9ycyBpbmNsdWRpbmcgYm90aCBGSURPMiBhbmQg
VTJGIG9uZXMuIEl0IHV0aWxpemVzIGEgcHJpdmF0ZQorICAgICAgICBmcmFtZXdvcmsgY2FsbGVk
IE5lYXJGaWVsZCBpbnN0ZWFkIG9mIENvcmVORkMgdG8gYmUgYWJsZSB0byBzdXBwbHkgYSBjdXN0
b20gVUkgbGF0ZXIgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgIFRoZSBwYXRjaCBmb2xsb3dzIGFs
bW9zdCB0aGUgc2FtZSBmbG93IGFzIHByZXZpb3VzIEhJRCBhbmQgTG9jYWwgYXV0aGVudGljYXRv
ciBzdXBwb3J0LgorICAgICAgICAxKSBEaXNjb3ZlcnkgaXMgdmlhIE5mY1NlcnZpY2Ugd2hpY2gg
d2lsbCBpbnZva2UgTkZIYXJkd2FyZU1hbmFnZXIgdG8gc3RhcnQgYSBnZW5lcmljIE5GQyByZWFk
ZXIgc2Vzc2lvbi4KKyAgICAgICAgMikgT25jZSBhIHJlYWRlciBzZXNzaW9uIGlzIGVzdGFibGlz
aGVkLCBhIE5mY0Nvbm5lY3Rpb24gaXMgY3JlYXRlZCB0byBzdGFydCB0aGUgcG9sbGluZyBhbmQg
cmVnaXN0ZXIgdGhlIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUKKyAgICAgICAgdG8gd2FpdCBm
b3IgJ2RpZERldGVjdFRhZ3MnLgorICAgICAgICAzKSBXaGVuIHRhZ3MgYXJlIGRldGVjdGVkLCBO
ZmNDb25uZWN0aW9uIHdpbGwgZGV0ZXJtaW5lIGlmIGl0IG1lZXRzIG91ciByZXF1cmllbWVudHM6
IHsgdHlwZSwgY29ubmVjdGFiaWxpdHksIGZpZG8gYXBwbGV0IGF2YWlsYWJpbGl0eSB9LgorICAg
ICAgICBUaGUgZmlyc3QgdGFnIHRoYXQgbWVldHMgYWxsIHJlcXVpcmVtZW50IHdpbGwgdGhlbiBi
ZSByZXR1cm5lZCBmb3IgV2ViQXV0aG4gb3BlcmF0aW9ucy4KKyAgICAgICAgNCkgVGhlIGZpcnN0
IFdlYkF1dGhuIG9wZXJhdGlvbiBpcyB0byBzZW5kIGF1dGhlbnRpY2F0b3JHZXRJbmZvIGNvbW1h
bmQgdG8gZGV0ZXJtaW5lIHRoZSBzdXBwb3J0ZWQgcHJvdG9jb2wsIGFuZCB0aGVuIGluaXRpYWxp
emUgY29ycmVzcG9uZGluZworICAgICAgICBhdXRoZW50aWNhdG9ycy4gTm90ZWQsIHRoZSBzZW5k
aW5nL3JlY2VpdmluZyBvZiB0aGlzIGNvbW1hbmQgaXMgbm93IGFic3RyYWN0ZWQgaW50byBGaWRv
U2VydmljZSB3aGljaCB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgSGlkU2VydmljZSBhbmQgTmZjU2Vy
dmljZS4KKyAgICAgICAgNSkgRnJvbSB0aGVuLCB0aGUgYWN0dWFsIFdlYkF1dGhuIHJlcXVlc3Qs
IGVpdGhlciBtYWtlQ3JlZGVudGlhbCBvciBnZXRBc3NlcnRpb24gd2lsbCBiZSBzZW50LgorCisg
ICAgICAgIEZvciB0ZXN0aW5nLCB0aGlzIHBhdGNoIGZvbGxvd3MgdGhlIHNhbWUgZmxvdyBhcyB3
ZWxsLgorICAgICAgICAxKSBNb2NrTmZjU2VydmljZSBvdmVycmlkZXMgTmZjU2VydmljZSB0byBt
b2NrIHRoZSBiZWhhdmlvciBvZiBORkMgVGFncyBkaXNjb3ZlcnkuCisgICAgICAgIDIpIFRoZSBz
YW1lIGNsYXNzIGFsc28gc3dpenpsZXMgbWV0aG9kcyBmcm9tIE5GUmVhZGVyU2Vzc2lvbiB0byBt
b2NrIHRhZyBjb25uZWN0aW9uIGFuZCBjb21tdW5pY2F0aW9uLgorCisgICAgICAgICogUGxhdGZv
cm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbDo6Y29sbGVjdFRyYW5zcG9ydHMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZTo6Y3JlYXRlTW9jayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2Vydmlj
ZTo6SGlkU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmRldmljZUFkZGVk
KToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdl
dEluZm8pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9OZWFyRmllbGRTb2Z0TGluay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9I
aWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L05mY0Nvbm5lY3Rpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6Zmlkbzo6Y29tcGFyZVZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25u
ZWN0aW9uOjpOZmNDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVjdGlvbjo6
fk5mY0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp0cmFuc2Fj
dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OmRpZERldGVjdFRhZ3Mg
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNT
ZXJ2aWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5m
Y1NlcnZpY2U6Ok5mY1NlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjp+TmZj
U2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OmRpZENvbm5lY3RUYWcpOgor
ICAgICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjpzdGFydERpc2NvdmVyeUludGVybmFsKToKKyAg
ICAgICAgKFdlYktpdDo6TmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLmguCisgICAgICAgICgtW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgaW5pdFdpdGhDb25u
ZWN0aW9uOl0pOgorICAgICAgICAoLVtXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIHJlYWRlclNl
c3Npb246ZGlkRGV0ZWN0VGFnczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW06IEFkZGVk
LgorICAgICAgICAoLVtXS01vY2tORlRhZyB0eXBlXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFn
IHRlY2hub2xvZ3ldKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgVUlEXSk6CisgICAgICAgICgt
W1dLTW9ja05GVGFnIHRhZ0lEXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIEFwcERhdGFdKToK
KyAgICAgICAgKC1bV0tNb2NrTkZUYWcgbmRlZkF2YWlsYWJpbGl0eV0pOgorICAgICAgICAoLVtX
S01vY2tORlRhZyBuZGVmTWVzc2FnZVNpemVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgbmRl
ZkNvbnRhaW5lclNpemVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgZGVzY3JpcHRpb25dKToK
KyAgICAgICAgKC1bV0tNb2NrTkZUYWcgdGFnQV0pOgorICAgICAgICAoLVtXS01vY2tORlRhZyB0
YWdCXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIHRhZ0ZdKToKKyAgICAgICAgKC1bV0tNb2Nr
TkZUYWcgaW5pdFdpdGhORlRhZzpdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaXNFcXVhbFRv
TkZUYWc6XSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIGluaXRXaXRoVHlwZTpdKToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdl
YktpdDo6TW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
TmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tOZmNTZXJ2aWNlOjpkZXRlY3RUYWdzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBBdXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZj
RHJpdmVyOjpDdGFwTmZjRHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6
dHJhbnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpyZXNwb25kQXN5bmMg
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBO
ZmNEcml2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkZpZG9TZXJ2aWNlOjpGaWRvU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNl
OjpnZXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJH
ZXRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRv
U2VydmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA4LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZpeCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdl
YktpdCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvQ29uc3RhbnRzLmgKaW5kZXggMjExZTNjODFmM2YwZGUyZmU1YmNiZmNlNjNlM2U0ZmM4
MTUwMmEyMC4uZjI2Y2FlYThmNzIxMzE1NmY2OTdhNjM4MWZjNjAxNWMwMzQ1ZjUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50
cy5oCkBAIC0yMjMsNiArMjIzLDI1IEBAIGNvbnN0IGNoYXIga1UyZlZlcnNpb25bXSA9ICJVMkZf
VjIiOwogY29uc3QgdWludDMyX3Qga0NUQVBISURVc2FnZVBhZ2UgPSAweEYxRDA7CiBjb25zdCB1
aW50MzJfdCBrQ1RBUEhJRFVzYWdlID0gMHgwMTsKIAorLy8gQ1RBUE5GQyBBcHBsZXQgc2VsZWN0
aW9uIGNvbW1hbmQgYW5kIHJlc3BvbnNlcworLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3Nw
ZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXBy
b3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNuZmMtYXBwbGV0LXNlbGVjdGlvbgorY29uc3Qg
dWludDhfdCBrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkNvbW1hbmRbXSA9IHsKKyAgICAweDAwLCAw
eEE0LCAweDA0LCAweDAwLCAvLyBDTEEsIElOUywgUDEsIFAyCisgICAgMHgwOCwgLy8gTAorICAg
IDB4QTAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NDcsIC8vIFJJRAorICAgIDB4MkYsIDB4MDAsIDB4
MDEgLy8gUElYCit9OworCitjb25zdCB1aW50OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uVTJm
W10gPSB7CisgICAgMHg1NSwgMHgzMiwgMHg0NiwgMHg1RiwgMHg1NiwgMHgzMiwgLy8gVmVyc2lv
bgorICAgIDB4OTAsIDB4MDAgLy8gQVBEVSByZXNwb25zZSBjb2RlCit9OworCitjb25zdCB1aW50
OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ3RhcFtdID0geworICAgIDB4NDYsIDB4NDksIDB4
NDQsIDB4NGYsIDB4NWYsIDB4MzIsIDB4NWYsIDB4MzAsIC8vIFZlcnNpb24KKyAgICAweDkwLCAw
eDAwIC8vIEFQRFUgcmVzcG9uc2UgY29kZQorfTsKKwogfSAvLyBuYW1lc3BhY2UgZmlkbwogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvQ29jb2EvTmVhckZpZWxkU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTczYTUzYTg1ZmJhYTZlODk1ODQz
MTZlNzM2M2VlMTk1Y2Q2NGQ3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQSS5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxOZWFyRmllbGQvTmVhckZpZWxkLmg+CisKKyNl
bHNlCisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBORkZlYXR1cmUpIHsKKyAgICBO
RkZlYXR1cmVSZWFkZXJNb2RlICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKK307CisKK3R5cGVk
ZWYgTlNfRU5VTSh1aW50MzJfdCwgTkZUYWdUeXBlKSB7CisgICAgTkZUYWdUeXBlVW5rbm93biAg
ICA9IDAsCisgICAgTkZUYWdUeXBlR2VuZXJpYzRBICA9IDMsCit9OworCitAcHJvdG9jb2wgTkZU
YWdBCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZ0IKK0BlbmQKKworQHByb3RvY29sIE5GVGFnRgor
QGVuZAorCitAcHJvdG9jb2wgTkZUYWcgPE5TT2JqZWN0PgorQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBORlRhZ1R5cGUgdHlwZTsKK0BlbmQKKworQGludGVyZmFjZSBORlRhZyA6IE5T
T2JqZWN0IDxOU1NlY3VyZUNvZGluZywgTkZUYWcsIE5GVGFnQSwgTkZUYWdCLCBORlRhZ0Y+CitA
ZW5kCisKK0Bwcm90b2NvbCBORlNlc3Npb24gPE5TT2JqZWN0PgorLSAodm9pZCkgZW5kU2Vzc2lv
bjsKK0BlbmQKKworQGludGVyZmFjZSBORlNlc3Npb24gOiBOU09iamVjdCA8TkZTZXNzaW9uPgor
QGVuZAorCitAcHJvdG9jb2wgTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CisKK0BpbnRlcmZhY2Ug
TkZSZWFkZXJTZXNzaW9uIDogTkZTZXNzaW9uCitAcHJvcGVydHkgKGFzc2lnbikgaWQ8TkZSZWFk
ZXJTZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOworCistIChCT09MKSBzdGFydFBvbGxpbmc7Cist
IChCT09MKSBzdG9wUG9sbGluZzsKKy0gKEJPT0wpIGNvbm5lY3RUYWc6KE5GVGFnKil0YWc7Cist
IChCT09MKSBkaXNjb25uZWN0VGFnOworLSAoTlNEYXRhKikgdHJhbnNjZWl2ZTooTlNEYXRhKilj
YXBkdTsKKy0gKE5TRXJyb3IgKikgdXBkYXRlVUlBbGVydE1lc3NhZ2U6KE5TU3RyaW5nICopbWVz
c2FnZTsKK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIDxOU09iamVj
dD4KK0BvcHRpb25hbAorLSAodm9pZCkgcmVhZGVyU2Vzc2lvbjooTkZSZWFkZXJTZXNzaW9uKil0
aGVTZXNzaW9uIGRpZERldGVjdFRhZ3M6KE5TQXJyYXk8TkZUYWcgKj4gKil0YWdzOworQGVuZAor
CitAaW50ZXJmYWNlIE5GSGFyZHdhcmVNYW5hZ2VyIDogTlNPYmplY3QKKysgKGluc3RhbmNldHlw
ZSkgc2hhcmVkSGFyZHdhcmVNYW5hZ2VyOworLSAoTlNPYmplY3Q8TkZTZXNzaW9uPiAqKSBzdGFy
dFJlYWRlclNlc3Npb25XaXRoQWN0aW9uU2hlZXRVSToodm9pZCheKShORlJlYWRlclNlc3Npb24g
KnNlc3Npb24sIE5TRXJyb3IgKmVycm9yKSl0aGVTdGFydENhbGxiYWNrOworLSAoQk9PTClhcmVG
ZWF0dXJlc1N1cHBvcnRlZDooTkZGZWF0dXJlKWZlYXR1cmVNYXNrIG91dEVycm9yOihOU0Vycm9y
Kiopb3V0RXJyb3I7CitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGI0NjZkMmM3NDg5
ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1MTY0NDQuLjgxMzc4ODFiYjQxZWU3YTk3ODNiYWQ4NjQ0
NTcxZGExZjkxZmQ2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDA4LDYgKzQwOCw4IEBAIFVJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKIAogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAorVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKK1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDMwZjQ4OGFiNTgwODkxZTk5MzU0NTJkNmI2MTM4ZTAzY2JiODAyY2UuLmJkOTk1ZTk1
NmY4ZWY2YTNmOGIxMjFhZTBiZWI5YmI0ZmNmYzJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTQ5Niw5ICs0OTYsMTQgQEAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCitVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KIAogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA4ZmFhNzZmM2E0
OGFjOGJlOTNmN2JmMzc4MGNjNDQzNGM2MDY5NTZmLi5hZjg0YTkxMzcwZmY4ZTA3OTdkNGY2MTRh
ZTgyY2EzMGQzMmY4NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTY3OCw2ICs2NzgsMzAgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29uZmlndXJhdGlvbi5oaWQgPSBXVEZNb3Zl
KGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gbmZjUmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0
aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKS5nZXQoKSkpKSB7Cisg
ICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjIG5m
YzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7Cisg
ICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBX
ZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6OlN1
Y2Nlc3M7CisgICAgICAgIGlmIChlcnJvciA9PSAibm8tdGFncyIpCisgICAgICAgICAgICBuZmMu
ZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6
RXJyb3I6Ok5vVGFnczsKKyAgICAgICAgaWYgKGVycm9yID09ICJ3cm9uZy10YWctdHlwZSIpCisg
ICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlwZTsKKyAgICAgICAgaWYgKGVycm9yID09
ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnM7
CisgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNpb3VzLXBheWxvYWQiKQorICAgICAgICAgICAg
bmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpO
ZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOworCisgICAgICAgIGlmIChhdXRvIHBheWxvYWRC
YXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJh
c2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAgbmZjLnBheWxvYWRCYXNlNjQgPSBXZWJLaXQ6
OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3IoKTsKKworICAgICAgICBpZiAo
YXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKKyAgICAgICAgICAgIG5mYy5tdWx0aXBsZVRh
Z3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRhZ3MpOworCisgICAgICAgIGNvbmZpZ3Vy
YXRpb24ubmZjID0gV1RGTW92ZShuZmMpOworICAgIH0KKwogICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggMmMwODQ0NTc4NTdkNDEwOWM4NDMxMTU5
MTgzMGUzNGIyYTI1YjZkZi4uMGQ3YjY2MTNmZjZhZTZkNmE4NTkxYjZkYzA4M2EzMWNlYWQ3Mjlk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzgsMTUgKzM4LDE1
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5h
Z2VySW50ZXJuYWwgewogCiAjaWYgUExBVEZPUk0oTUFDKQotY29uc3Qgc2l6ZV90IG1heFRyYW5z
cG9ydE51bWJlciA9IDI7Citjb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVtYmVyID0gMzsKICNl
bHNlCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVtYmVyID0gMTsKK2NvbnN0IHNpemVfdCBt
YXhUcmFuc3BvcnROdW1iZXIgPSAyOwogI2VuZGlmCiAKIC8vIFN1Z2dlc3RlZCBieSBXZWJBdXRo
TiBzcGVjIGFzIG9mIDcgQXVndXN0IDIwMTguCiBjb25zdCB1bnNpZ25lZCBtYXhUaW1lT3V0VmFs
dWUgPSAxMjAwMDA7CiAKLS8vIEZJWE1FKDE4ODYyNCwgMTg4NjI1KTogU3VwcG9ydCBORkMgYW5k
IEJMRSBhdXRoZW50aWNhdG9ycy4KKy8vIEZJWE1FKDE4ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhl
bnRpY2F0b3JzLgogc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29s
bGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0aGVudGljYXRvclNl
bGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IHJlc3Vs
dDsKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3Bv
cnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGkKICAgICAgICAgYWRk
UmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogI2VuZGlm
CisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6
TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTY5LDcgKzcxLDExIEBA
IHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFuc3Bv
cnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMp
OworI2Vsc2UKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSByZXN1bHQuYWRkKEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6Ok5mYyk7CiAjZW5kaWYKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3Bv
cnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAgYWRk
UmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogI2VuZGlm
CisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6
TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMCw4ICsxMDgsOSBA
QCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNw
b3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAg
ICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICNlbmRpZgorICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
fQogICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJ
bnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CkBAIC0xMDksNiArMTE4LDggQEAgc3RhdGljIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3Qg
VmVjdG9yPFB1YmxpY0sKICAgICAgICAgaWYgKCFyZXN1bHQuY29udGFpbnMoQXV0aGVudGljYXRv
clRyYW5zcG9ydDo6VXNiKSAmJiBhbGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0cy5jb250YWlucyhB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogI2VuZGlmCisgICAgICAgIGlmICghcmVzdWx0LmNv
bnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYykgJiYgYWxsb3dDcmVkZW50aWFsLnRy
YW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKICAgICAgICAgaWYg
KHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVtYmVyKQogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZS5jcHAKaW5kZXggZjQ1NjU3Yjk1OTcwOTgwZjRjMWY0NWVhMzE4MGMzZTc3MGY1ODA3
My4uMTE1MmQzMWQ0YTQ1YzMyNzM0Y2RiYTkzMmFlMGUzOGE5NmUwMmMyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcApAQCAtMzIsNiArMzIs
OCBAQAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgogI2luY2x1ZGUgIk1vY2tIaWRTZXJ2aWNl
LmgiCiAjaW5jbHVkZSAiTW9ja0xvY2FsU2VydmljZS5oIgorI2luY2x1ZGUgIk1vY2tOZmNTZXJ2
aWNlLmgiCisjaW5jbHVkZSAiTmZjU2VydmljZS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNiArNDcsOCBAQCBVbmlxdWVSZWY8QXV0aGVu
dGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpj
cmVhdGUoVwogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiOgog
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxIaWRTZXJ2aWNlPihvYnNlcnZlcik7CiAjZW5k
aWYKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYzoKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmZjU2VydmljZT4ob2JzZXJ2ZXIpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxMb2NhbFNlcnZpY2U+KG9ic2VydmVyKTsKQEAgLTYwLDYgKzY0LDggQEAgVW5pcXVl
UmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZTo6Y3JlYXRlTW8KICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6OlVzYjoKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TW9ja0hpZFNlcnZpY2U+KG9i
c2VydmVyLCBjb25maWd1cmF0aW9uKTsKICNlbmRpZgorICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2Nr
TmZjU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3VyYXRpb24pOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxN
b2NrTG9jYWxTZXJ2aWNlPihvYnNlcnZlciwgY29uZmlndXJhdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRT
ZXJ2aWNlLmgKaW5kZXggN2QyZDM1ZjI0N2RlZDAyZTA2ZjRkNmIxNWQzYTlkNzU0MWVkMmFjZi4u
ZThlYzIzY2JiMjEwMjFmNTY2ZGQ0ZDgxODczZjk0YmUwMGMwYWQ1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UuaApAQCAtMjcsMTcgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKSAm
JiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vydmlj
ZS5oIgorI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElE
TWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBDdGFwSGlkRHJpdmVyOwog
Y2xhc3MgSGlkQ29ubmVjdGlvbjsKIAotY2xhc3MgSGlkU2VydmljZSA6IHB1YmxpYyBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitjbGFzcyBIaWRTZXJ2aWNlIDogcHVibGljIEZpZG9T
ZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWRTZXJ2aWNlKE9ic2VydmVyJik7CiAg
ICAgfkhpZFNlcnZpY2UoKTsKQEAgLTUxLDExICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKTsKICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxI
aWRDb25uZWN0aW9uPiBjcmVhdGVIaWRDb25uZWN0aW9uKElPSElERGV2aWNlUmVmKSBjb25zdDsK
IAotICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oQ3RhcEhpZERyaXZlciog
ZGV2aWNlUmVmLCBWZWN0b3I8dWludDhfdD4mJiBpbmZvKTsKLQogICAgIFJldGFpblB0cjxJT0hJ
RE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKLSAgICAvLyBLZWVwaW5nIGRyaXZlcnMgYWxpdmUgd2hl
biB0aGV5IGFyZSBpbml0aWFsaXppbmcgYXV0aGVudGljYXRvcnMuCi0gICAgSGFzaFNldDxzdGQ6
OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4+IG1fZHJpdmVyczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXggYWJkMGU3ZTcyOTQ3OTEy
OGNiNmFmZmY3ZjIxODEyNjNlNGRhOTgzNS4uMTI3ODA2ZmFkNDgxYWQyYjZmZmIyN2U3ODM4YjBj
Njg5ODQwOTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBAIC0yOCwxNSArMjgsOCBA
QAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJD
dGFwQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCAiQ3RhcEhpZERyaXZlci5oIgogI2ltcG9ydCAi
SGlkQ29ubmVjdGlvbi5oIgotI2ltcG9ydCAiVTJmQXV0aGVudGljYXRvci5oIgotI2ltcG9ydCA8
V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Rldmlj
ZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIGZpZG87CkBAIC01Niw3
ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZVJlbW92ZWRDYWxsYmFjayh2b2lkKiBjb250ZXh0
LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVmCiB9CiAKIEhpZFNlcnZpY2U6OkhpZFNl
cnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDogQXV0aGVudGljYXRvclRyYW5zcG9ydFNl
cnZpY2Uob2JzZXJ2ZXIpCisgICAgOiBGaWRvU2VydmljZShvYnNlcnZlcikKIHsKICAgICBtX21h
bmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
SU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0RpY3Rpb25hcnkgKm1hdGNoaW5nRGljdGlv
bmFyeSA9IEB7CkBAIC05MiwzMiArODUsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlk
U2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZv
aWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAg
IGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0
aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2
aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVz
dChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4m
JiByZXNwb25zZSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+
Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0g
ICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVy
KSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
LX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyhDdGFw
SGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQotewotICAgIHN0ZDo6
dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBkcml2ZXIgPSBtX2RyaXZlcnMudGFrZShwdHIpOwot
ICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbmZvID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2Uo
cmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYmIGluZm8tPnZlcnNpb25zKCkuZmluZChQcm90b2Nv
bFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52ZXJzaW9ucygpLmVuZCgpKSB7Ci0gICAgICAgIG9i
c2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChDdGFwQXV0aGVudGljYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5mbykpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBnZXQgaW5mbyByZXNwb25zZS4i
KTsKLSAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVyc2lvbjo6a1UyZik7Ci0gICAg
b2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJbmZvKFdURjo6bWFrZVVuaXF1ZTxDdGFwSGlkRHJp
dmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZTA1ZmFjMjJiOWQ0MDVmNTMyODk3NzhhZTcwMTVhMGI4MGU0YjM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZp
ZWxkU29mdExpbmsuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFE
RVIoV2ViS2l0LCBOZWFyRmllbGQpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJL
aXQsIE5GVGFnKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZTZXNzaW9u
KTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZSZWFkZXJTZXNzaW9uKTsK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZIYXJkd2FyZU1hbmFnZXIpOwor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxk
U29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1NDQyMzM5NDRiMDJmYTU1ZWZkZTZjZjRhNzQ0Mjlk
MGU1YWM5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFN
RVdPUktfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCk7CisKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlRhZyk7CitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlJlYWRlclNlc3Npb24pOworCisjaWYgUExB
VEZPUk0oTUFDKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUwoV2ViS2l0LCBO
ZWFyRmllbGQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsKKyNlbHNlCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZIYXJkd2FyZU1hbmFnZXIpOworI2VuZGlmCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk4MDgzNDUwNjYwOTM0ZTE1N2QwNTE1ZjUyZmFiMGQ2YWQyODgxMmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9OZmNDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgTkZSZWFk
ZXJTZXNzaW9uOworT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBXS05GUmVhZGVyU2Vz
c2lvbkRlbGVnYXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmZjU2VydmljZTsK
KworY2xhc3MgTmZjQ29ubmVjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZmNDb25uZWN0
aW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTmZjQ29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgTmZjQ29ubmVjdGlvbihSZXRhaW5Q
dHI8TkZSZWFkZXJTZXNzaW9uPiYmLCBOZmNTZXJ2aWNlJik7CisgICAgfk5mY0Nvbm5lY3Rpb24o
KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KSBjb25zdDsKKworICAgIC8vIEZvciBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlCisgICAgdm9p
ZCBkaWREZXRlY3RUYWdzKE5TQXJyYXkgKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmV0YWlu
UHRyPE5GUmVhZGVyU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJldGFpblB0cjxXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFdlYWtQdHI8TmZjU2VydmljZT4gbV9z
ZXJ2aWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzky
NTdlYjkxMGViOGIyOGU4ODg3MTkwNjQwN2VkNjA4MjNjYjIzYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5l
Y3Rpb24ubW0KQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisK
KyNpbXBvcnQgIk5mY1NlcnZpY2UuaCIKKyNpbXBvcnQgIldLTkZSZWFkZXJTZXNzaW9uRGVsZWdh
dGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIGZpZG87
CisKK25hbWVzcGFjZSB7CitpbmxpbmUgYm9vbCBjb21wYXJlVmVyc2lvbihOU0RhdGEgKmRhdGEs
IGNvbnN0IHVpbnQ4X3QgdmVyc2lvbltdLCBzaXplX3QgdmVyc2lvblNpemUpCit7CisgICAgaWYg
KGRhdGEubGVuZ3RoICE9IHZlcnNpb25TaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuICFtZW1jbXAoZGF0YS5ieXRlcywgdmVyc2lvbiwgdmVyc2lvblNpemUpOworfQorfSAv
LyBuYW1lc3BhY2UKKworTmZjQ29ubmVjdGlvbjo6TmZjQ29ubmVjdGlvbihSZXRhaW5QdHI8TkZS
ZWFkZXJTZXNzaW9uPiYmIHNlc3Npb24sIE5mY1NlcnZpY2UmIHNlcnZpY2UpCisgICAgOiBtX3Nl
c3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLTkZS
ZWFkZXJTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbjoqdGhpc10pKQor
ICAgICwgbV9zZXJ2aWNlKG1ha2VXZWFrUHRyKHNlcnZpY2UpKQoreworICAgIFttX3Nlc3Npb24g
c2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07CisgICAgLy8gRklYTUUoMjAwOTMzKQorICAg
IFttX3Nlc3Npb24gdXBkYXRlVUlBbGVydE1lc3NhZ2U6QCJIb2xkIHRoZSBrZXkgYWdhaW5zdCB0
aGUgdG9wIG9mIHlvdXIgZGV2aWNlLiJdOworICAgIFttX3Nlc3Npb24gc3RhcnRQb2xsaW5nXTsK
K30KKworTmZjQ29ubmVjdGlvbjo6fk5mY0Nvbm5lY3Rpb24oKQoreworICAgIFttX3Nlc3Npb24g
ZGlzY29ubmVjdFRhZ107CisgICAgW21fc2Vzc2lvbiBzdG9wUG9sbGluZ107CisgICAgW21fc2Vz
c2lvbiBlbmRTZXNzaW9uXTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IE5mY0Nvbm5lY3Rpb246OnRy
YW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Cit7CisgICAgYXV0byByZXNwb25z
ZURhdGEgPSBbbV9zZXNzaW9uIHRyYW5zY2VpdmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEu
ZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV1dOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Bv
bnNlOworICAgIHJlc3BvbnNlLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXNwb25zZURhdGEuYnl0ZXMpLCByZXNwb25zZURhdGEubGVuZ3RoKTsKKyAgICByZXR1cm4g
cmVzcG9uc2U7Cit9CisKK3ZvaWQgTmZjQ29ubmVjdGlvbjo6ZGlkRGV0ZWN0VGFncyhOU0FycmF5
ICp0YWdzKSBjb25zdAoreworICAgIC8vIEZJWE1FKDIwMDkzMikKKyAgICBmb3IgKE5GVGFnICp0
YWcgaW4gdGFncykgeworICAgICAgICBpZiAodGFnLnR5cGUgIT0gTkZUYWdUeXBlR2VuZXJpYzRB
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghW21fc2Vzc2lvbiBjb25uZWN0
VGFnOnRhZ10pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBDb25maXJtIHRo
ZSBGSURPIGFwcGxldCBpcyBhdmFsaWFibGUgYmVmb3JlIHJldHVybi4KKyAgICAgICAgLy8gaHR0
cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNs
aWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNuZmMt
YXBwbGV0LXNlbGVjdGlvbgorICAgICAgICBhdXRvIHZlcnNpb25EYXRhID0gW21fc2Vzc2lvbiB0
cmFuc2NlaXZlOltOU0RhdGEgZGF0YVdpdGhCeXRlczprQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkNv
bW1hbmQgbGVuZ3RoOnNpemVvZihrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkNvbW1hbmQpXV07Cisg
ICAgICAgIGlmICghdmVyc2lvbkRhdGEgfHwgKCFjb21wYXJlVmVyc2lvbih2ZXJzaW9uRGF0YSwg
a0NUQVBORkNBcHBsZXRTZWxlY3Rpb25VMmYsIHNpemVvZihrQ1RBUE5GQ0FwcGxldFNlbGVjdGlv
blUyZikpICYmICFjb21wYXJlVmVyc2lvbih2ZXJzaW9uRGF0YSwga0NUQVBORkNBcHBsZXRTZWxl
Y3Rpb25DdGFwLCBzaXplb2Yoa0NUQVBORkNBcHBsZXRTZWxlY3Rpb25DdGFwKSkpKSB7CisgICAg
ICAgICAgICBbbV9zZXNzaW9uIGRpc2Nvbm5lY3RUYWddOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fc2VydmljZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9zZXJ2aWNlLT5kaWRDb25uZWN0VGFnKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOWZmM2NlM2QwYmVi
Mzk2ZjlmNjYzZjVmNDI2ODE4ODk2MzA3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCisKK09CSkNfQ0xBU1MgTkZSZWFkZXJT
ZXNzaW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ3RhcE5mY0RyaXZlcjsKKwor
Y2xhc3MgTmZjU2VydmljZSA6IHB1YmxpYyBGaWRvU2VydmljZSB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgTmZjU2VydmljZShPYnNlcnZlciYpOworICAgIH5OZmNTZXJ2aWNlKCk7CisKKyAgICAv
LyBGb3IgTmZjQ29ubmVjdGlvbi4KKyAgICB2b2lkIGRpZENvbm5lY3RUYWcoKTsKKworcHJvdGVj
dGVkOgorICAgIC8vIE9ubHkgb25lIHJlYWRlciBzZXNzaW9uIGlzIGFsbG93ZWQgcGVyIHRpbWUu
CisgICAgLy8gS2VlcCB0aGUgcmVhZGVyIHNlc3Npb24gYWxpdmUgaGVyZSB3aGVuIGl0IHRyaWVz
IHRvIGNvbm5lY3QgdG8gYSB0YWcuCisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBOZmNEcml2ZXI+
IG1fZHJpdmVyOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnREaXNjb3ZlcnlJbnRlcm5hbCgp
IGZpbmFsOworICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oVmVjdG9yPHVp
bnQ4X3Q+JiYgcmVzcG9uc2UpOworCisgICAgLy8gT3ZlcnJpZGVkIGJ5IE1vY2tOZmNTZXJ2aWNl
LgorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNT
ZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmZjU2VydmljZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzRhNTcwODc4ODgwZmUwMzIwY2QxYWEzMGFh
OTk4NGQ0NmYwYjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQpAQCAtMCwwICsxLDkxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZmNTZXJ2aWNlLmgiCisK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJDdGFwTmZjRHJpdmVyLmgiCisjaW1w
b3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KKworI2ltcG9ydCAiTmVhckZpZWxkU29mdExpbmsuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworTmZjU2VydmljZTo6TmZjU2Vydmlj
ZShPYnNlcnZlciYgb2JzZXJ2ZXIpCisgICAgOiBGaWRvU2VydmljZShvYnNlcnZlcikKK3sKK30K
KworTmZjU2VydmljZTo6fk5mY1NlcnZpY2UoKQoreworfQorCit2b2lkIE5mY1NlcnZpY2U6OmRp
ZENvbm5lY3RUYWcoKQoreworICAgIGdldEluZm8oV1RGTW92ZShtX2RyaXZlcikpOworfQorCit2
b2lkIE5mY1NlcnZpY2U6OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwoKQoreworICAgIHBsYXRmb3Jt
U3RhcnREaXNjb3ZlcnkoKTsKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlz
Y292ZXJ5KCkKK3sKKyAgICBpZiAoIVtbZ2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygpIHNoYXJl
ZEhhcmR3YXJlTWFuYWdlcl0gYXJlRmVhdHVyZXNTdXBwb3J0ZWQ6TkZGZWF0dXJlUmVhZGVyTW9k
ZSBvdXRFcnJvcjpuaWxdKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXaWxsIGJlIGV4ZWN1
dGVkIGluIGEgZGlmZmVyZW50IHRocmVhZC4KKyAgICBhdXRvIGNhbGxiYWNrID0gbWFrZUJsb2Nr
UHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKE5GUmVhZGVyU2Vzc2lv
biAqc2Vzc2lvbiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IHN0YXJ0IGEgTkZDIHJlYWRlciBzZXNzaW9uOiAlQCIsIGVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJldGFpblB0cjxORlJl
YWRlclNlc3Npb24+IHJldGFpblNlc3Npb24gPSBzZXNzaW9uOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCB0aGlzLCBzZXNzaW9uID0gcmV0YWluU2Vzc2lvbl0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAg
ICAgW3Nlc3Npb24gZW5kU2Vzc2lvbl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBDdGFwTmZjRHJpdmVyIGFuZCBOZmNDb25uZWN0aW9u
IHdpbGwgdGFrZSBjYXJlIG9mIHBvbGxpbmcgdGFncyBhbmQgY29ubmVjdGluZyB0byB0aGVtLgor
ICAgICAgICAgICAgbV9kcml2ZXIgPSBXVEY6Om1ha2VVbmlxdWU8Q3RhcE5mY0RyaXZlcj4obWFr
ZVVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPihXVEZNb3ZlKHNlc3Npb24pLCAqdGhpcykpOworICAg
ICAgICB9KTsKKyAgICB9KTsKKyAgICBbW2dldE5GSGFyZHdhcmVNYW5hZ2VyQ2xhc3MoKSBzaGFy
ZWRIYXJkd2FyZU1hbmFnZXJdIHN0YXJ0UmVhZGVyU2Vzc2lvbldpdGhBY3Rpb25TaGVldFVJOmNh
bGxiYWNrLmdldCgpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Np
b25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlMGI5NmM3NjYwZDQ5YmNjODM3NTZhZTVlYmRkODBh
YTA2ZTk0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1wb3J0IDx3dGYvV2Vha1B0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIE5mY0Nvbm5lY3Rpb247Cit9CisKK0BpbnRlcmZh
Y2UgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29ubmVjdGlvbjooV2ViS2l0OjpO
ZmNDb25uZWN0aW9uJiljb25uZWN0aW9uOworCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdh
dGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWY1ZDcwODMyMzJhMGUwN2EzYTBmMzE2YTE2MjEyZWM0YTE2YTZm
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tORlJlYWRlclNl
c3Npb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2ltcG9ydCAiTmZj
Q29ubmVjdGlvbi5oIgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKworI2ltcG9ydCAiTmVhckZp
ZWxkU29mdExpbmsuaCIKKworQGltcGxlbWVudGF0aW9uIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdh
dGUgeworICAgIFdlYWtQdHI8V2ViS2l0OjpOZmNDb25uZWN0aW9uPiBfY29ubmVjdGlvbjsKK30K
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29ubmVjdGlvbjooV2ViS2l0OjpOZmNDb25uZWN0
aW9uJiljb25uZWN0aW9uCit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgX2Nvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLy8gRXhlY3V0ZWQgaW4gYSBkaWZmZXJlbnQgdGhyZWFkLgorLSAodm9pZClyZWFk
ZXJTZXNzaW9uOihORlJlYWRlclNlc3Npb24qKXRoZVNlc3Npb24gZGlkRGV0ZWN0VGFnczooTlNB
cnJheTxORlRhZyAqPiAqKXRhZ3MKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIFJldGFpblB0cjxOU0FycmF5PiByZXRhaW5UYWdzID0gdGFnczsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBfY29ubmVjdGlvbiwgdGFncyA9IHJldGFp
blRhZ3NdIHsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjb25uZWN0aW9uLT5kaWREZXRlY3RUYWdzKHRhZ3MuZ2V0KCkpOworICAgIH0pOwor
fQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2Vydmlj
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TmZjU2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzMmNkZTRkNmI2NmRhYzMxYWNjNjI5NmM1ZTk5ODI2
YTI2YjMzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1
ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJOZmNT
ZXJ2aWNlLmgiCisKK09CSkNfQ0xBU1MgTlNEYXRhOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CisKK2NsYXNzIE1vY2tO
ZmNTZXJ2aWNlIGZpbmFsIDogcHVibGljIE5mY1NlcnZpY2UgeworcHVibGljOgorICAgIE1vY2tO
ZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbiYpOworCisgICAgTlNEYXRhKiB0cmFuc2NlaXZlKCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkgZmluYWw7CisKKyAgICB2b2lkIGRldGVjdFRhZ3Mo
KSBjb25zdDsKKworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25m
aWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWJmOTUyMzc5ODk3OGJhNjliZGQwZWY3NGZkZTcwOTY2YWI3M2NiZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05m
Y1NlcnZpY2UubW0KQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIk1vY2tOZmNTZXJ2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhO
KQorI2ltcG9ydCAiQ3RhcE5mY0RyaXZlci5oIgorI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisj
aW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMu
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworI2ltcG9ydCAiTmVhckZpZWxkU29mdExpbmsuaCIKKwor
QGludGVyZmFjZSBXS01vY2tORlRhZyA6IE5TT2JqZWN0IDxORlRhZz4KKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVHlwZTooTkZUYWdUeXBlKXR5cGU7CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdLTW9ja05GVGFnIHsKKyAgICBORlRhZ1R5cGUgX3R5cGU7CisgICAgTkZUZWNobm9sb2d5
IF90ZWNobm9sb2d5OworICAgIE5TRGF0YSAqX3RhZ0lEOworICAgIE5TRGF0YSAqX2FwcERhdGE7
CisgICAgTlNEYXRhICpfdWlkOworICAgIE5TU3RyaW5nICpfZGVzY3JpcHRpb247CisgICAgTkZO
ZGVmQXZhaWxhYmlsaXR5IF9uZGVmQXZhaWxhYmlsaXR5OworICAgIHNpemVfdCBfbmRlZk1lc3Nh
Z2VTaXplOworICAgIHNpemVfdCBfbmRlZkNvbnRhaW5lclNpemU7Cit9CisKKy0gKE5GVGFnVHlw
ZSl0eXBlCit7CisgICAgcmV0dXJuIF90eXBlOworfQorCistIChORlRlY2hub2xvZ3kpdGVjaG5v
bG9neQoreworICAgIHJldHVybiBfdGVjaG5vbG9neTsKK30KKworLSAoTlNEYXRhICopVUlECit7
CisgICAgcmV0dXJuIF91aWQ7Cit9CisKKy0gKE5TRGF0YSAqKXRhZ0lECit7CisgICAgcmV0dXJu
IF90YWdJRDsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KKy0g
KE5TRGF0YSAqKUFwcERhdGEKK3sKKyAgICByZXR1cm4gX2FwcERhdGE7Cit9CitBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKKworLSAoTkZOZGVmQXZhaWxhYmlsaXR5KW5kZWZB
dmFpbGFiaWxpdHkKK3sKKyAgICByZXR1cm4gX25kZWZBdmFpbGFiaWxpdHk7Cit9CisKKy0gKHNp
emVfdCluZGVmTWVzc2FnZVNpemUKK3sKKyAgICByZXR1cm4gX25kZWZNZXNzYWdlU2l6ZTsKK30K
KworLSAoc2l6ZV90KW5kZWZDb250YWluZXJTaXplCit7CisgICAgcmV0dXJuIF9uZGVmQ29udGFp
bmVyU2l6ZTsKK30KKworLSAoTlNTdHJpbmcqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIF9k
ZXNjcmlwdGlvbjsKK30KKworLSAoaWQ8TkZUYWdBPil0YWdBCit7CisgICAgcmV0dXJuIG5pbDsK
K30KKworLSAoaWQ8TkZUYWdBPil0YWdCCit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoaWQ8
TkZUYWdBPil0YWdGCit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoTkZUYWc6KGlkPE5GVGFnPil0YWcKK3sKKyAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKSB7CisgICAgICAgIF90eXBlID0gdGFnLnR5cGU7CisgICAgICAgIF90ZWNobm9sb2d5ID0g
dGFnLnRlY2hub2xvZ3k7CisgICAgICAgIF91aWQgPSBbdGFnLlVJRCBjb3B5XTsKKyAgICAgICAg
X3RhZ0lEID0gW3RhZy50YWdJRCBjb3B5XTsKKyAgICAgICAgX2Rlc2NyaXB0aW9uID0gW3RhZy5k
ZXNjcmlwdGlvbiBjb3B5XTsKKyAgICAgICAgX25kZWZBdmFpbGFiaWxpdHkgPSB0YWcubmRlZkF2
YWlsYWJpbGl0eTsKKyAgICAgICAgX25kZWZNZXNzYWdlU2l6ZSA9IHRhZy5uZGVmTWVzc2FnZVNp
emU7CisgICAgICAgIF9uZGVmQ29udGFpbmVyU2l6ZSA9IHRhZy5uZGVmQ29udGFpbmVyU2l6ZTsK
KyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpaXNFcXVhbFRvTkZUYWc6KGlk
PE5GVGFnPil0YWcKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFR5cGU6KE5GVGFnVHlwZSl0eXBlCit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRd
KSkKKyAgICAgICAgX3R5cGUgPSB0eXBlOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIGZpZG87Cit1c2luZyBNb2NrID0g
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOworCituYW1lc3BhY2Ugewor
CitzdGF0aWMgaWQ8TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+IGdsb2JhbE5GUmVhZGVyU2Vzc2lv
bkRlbGVnYXRlOworc3RhdGljIE1vY2tOZmNTZXJ2aWNlKiBnbG9iYWxOZmNTZXJ2aWNlOworCitz
dGF0aWMgdm9pZCBORlJlYWRlclNlc3Npb25TZXREZWxlZ2F0ZShpZCwgU0VMLCBpZDxORlJlYWRl
clNlc3Npb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCit7CisgICAgZ2xvYmFsTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKK30KKworc3RhdGljIEJPT0wgTkZSZWFkZXJTZXNzaW9uQ29u
bmVjdFRhZ0ZhaWwoaWQsIFNFTCwgTkZUYWcgKikKK3sKKyAgICByZXR1cm4gTk87Cit9CisKK3N0
YXRpYyBCT09MIE5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWcoaWQsIFNFTCwgTkZUYWcgKikKK3sK
KyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgTlNEYXRhKiBORlJlYWRlclNlc3Npb25UcmFu
c2NlaXZlKGlkLCBTRUwsIE5TRGF0YSAqKQoreworICAgIGlmICghZ2xvYmFsTmZjU2VydmljZSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gZ2xvYmFsTmZjU2VydmljZS0+dHJhbnNj
ZWl2ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZQorCitNb2NrTmZjU2VydmljZTo6TW9ja05mY1Nl
cnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorICAgIDogTmZjU2VydmljZShvYnNlcnZlcikKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQoreworfQorCitOU0RhdGEqIE1vY2tO
ZmNTZXJ2aWNlOjp0cmFuc2NlaXZlKCkKK3sKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+
cGF5bG9hZEJhc2U2NC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRv
IHJlc3VsdCA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9j
b25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERl
Y29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdOworICAgIG1fY29uZmlndXJhdGlvbi5uZmMt
PnBheWxvYWRCYXNlNjQucmVtb3ZlKDApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
TW9ja05mY1NlcnZpY2U6OnBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKQoreworICAgIGlmICghIW1f
Y29uZmlndXJhdGlvbi5uZmMpIHsKKyAgICAgICAgZ2xvYmFsTmZjU2VydmljZSA9IHRoaXM7CisK
KyAgICAgICAgTWV0aG9kIG1ldGhvZFRvU3dpenpsZTEgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhv
ZChnZXRORlJlYWRlclNlc3Npb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSk7Cisg
ICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5G
UmVhZGVyU2Vzc2lvblNldERlbGVnYXRlKTsKKworICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6
emxlMiA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCks
IEBzZWxlY3Rvcihjb25uZWN0VGFnOikpOworICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5m
Yy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Ok5vQ29ubmVjdGlvbnMpCisgICAgICAgICAgICBtZXRo
b2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9Td2l6emxlMiwgKElNUClORlJlYWRlclNlc3Np
b25Db25uZWN0VGFnRmFpbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJ
bXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5l
Y3RUYWcpOworCisgICAgICAgIE1ldGhvZCBtZXRob2RUb1N3aXp6bGUzID0gY2xhc3NfZ2V0SW5z
dGFuY2VNZXRob2QoZ2V0TkZSZWFkZXJTZXNzaW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHRyYW5zY2Vp
dmU6KSk7CisgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUz
LCAoSU1QKU5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUpOworCisgICAgICAgIGF1dG8gcmVhZGVy
U2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jTkZSZWFkZXJTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7
CisgICAgICAgIG1fZHJpdmVyID0gV1RGOjptYWtlVW5pcXVlPEN0YXBOZmNEcml2ZXI+KG1ha2VV
bmlxdWVSZWY8TmZjQ29ubmVjdGlvbj4ocmVhZGVyU2Vzc2lvbi5nZXQoKSwgKnRoaXMpKTsKKwor
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kZXRlY3RUYWdzKCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIExPR19FUlJPUigiTm8gbmZjIGF1dGhlbnRpY2F0
b3JzIGlzIGF2YWlsYWJsZS4iKTsKK30KKwordm9pZCBNb2NrTmZjU2VydmljZTo6ZGV0ZWN0VGFn
cygpIGNvbnN0Cit7CisgICAgaWYgKG1fY29uZmlndXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6
OkVycm9yOjpOb1RhZ3MpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBt
YWtlQmxvY2tQdHIoW2NvbmZpZ3VyYXRpb24gPSBtX2NvbmZpZ3VyYXRpb25dIHsKKyAgICAgICAg
YXV0byB0YWdzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAg
ICAgIGlmIChjb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Oldyb25nVGFn
VHlwZSB8fCBjb25maWd1cmF0aW9uLm5mYy0+bXVsdGlwbGVUYWdzKQorICAgICAgICAgICAgW3Rh
Z3MgYWRkT2JqZWN0OltbV0tNb2NrTkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVV
bmtub3duXV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dL
TW9ja05GVGFnIGFsbG9jXSBpbml0V2l0aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAg
ICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubmZjLT5tdWx0aXBsZVRhZ3MpCisgICAgICAgICAgICBb
dGFncyBhZGRPYmplY3Q6W1tXS01vY2tORlRhZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlw
ZUdlbmVyaWM0QV1dOworCisgICAgICAgIFtnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSBy
ZWFkZXJTZXNzaW9uOm5pbCBkaWREZXRlY3RUYWdzOnRhZ3MuZ2V0KCldOworICAgIH0pOworICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVf
UFJJT1JJVFlfREVGQVVMVCwgMCksIGNhbGxiYWNrLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRl
eCBmN2MzOTY5Njk1OTQxOGFiOTUwZDY3ZjQ0MzZlY2ZlM2EzY2JmZDFjLi5mNDBhN2I3YmQ4YmUx
YjdkMGIzNDI4NWJkNjY2Yzg3ZDBkY2Q3OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtNzIsOSArNzIs
MjQgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAg
ICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CiAgICAgfTsKIAorICAgIHN0cnVjdCBOZmMg
eworICAgICAgICBlbnVtIGNsYXNzIEVycm9yIDogdWludDhfdCB7CisgICAgICAgICAgICBTdWNj
ZXNzLAorICAgICAgICAgICAgTm9UYWdzLAorICAgICAgICAgICAgV3JvbmdUYWdUeXBlLAorICAg
ICAgICAgICAgTm9Db25uZWN0aW9ucywKKyAgICAgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAg
ICAgICAgfTsKKworICAgICAgICBFcnJvciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07CisgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVsdGlwbGVU
YWdzIHsgZmFsc2UgfTsKKyAgICB9OworCiAgICAgYm9vbCBzaWxlbnRGYWlsdXJlIHsgZmFsc2Ug
fTsKICAgICBPcHRpb25hbDxMb2NhbD4gbG9jYWw7CiAgICAgT3B0aW9uYWw8SGlkPiBoaWQ7Cisg
ICAgT3B0aW9uYWw8TmZjPiBuZmM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggYTAxNTVlZDFiZjYyMGY4MGE4
YzRlODg2NjU1MWRjNDg2MzE0MGM2ZS4uMGY5OTMzMzQ5OGIyYzczMDVjMzMxYTE1OGYyMWE0MWRh
NDkwOWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdGFwQXV0aGVudGlj
YXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVO
QUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSAiQ3Rh
cEhpZERyaXZlci5oIgpAQCAtMTE1LDQgKzExNSw0IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6
OnRyeURvd25ncmFkZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggMzFlODg4ODc1YTU2
ZmVmOGUwOTA4MThhMTg2YzU3MTMzNTAzY2YzYi4uYTE4ZGYwNDk0YTk3N2U5OTA1ZDRmZTNkZTYw
ODI4NmNlNDc3YjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYm
IFBMQVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZS5oPgpAQCAtNTgsNCArNTgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM5ODYzOTM2Yzk0YTJlNGE3ZjAyZjk2YTZkZDU4YTQ2ZjQ3MjkxYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Q3RhcE5mY0RyaXZlci5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDdGFwTmZjRHJpdmVyLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1Q29tbWFuZC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQXBkdVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgYXBkdTsKK3VzaW5nIG5hbWVzcGFjZSBmaWRv
OworCitDdGFwTmZjRHJpdmVyOjpDdGFwTmZjRHJpdmVyKFVuaXF1ZVJlZjxOZmNDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkK
K3sKK30KKworLy8gRklYTUUoMjAwOTM0KQordm9pZCBDdGFwTmZjRHJpdmVyOjp0cmFuc2FjdChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7Cisg
ICAgLy8gRm9yIENUQVAyLCBjb21tYW5kcyBmb2xsb3c6CisgICAgLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNuZmMtY29tbWFuZC1mcmFt
aW5nCisgICAgaWYgKHByb3RvY29sKCkgPT0gUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkgeworICAg
ICAgICBBcGR1Q29tbWFuZCBjb21tYW5kOworICAgICAgICBjb21tYW5kLnNldENsYSgweDgwKTsK
KyAgICAgICAgY29tbWFuZC5zZXRJbnMoMHgxMCk7CisgICAgICAgIGNvbW1hbmQuc2V0RGF0YShX
VEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgY29tbWFuZC5zZXRSZXNwb25zZUxlbmd0aChBcGR1Q29t
bWFuZDo6a0FwZHVNYXhSZXNwb25zZUxlbmd0aCk7CisKKyAgICAgICAgYXV0byBhcGR1UmVzcG9u
c2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0ZUZyb21NZXNzYWdlKG1fY29ubmVjdGlvbi0+dHJhbnNh
Y3QoY29tbWFuZC5nZXRFbmNvZGVkQ29tbWFuZCgpKSk7CisgICAgICAgIGlmICghYXBkdVJlc3Bv
bnNlKSB7CisgICAgICAgICAgICByZXNwb25kQXN5bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25z
ZS0+c3RhdHVzKCkgPT0gQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0lOU19OT1RfU1VQUE9SVEVE
KSB7CisgICAgICAgICAgICAvLyBSZXR1cm4ga0N0YXAxRXJySW52YWxpZENvbW1hbmQgaW5zdGVh
ZCBvZiBhbiBlbXB0eSByZXNwb25zZSB0byBzaWduYWwgRmlkb1NlcnZpY2UgdG8gY3JlYXRlIGEg
VTJGIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgICAgIC8vIGZvciB0aGUgZ2V0SW5mbyBzdGFnZS4K
KyAgICAgICAgICAgIHJlc3BvbmRBc3luYyhXVEZNb3ZlKGNhbGxiYWNrKSwgeyBzdGF0aWNfY2Fz
dDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDFFcnJJbnZhbGlkQ29tbWFu
ZCkgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVS
ZXNwb25zZS0+c3RhdHVzKCkgIT0gQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SKSB7
CisgICAgICAgICAgICByZXNwb25kQXN5bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFNvbWVob3cgZWxt
aW5pYXRlIHRoZSBuZWVkIGZvciB0aGUgY29weT8KKyAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1v
dmUoY2FsbGJhY2spLCAoVmVjdG9yPHVpbnQ4X3Q+KGFwZHVSZXNwb25zZS0+ZGF0YSgpKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRm9yIFUyRiwgVTJmQXV0aGVudGljYXRv
ciB3b3VsZCBoYW5kbGUgdGhlIEFQRFUgZW5jb2RpbmcuCisgICAgLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYtbmZjLXBy
b3RvY29sLXYxLjItcHMtMjAxNzA0MTEuaHRtbCNmcmFtaW5nCisgICAgY2FsbGJhY2sobV9jb25u
ZWN0aW9uLT50cmFuc2FjdChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKy8vIFJldHVybiB0aGUgcmVz
cG9uc2UgYXN5bmMgdG8gbWF0Y2ggdGhlIEhJRCBiZWhhdmlvdXIsIHN1Y2ggdGhhdCBuZmMgY291
bGQgZml0IGludG8gdGhlIGN1cnJlbnQgaW5mcmEuCit2b2lkIEN0YXBOZmNEcml2ZXI6OnJlc3Bv
bmRBc3luYyhSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZlY3Rvcjx1aW50OF90PiYmIHJl
c3BvbnNlKSBjb25zdAoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICB9KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwTmZjRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDAzYTgwMTA4MzBlNTQ2Mjdh
ZTFkOWYxNDVhMDYzZGViYjdkOTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIKKyNpbmNsdWRlICJOZmNDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
VGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIHRoZSBDVEFQIE5GQyBwcm90b2NvbDoKKy8vIGh0dHBz
Oi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGll
bnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjCitj
bGFzcyBDdGFwTmZjRHJpdmVyIDogcHVibGljIEN0YXBEcml2ZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IEN0YXBOZmNEcml2ZXIoVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+JiYpOworCisgICAg
dm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYp
IGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcmVzcG9uZEFzeW5jKFJlc3BvbnNlQ2FsbGJh
Y2smJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIGNvbnN0OworCisgICAgVW5pcXVlUmVm
PE5mY0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDE4OWQ3Y2Y4Y2RjMzkxNDNiNTNiZTk5ZTZlZDhiOGUwZTI4OGM1Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlkb1NlcnZpY2UuaCIKKworI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJDdGFwQXV0aGVudGljYXRvci5oIgorI2luY2x1ZGUg
IkN0YXBEcml2ZXIuaCIKKyNpbmNsdWRlICJVMmZBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXZp
Y2VSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitGaWRvU2VydmljZTo6Rmlkb1NlcnZp
Y2UoT2JzZXJ2ZXImIG9ic2VydmVyKQorICAgIDogQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZp
Y2Uob2JzZXJ2ZXIpCit7Cit9CisKK3ZvaWQgRmlkb1NlcnZpY2U6OmdldEluZm8oc3RkOjp1bmlx
dWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQoreworICAgIC8vIEdldCBhdXRoZW50aWNhdG9y
IGluZm8gZnJvbSB0aGUgZGV2aWNlLgorICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlB
dXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0
SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgp
XShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVBZnRlckdldEluZm8ocHRyLCBXVEZNb3ZlKHJlc3Bv
bnNlKSk7CisgICAgfSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdURk1v
dmUoZHJpdmVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKK30KKwordm9pZCBGaWRvU2VydmljZTo6Y29udGludWVBZnRlckdldEluZm8oQ3Rh
cERyaXZlciogcHRyLCBWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkKK3sKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJpdmVyID0gbV9kcml2ZXJzLnRha2UocHRyKTsKKyAgICBp
ZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSB8fCByZXNwb25zZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gaW5mbyA9IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICBpZiAoaW5mbyAmJiBpbmZvLT52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJz
aW9uOjprQ3RhcCkgIT0gaW5mby0+dmVyc2lvbnMoKS5lbmQoKSkgeworICAgICAgICBvYnNlcnZl
cigpLT5hdXRoZW50aWNhdG9yQWRkZWQoQ3RhcEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3Zl
KGRyaXZlciksIFdURk1vdmUoKmluZm8pKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
TE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSBhIGN0YXAgZ2V0IGluZm8gcmVzcG9uc2UuIik7Cisg
ICAgZHJpdmVyLT5zZXRQcm90b2NvbChQcm90b2NvbFZlcnNpb246OmtVMmYpOworICAgIG9ic2Vy
dmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChVMmZBdXRoZW50aWNhdG9yOjpjcmVhdGUoV1RGTW92
ZShkcml2ZXIpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGMzZDhk
YjdkOTM5ZTA0M2E1ZGU5ZjNjOTg1Mzc2ZjU3OGVlMDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5o
IgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDdGFwRHJpdmVyOworCitjbGFzcyBGaWRv
U2VydmljZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgRmlkb1NlcnZpY2UoT2JzZXJ2ZXImKTsKKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZ2V0SW5mbyhzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJik7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBjb250aW51ZUFmdGVyR2V0SW5mbyhDdGFwRHJpdmVyKiBwdHIsIFZlY3Rvcjx1
aW50OF90PiYmIGluZm8pOworCisgICAgLy8gS2VlcGluZyBkcml2ZXJzIGFsaXZlIHdoZW4gdGhl
eSBhcmUgZ2V0dGluZyBpbmZvIGZyb20gZGV2aWNlcy4KKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxDdGFwRHJpdmVyPj4gbV9kcml2ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVu
dGljYXRvci5jcHAKaW5kZXggYTU4NTY3MmZkMmM5YzMxY2VlYzQzNjE2ZmM3MDU3ODU1NzVhYTU3
Ny4uNGQxMmE5NjVkN2YwMTlhM2E1M2I5ZmQyNmVjNmNhM2ZlMjY0YjFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50
aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVTJmQXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdF
Ql9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNs
dWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KQEAg
LTIzOCw0ICsyMzgsNCBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1h
bmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0
b3IuaAppbmRleCA5YTQ3NzM2ODZmNjA3YzBiYTQwZGNjYzdmNWRmODExMDVjNTU1OTljLi5kOTA1
NWNkMDU5MDE0MTVhYWQ1M2QyMTllYTEzZjljZWY0NjdhOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1Uy
ZkF1dGhlbnRpY2F0b3IuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CkBAIC03OSw0ICs3OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQppbmRleCAzMWI3ZDgzMGQzMDdmYWQ4NWMyNmQ1OGMwZWY2YTcyYjIzNTg5MzJm
Li4yODMwMzhkMzRlZTM4NzRkYzQ2Mzk5NjAxY2IwOTQ5Yjc2N2NhZjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJVSUtp
dFNQSS5oIgogI2ltcG9ydCAiVXNlckRhdGEuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIK
ICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVmlld1Vw
ZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVySW50ZXJuYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDA0YTE4YzM0YmZlMmE5YWFiOTJlYWUwNmI4NzJlNDliYWE5NDg2
NzkuLmVlYjAwNjYwMTczYzQ5N2NkMWEyZTU1MDc4YjkxOGY4MWYxYWZmNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNSw2ICsx
MDM1LDEwIEBACiAJCTUzQkE0N0QxMURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tC
bG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlF
QjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1
M0NGQkJDODIyMjREMUI1MDAyNjY1NDYgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NGQkJDNzIyMjREMUIw
MDAyNjY1NDYgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi87IH07CiAJCTU3MEFCOEYzMjBB
RTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2Vj
S2V5UHJveHlTdG9yZS5oICovOyB9OworCQk1NzBEQUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZj
U2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcwREFBQUMyMzAyNkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2UuaCAqLzsgfTsKKwkJNTcwREFB
QzIyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUMwMjMwMzczMDMwMEU4RkMwNCAvKiBO
ZmNDb25uZWN0aW9uLmggKi87IH07CisJCTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzBEQUFDNDIzMDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Np
b25EZWxlZ2F0ZS5oICovOyB9OworCQk1NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5m
Y0RyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcy
RkQ0NDMyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEy
MjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9
OwogCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAw
MzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdG
OTI0IC8qIEN0YXBBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRp
Y2F0b3IuaCAqLzsgfTsKQEAgLTEwNDMsNiArMTA0NywxMSBAQAogCQk1NzhEQzI5ODIxNTVBMDAy
MDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUg
LyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVF
RDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVj
dGlvbi5oICovOyB9OwogCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlm
aWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVu
dENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaCAqLzsgfTsKKwkJNTdCODI2
NDEyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5l
YXJGaWVsZFNQSS5oICovOyB9OworCQk1N0I4MjY0NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZp
ZWxkU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovOyB9
OworCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MzIzMDRG
MTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi87IH07CisJCTU3QjgyNjQ4MjMw
NTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2
aWNlLmggKi87IH07CisJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2Vydmlj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2
NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggKi87IH07CiAJCTU3QkJFQTZE
MjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0JCRUE2QzIyQkMwQkZFMDAy
NzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oICovOyB9OwogCQk1N0RDRUQ2RTIx
NDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9OwpAQCAtMzQ3Myw2ICszNDgy
LDE1IEBACiAJCTU3MEFCOTAwMjBCMjUxNzQwMEI4QkU4NyAvKiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFC
OTAzMjBCMjU0MUMwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VjS2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwQjczQ0YyMzAyMzZERDAwRkFFQzUzIC8qIEN0YXBEcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NzBEQUFBQzIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZmNTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERB
QUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTmZjU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQjAy
MzAyNzNEMjAwRThGQzA0IC8qIE5lYXJGaWVsZC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IE5lYXJGaWVsZC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9OZWFyRmllbGQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTcw
REFBQzAyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmZjQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFDMTIz
MDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5mY0Nvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM0
MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZD
MDQgLyogQ3RhcE5mY0RyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBD
dGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyog
V2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdE
aWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzUwNzVBNzIwQUI3NjM2MDA2OTNFQTkgLyogV2ViQ3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTM0OTcsNiArMzUxNSwxMyBAQAog
CQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEhpZENvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0
aW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1
RTIwQjUwNEFCMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0Nv
bnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRDZXJ0aWZp
Y2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmVhckZpZWxkU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZWFyRmllbGRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBOZWFyRmllbGRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpZG9TZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWRvU2VydmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3Qjgy
NjRBMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2NrTmZjU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0QjIz
MDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNb2NrTmZjU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCQkVB
NkMyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1N0RDRUQ2QTIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8q
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNjE5Myw2ICs2MjE4LDcgQEAKIAkJCQlBMUZCNjgyNjFG
NkU1MUMxMDBDNDNGOUYgLyogQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oICovLAogCQkJCTU3RENF
REFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oICovLAogCQkJCTJEQUFE
QThFMjI5OEMyMTAwMEUzNkIwQyAvKiBEZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTdC
ODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0
MUIzQTI5RkQwMDNBNEM3RiAvKiBOU0ludm9jYXRpb25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFE
NjREQjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oICovLAogCQkJCTBFOTdENzRDMjAwRThGRjMwMEJG
NjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLywKQEAgLTY5NTksNiArNjk4NSw3IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4
OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1NzBEQUFCMDIz
MDI3M0QyMDBFOEZDMDQgLyogTmVhckZpZWxkLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1l
ID0gRnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02OTcxLDYgKzY5
OTgsMTAgQEAKIAkJCQk1NzBCNzNDRjIzMDIzNkREMDBGQUVDNTMgLyogQ3RhcERyaXZlci5oICov
LAogCQkJCTU3NTk3RUMwMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLywK
IAkJCQk1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovLAorCQkJ
CTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLywKKwkJCQk1
NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovLAorCQkJCTU3Qjgy
NjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5jcHAgKi8sCisJCQkJNTdCODI2NDYy
MzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8sCiAJCQkJNTdFQjJFMzkyMUUxOTgz
RTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRpY2F0b3IuY3BwICovLAogCQkJCTU3RUIyRTM4MjFFMTk4
M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50aWNhdG9yLmggKi8sCiAJCQkpOwpAQCAtNzAzMiw2ICs3
MDYzLDE0IEBACiAJCQkJNTdEQ0VEQTgyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlv
bi5tbSAqLywKIAkJCQk1N0RDRUQ5QTIxNDhCMDgzMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmgg
Ki8sCiAJCQkJNTdEQ0VEQTAyMTQ4RkEwRjAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5tbSAqLywK
KwkJCQk1N0I4MjY0MjIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCAqLywK
KwkJCQk1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi8s
CisJCQkJNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLywKKwkJ
CQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5tbSAqLywKKwkJCQk1
NzBEQUFBQzIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oICovLAorCQkJCTU3MERBQUFE
MjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLm1tICovLAorCQkJCTU3MERBQUM0MjMwMzdG
N0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8sCisJCQkJNTcwREFB
QzUyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcw
NDksNiArNzA4OCw4IEBACiAJCQkJNTdEQ0VEQzYyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2Nh
bENvbm5lY3Rpb24ubW0gKi8sCiAJCQkJNTdEQ0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCAqLywKIAkJCQk1N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xv
Y2FsU2VydmljZS5tbSAqLywKKwkJCQk1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05m
Y1NlcnZpY2UuaCAqLywKKwkJCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1Nl
cnZpY2UubW0gKi8sCiAJCQkJNTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9jazsKQEAg
LTkzNTUsNiArOTM5Niw3IEBACiAJCQkJQTFGQjY4MjcxRjZFNTFDMTAwQzQzRjlGIC8qIENyYXNo
UmVwb3J0ZXJDbGllbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NTk3RUJEMjE4MTg0OTAw
MDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdF
QjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBE
ZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTkzODYsNiArOTQyOCw3IEBACiAJCQkJQkMwMzJE
QTgxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQjE1
QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBNTc1RkIxNDk2QjUyNjAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NDgyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEI5NjYxQTE4RTI1QUUxMDBDRTFGODggLyogRmluZENs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZp
bmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRD
QjYgLyogRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDc0
LDYgKzk1MTcsNyBAQAogCQkJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVu
dGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2
Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURD
MzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURCRjIxNEYwRENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAw
QTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAw
RTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgx
LDYgKzk1MjUsOCBAQAogCQkJCTFBRENCODZCMTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9u
QWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODAyMkIzNTE1ODAwOEQwRThC
IC8qIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUJDM0RGNjE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1N0I4MjY0NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU3QjgyNjQxMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmll
bGRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkZCQTJBMTFFNjg2MjcwMERCMTM3MSAvKiBO
ZXRzY2FwZUJyb3dzZXJGdW5jcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RkJEMjgxMUU2OUJD
MjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUM1
NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBpbiBIZWFkZXJzICov
LApAQCAtOTUyNiw2ICs5NTcyLDggQEAKIAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyog
TmV0d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0
QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVC
OTIyNTcwNDZGMDBENkY5N0UgLyogTmV0d29ya1NvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU3MERBQUMyMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NzBEQUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNTYxNDg5OUMwOTAwODEwRDcxIC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMxMjYxRjE0OEZGODJD
MDBCQTJBMzkgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUEyRUM1MjE0ODk5ODE5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNTQsNiAr
MTAyMDIsNyBAQAogCQkJCTFBMUIwRUI4MThBNDI0Q0QwMDM4NDgxQSAvKiBXS05hdmlnYXRpb25S
ZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUExMzIxMjE5MUQ1OTI0MDA5
QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDNBNjVERjFBN0MzQTdEMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBB
OEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3
NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTExMTM4LDYgKzExMTg3LDcgQEAKIAkJCQkyRDky
QTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzgyMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTdCODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVs
ZFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDMyMTJDRjlGMDAwMTI4QUZE
IC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQ0
MjEyQ0Y5RjAwMDEyOEFGRCAvKiBOZXRzY2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDkyQTc5NjIxMkI2QURBMDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMTY2N2M4NmIyYzQ1NzBlMjBlNDdmY2M1NDUzNGUzN2QwYTc1Mjk1Zi4uYTQ0Yzk4
NGRlNjU2MjI4MjRkMGI0YmQzMTg4NmJiOGQwZjI4M2MwMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIw
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhu
XSBTdXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbik6CisgICAgICAgIFNldHVwIE5GQyBtb2NrIHRlc3RpbmcgY29uZmlndXJhdGlvbi4K
KwogMjAxOS0wOC0yMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgcmVzdWx0cy53ZWJraXQub3JnOiBBZGQgVG9vbFRpcHMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGZhMWJj
MWRkYmI3MTZmN2IzN2JkMDc3N2RhMDAxNmRiZTJlYmIwNGMuLjA5ZGI1MWZkODE2MjFhODViMDZl
OGY4MzMwMzQwZGI1Nzg3ZjA4YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjcxNiw2ICsyNzE2LDcxIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1Zh
bHVlUmVmIGNvbmZpZ3VyYXRpb25WCiAgICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5k
KGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0hpZEtleXMuZGF0YSgpLCByYXdIaWRWYWx1
ZXMuZGF0YSgpLCByYXdIaWRLZXlzLnNpemUoKSkpKTsKICAgICB9CiAKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gbmZjUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygibmZjIikpOworICAgIEpTVmFsdWVSZWYgbmZjVmFsdWUgPSBKU09iamVjdEdl
dFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRpb24sIG5mY1Byb3BlcnR5TmFtZS5nZXQoKSwg
MCk7CisgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgbmZjVmFsdWUpICYmICFK
U1ZhbHVlSXNOdWxsKGNvbnRleHQsIG5mY1ZhbHVlKSkgeworICAgICAgICBpZiAoIUpTVmFsdWVJ
c09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IEpTT2JqZWN0UmVmIG5mYyA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSwgMCk7
CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVycm9yUHJvcGVydHlOYW1lKEFk
b3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZXJyb3IiKSk7CisgICAgICAgIEpT
VmFsdWVSZWYgZXJyb3JWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBl
cnJvclByb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5n
KGNvbnRleHQsIGVycm9yVmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFZl
Y3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IG5mY0tleXM7CisgICAgICAgIFZlY3RvcjxX
S1JldGFpblB0cjxXS1R5cGVSZWY+PiBuZmNWYWx1ZXM7CisgICAgICAgIG5mY0tleXMuYXBwZW5k
KGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpKTsKKyAgICAg
ICAgbmZjVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4
dCwgZXJyb3JWYWx1ZSwgMCkpLmdldCgpKSk7CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJwYXlsb2FkQmFzZTY0IikpOworICAgICAgICBKU1ZhbHVlUmVmIHBheWxv
YWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBwYXlsb2Fk
QmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250
ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Fy
cmF5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBKU09iamVjdFJlZiBwYXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBz
dGF0aWMgYXV0byBsZW5ndGhQcm9wZXJ0eSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJsZW5ndGgiKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRM
ZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwg
bGVuZ3RoUHJvcGVydHkuZ2V0KCksIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKCFKU1ZhbHVl
SXNOdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdL
KFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5
bG9hZEJhc2U2NExlbmd0aFZhbHVlLCBudWxscHRyKSk7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHBheWxvYWRCYXNlNjRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5k
ZXgoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAg
aWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0
ZW0ocGF5bG9hZEJhc2U2NHMuZ2V0KCksIHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShj
b250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIDApKS5nZXQoKSkuZ2V0KCkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpKTsKKyAgICAgICAgICAgIG5mY1ZhbHVl
cy5hcHBlbmQocGF5bG9hZEJhc2U2NHMpOworICAgICAgICB9CisKKyAgICAgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IG11bHRpcGxlVGFnc1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIm11bHRpcGxlVGFncyIpKTsKKyAgICAgICAgSlNWYWx1ZVJl
ZiBtdWx0aXBsZVRhZ3NWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBt
dWx0aXBsZVRhZ3NQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJ
c1VuZGVmaW5lZChjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwo
Y29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJ
c0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdzID0gSlNWYWx1ZVRvQm9vbGVhbihj
b250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSk7CisgICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkpOwor
ICAgICAgICAgICAgbmZjVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtdWx0
aXBsZVRhZ3MpKS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8V0tTdHJpbmdS
ZWY+IHJhd05mY0tleXM7CisgICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd05mY1ZhbHVlczsK
KyAgICAgICAgcmF3TmZjS2V5cy5yZXNpemUobmZjS2V5cy5zaXplKCkpOworICAgICAgICByYXdO
ZmNWYWx1ZXMucmVzaXplKG5mY1ZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5mY0tleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHJhd05mY0tleXNb
aV0gPSBuZmNLZXlzW2ldLmdldCgpOworICAgICAgICAgICAgcmF3TmZjVmFsdWVzW2ldID0gbmZj
VmFsdWVzW2ldLmdldCgpOworICAgICAgICB9CisKKyAgICAgICAgY29uZmlndXJhdGlvbktleXMu
YXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKSk7Cisg
ICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3Jl
YXRlKHJhd05mY0tleXMuZGF0YSgpLCByYXdOZmNWYWx1ZXMuZGF0YSgpLCByYXdOZmNLZXlzLnNp
emUoKSkpKTsKKyAgICB9CisKICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0NvbmZpZ3VyYXRp
b25LZXlzOwogICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXM7CiAg
ICAgcmF3Q29uZmlndXJhdGlvbktleXMucmVzaXplKGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZDY5YTRlYjM2MWY3Y2I0OWJjZDFjODYxZjJmYWIzNjBiYzIzYTI4OS4uNmQ1NmYz
ZDg0ZjdlMWUzYWNlMDA4Mjk0NjQ1MTc2NGQ2NjdjZDQyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5o
dHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0
YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWhpZC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAg
ICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSAibG9jYWwiIGtleXdvcmQgd2l0aCAiaGlkIi4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5m
Yy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAxOS0wOC0yMCAgUnVzc2VsbCBFcHN0ZWluICA8cmVw
c3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0aW5nIEV4cGVjdGF0aW9ucyBmb3IgTXVs
dGlwbGUgTmV3bHkgUGFzc2luZyBUZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWQwNWIzY2RjMjM3MDI0N2U2ZWM4MDhhYWM0NTQwNTA2ODczN2VmOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZj
LWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIENUQVAg
TkZDIHdpdGggZW1wdHkgYXBkdSByZXNwb25zZSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3Iu
IAorUEFTUyBDVEFQIE5GQyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRo
ZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
Y3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjMGIxYjhhZTQ2ODg3
ZjVmYmE1YjEzM2I4ODJmNGU2NDlkOGFkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTog
Q1RBUCBORkMgZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci48L3Rp
dGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAg
ICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4g
QXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICB9CisgICAgfTsKKworICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2
NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsICIiXSB9IH0pOworICAgICAgICByZXR1cm4gcHJv
bWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAi
Q1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJlc3BvbnNlIGluIGEgbW9jayBuZmMgYXV0aGVudGlj
YXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
ZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiQ1RBUCBO
RkMgd2l0aCB3cm9uZyBkYXRhIGVycm9yIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzI1MDk4YWY3
MzUyMDFhMWE3ODcyNjFlMDA5YjFlYmVlZWZjNzJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bm8gdGFncyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBlIGluIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBudWxsIHZlcnNpb24gaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCB3cm9uZyB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ODI0ODU3MzNjNWFmMzcyMzgzMjFiNmYyNGIyMjAzNGRmZWQ0YjcxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTQw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlv
bi4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm5vLXRhZ3Mi
IH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4i
LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ6ICJwbGF0Zm9ybSIgfQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdGlt
ZW91dCBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAg
ICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6
IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRp
bWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBubyB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9uZyB0YWcgdHlwZSBpbiBhIG1vY2sgbmZjIGF1
dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAg
ICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAg
ICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNj
aWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdl
OiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3Jl
ZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAg
ICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibm8tY29ubmVjdGlvbnMi
IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVk
IiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogWyBdIH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbnVs
bCB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1l
c3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNh
dG9yLiIpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzEyZGU5
MzBlNGRiNjYwMTI3Mzc3Zjk2OGNlYWNmODBlNTFhZGZhNi4uODA3MjUxZjg2OTVkYjgxMmNlNDY3
NDc1MjlhZjQxODA3YjczYWFhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMTIg
KzEsMTIgQEAKIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1p
bmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7
ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5
IHsgZmFsc2UgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdwcmVmZXJy
ZWQnIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQn
IH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1p
bmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24geyAn
Y3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBm
YWxzZSB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdwcmVmZXJyZWQnIH0g
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ2Rpc2NvdXJhZ2VkJyB9IGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAog
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHR3byBjb25zZWN1dGl2
ZSByZXF1ZXN0cy4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBhdHRlc3RhdGlvbiBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1oaWQuaHR0cHMuaHRtbAppbmRleCBhMTQ3ZWYzN2Q1MzkzZGViOTY5ODY1ZjQwYjFlZWM3NWU5
NWM3YTViLi4zZTZhZjFhOTYyNzEzZDA3ZGQ2N2VjYmJlOTdhNjhkNzYwMzMzNDNmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5o
dG1sCkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
ICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC04
Nyw3ICs4Nyw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Jlc3VsdChj
cmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScg
fSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3Nz
LXBsYXRmb3JtJyB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21p
c2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTExMCw3ICsxMTAs
NyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlh
bCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHJlcXVpcmVSZXNpZGVudEtleSB7IGZhbHNlIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcg
fSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcg
fSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xNTYsNyArMTU2LDcgQEAKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAg
ICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2Vy
VmVyaWZpY2F0aW9uIHsgJ2Rpc2NvdXJhZ2VkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVz
ZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25z
ID0gewpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAog
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTIy
NSw3ICsyMjUsNyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgY2hlY2tSZXN1bHQo
Y3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBw
cm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0yNDgsNyAr
MjQ4LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRl
bnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIGRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
ICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0y
NzEsNSArMjcxLDUgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
NWU4MzEyZTAyZjNiYmY5NThhMjhiNDM3MWRlZGJlZTMwNWYzN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24geyAnY3Jvc3MtcGxhdGZvcm0n
IH0gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtdWx0aXBsZSB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggVTJGIGlu
IGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2E0ZDFi
ZThiN2NmYzk2NTEyMWYzY2YxODQ3NjBiMDI1Mjk0MGZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTU0IEBACis8IURPQ1RZUEUgaHRtbD4K
Kzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSBzdWNjZXNzIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li9yZXNvdXJjZXMvY2Jvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQg
bW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9u
QmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCwgdGVzdENyZWF0aW9uTWVzc2Fn
ZUFwZHVCYXNlNjRdIH0gfSk7CisKKyAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgcmVzcG9uc2UKKyAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0
ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVu
dGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5l
dyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENy
ZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0
cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1
dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2Nh
bGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0
Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgICAgICAvLyBDaGVjayBh
dHRlc3RhdGlvbgorICAgICAgICBjb25zdCBhdHRlc3RhdGlvbk9iamVjdCA9IENCT1IuZGVjb2Rl
KGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKKworICAgICAgICAvLyBDaGVj
ayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVz
dGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4
U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDll
NWUxZDAyYjc1ODBmMGI0ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRh
LmNvdW50ZXIsIDc4KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1
dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGF1dGhEYXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJM
LnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgLy8gQ2hlY2sgbm9u
ZSBhdHRlc3RhdGlvbgorICAgICAgICBhc3NlcnRfdHJ1ZShjaGVja1B1YmxpY0tleShhdXRoRGF0
YS5wdWJsaWNLZXkpKTsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoYXR0ZXN0YXRpb25P
YmplY3QuYXR0U3RtdCwgeyB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1UyZlJlc3Vs
dChjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgcmVzcG9uc2UKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2
NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFy
c2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5
dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3si
dHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoi
aHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNy
ZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgICAg
ICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgICAgICBjb25zdCBhdHRlc3RhdGlvbk9iamVjdCA9
IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKKworICAg
ICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1
dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3
NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9I
ZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwIik7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElE
LCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICAv
LyBDaGVjayBub25lIGF0dGVzdGF0aW9uCisgICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGlj
S2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhh
dHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOworICAgIH0KKworICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJs
b2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUy
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
Sm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNl
KHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5
Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAg
ICAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
ICJjcm9zcy1wbGF0Zm9ybSIgfSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24geyAnY3Jvc3Mt
cGxhdGZvcm0nIH0gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlz
ZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAor
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJ
ek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3Rh
cFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRp
b25NZXNzYWdlQXBkdUJhc2U2NF0sIG11bHRpcGxlVGFnczogdHJ1ZSB9IH0pOworICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0p
OworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG11bHRpcGxl
IHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0
KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxv
Y2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
bmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVyc2lv
bkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRl
c3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAg
ICAgY2hlY2tVMmZSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhl
bnRpY2F0b3IuIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA4
YTA0ODQ0MmE4NDBlMGQxZDkzNDk3NmE5NzM2YTk5NzkxMDAyYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbmZjIGF1
dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtbmZjLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI2NDg3NGZmZjVkODFmZTdiNjE0NDM5Zjcy
NjI5YTk5ZDAwMjUxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApA
QCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRp
b24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBmYWlsdXJlIGNhc2VzIHdpdGgg
YSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmln
dXJhdGlvbi4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiB9IH0pOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAg
ICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgYWxsb3dDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0
KSwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0
KSwgdHJhbnNwb3J0czogWyJibGUiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0
KSwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBu
ZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MjY4YjlmZDhlNTZmZDQ2MGFlYTFjNzA4YWFhYTBiY2U3MGEwZTJiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisK
K1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMg
aW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBVMkYgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4MmJjZGNiZjc3ODhlMTVhNmMxMWE5MzUxMTM1Y2NiZTFmOWYzYWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayBuZmMgYXV0aGVudGljYXRv
ci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKyAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVy
cmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQs
IHRlc3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKworICAgIGZ1bmN0aW9uIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25kCisg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQp
LCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0
VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNP
TiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdp
biI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNy
ZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9ub3Rf
ZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsK
KworICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRl
Y29kZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGlj
YXRvckRhdGEpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhE
YXRhLnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1ODBm
MGI0ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0
YS5mbGFncywgMSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgODAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrVTJmUmVzdWx0KGNyZWRlbnRpYWwpCisgICAg
eworICAgICAgICAvLyBDaGVjayByZXNwb25kCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
QmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNy
ZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlw
ZSwgJ3B1YmxpYy1rZXknKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhB
cnJheShjcmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFs
SWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3Jl
ZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQi
LCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMi
fScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRs
ZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50
RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgICAgICAvLyBDaGVjayBhdXRoRGF0
YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5
KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgw
ZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgMSk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkpOworICAgIH0KKworICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRV
MiIpLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAg
ICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3Jl
ZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7
CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Cisg
ICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2
NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxz
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRl
bnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVy
c2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tVMmZSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhl
bnRpY2F0b3IuIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5kZXggOTg3ZDA3MjE5ZDRlNDc3MDc0Yzk4ZjQyYzE1YjE4
NTNjNzNhYzYxMi4uYjBjMjIzOTI0NDBhMGI1OGQ4OGI5YWFjOTU1NzllNmVkOTU5NmM4ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAg
LTk5LDYgKzk5LDQwIEBAIGNvbnN0IHRlc3RVMmZTaWduUmVzcG9uc2UgPQogICAgICJmNFY0TGVF
QWhxZUQwZWZmVGpZNTUzSDE5cStqV3ExVGM0V09rQUE9IjsKIGNvbnN0IHRlc3RDdGFwRXJyQ3Jl
ZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0ID0gIkdRPT0iOwogY29uc3QgdGVzdEN0
YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0ID0gIklnPT0iOworY29uc3QgdGVz
dE5mY1UyZlZlcnNpb25CYXNlNjQgPSAiVlRKR1gxWXlrQUE9IjsKK2NvbnN0IHRlc3ROZmNDdGFw
VmVyc2lvbkJhc2U2NCA9ICJSa2xFVDE4eVh6Q1FBQT09IjsKK2NvbnN0IHRlc3RHZXRJbmZvUmVz
cG9uc2VBcGR1QmFzZTY0ID0KKyAgICAiQUtZQmdtWlZNa1pmVmpKb1JrbEVUMTh5WHpBQ2dXdG9i
V0ZqTFhObFkzSmxkQU5RYlVTNm0vYnNMa201TUF5UCIgKworICAgICI2U0RMY3dTa1luSnI5V0ox
Y1BWa2NHeGhkUFJwWTJ4cFpXNTBVR2x1OUFVWkJMQUdnUUdRQUE9PSI7Citjb25zdCB0ZXN0Q3Jl
YXRpb25NZXNzYWdlQXBkdUJhc2U2NCA9CisgICAgIkFLTUJabkJoWTJ0bFpBSll4RWJNZjdsbm5W
V3kyNUNTNGNqWjVlSFFLM1dBOExTQkxIY0pZdUhrajFyWVFRQUEiICsKKyAgICAiQUU3NG9CSHpq
QXBORllBR0Z4RWZudHg5QUVBb0NLM082UDVPeVhONlYvZis5bkFnYTBOQTJDZ3A0VjNtZ1NKNSIg
KworICAgICJqT0hMTURybXhwL1MwcmJEK2FpaHJ1MUMwYUFOM0JraU02R055NW5TbERWcU9nVGdw
UUVDQXlZZ0FTRllJRUZiIiArCisgICAgImhlM1JrTnVkNnNneXJhQkdqbGgxcHpUbENaZWhRbEwv
YjE4SFo2V0dJbGdnSmdmVWQvZW45cDVBSXFNUWJVbmkiICsKKyAgICAibkVlWGRGTGt2VzAvelY1
QnBFampOeEFEbzJOaGJHY21ZM05wWjFoSE1FVUNJUURLZytaQm1FQnRmMGxXcTRSZSIgKworICAg
ICJkSDQvaS9MT1lxT1I0dVIyTkFqMnpRbXc5UUlnYlRYYjRodkZiajRUMjdidi9yR3JjK3krMHB1
b1lPQmtCazlQIiArCisgICAgIm1DZXdXbE5qZURWamdWa0N3akNDQXI0d2dnR21vQU1DQVFJQ0JI
U0cvY0l3RFFZSktvWklodmNOQVFFTEJRQXciICsKKyAgICAiTGpFc01Db0dBMVVFQXhNaldYVmlh
V052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFdyIgKworICAgICJJQmNO
TVRRd09EQXhNREF3TURBd1doZ1BNakExTURBNU1EUXdNREF3TURCYU1HOHhDekFKQmdOVkJBWVRB
bE5GIiArCisgICAgIk1SSXdFQVlEVlFRS0RBbFpkV0pwWTI4Z1FVSXhJakFnQmdOVkJBc01HVUYx
ZEdobGJuUnBZMkYwYjNJZ1FYUjAiICsKKyAgICAiWlhOMFlYUnBiMjR4S0RBbUJnTlZCQU1NSDFs
MVltbGpieUJWTWtZZ1JVVWdVMlZ5YVdGc0lERTVOVFV3TURNNCIgKworICAgICJOREl3V1RBVEJn
Y3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNWWGZPdDl5UjlNWFh2L1p6RTh4cE9oNDY2IiAr
CisgICAgIjRZRUpWbUZRK3ppTExsOWxKNzlYUUpxbGdhVU5Dc1V2R0VSY0NoTlVpaE5UeUtUbG1u
Qk9VanZBVGV2dG8yd3ciICsKKyAgICAiYWpBaUJna3JCZ0VFQVlMRUNnSUVGVEV1TXk0MkxqRXVO
QzR4TGpReE5EZ3lMakV1TVRBVEJnc3JCZ0VFQVlMbCIgKworICAgICJIQUlCQVFRRUF3SUZJREFo
QmdzckJnRUVBWUxsSEFFQkJBUVNCQkQ0b0JIempBcE5GWUFHRnhFZm50eDlNQXdHIiArCisgICAg
IkExVWRFd0VCL3dRQ01BQXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBREZjU0lEbW1sSitPR2FK
dlduOUNxaHYiICsKKyAgICAiU2V1ZVRvVkZRVlZ2cXRBTE9nQ0tIZHdCK1d4MjltZzJHcEhpTXNn
UXA1eGpCMHliYm5wRzZ4MjEyRnhFU0orRyIgKworICAgICJpblpEMGlwY2hpN0FQd1BsaEl2amdI
MTZ6Vlg0NGE0ZTRoT3NjNnRMSU9QNzFTYU1zSHVIZ0NjZEgwdmc1ZDJzIiArCisgICAgImMwMDZX
SmU5VFhPNmZ6VitvZ2pKbllwTktRTG1DWG9BWEUzSkJOd0tHQklPQ3ZmUURQeVdtaWlHNWJHeFlm
UHQiICsKKyAgICAieThaM3BualgrMU1Ebk0yaGhyNDB1bE14bFNORG5YL1pTbkR5TUdJYms4VE9R
bWpURjAyVU84YXVQOGszd3Q1RCIgKworICAgICIxclJPSVJVOStGQ1NYNVdRWWk2OFJ1RHJHTVpC
OFA1K2J5b0pxYktRZHhuMkxtRTFvWkF5b2hQQW1MY29QTzZRIiArCisgICAgIkFBPT0iOworY29u
c3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0ID0KKyAgICAiQUtNQm9tSnBaRmhBS0Fp
dHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1b0VpZVl6aHl6QTY1c2FmMHRLMiIgKworICAg
ICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5CMVlteHBZeTFyWlhr
Q1dDVkd6SCs1IiArCisgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJB
RUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKKyAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUx
TXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKworICAgICJRb0ox
TDdGZTY0Rzl1QmVRQUE9PSI7CiAKIGNvbnN0IFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC93ZWJh
dXRobi9yZXNvdXJjZXMvIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376823</attachid>
            <date>2019-08-20 15:43:58 -0700</date>
            <delta_ts>2019-08-21 12:21:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188624-20190820154357.patch</filename>
            <type>text/plain</type>
            <size>130976</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU2NzA4ZDY1OTc5MDg2
OGMyMDgwNTVmZjU0YTY0MTZjZWIwODY4Mi4uYjM5NTQ0YmIwZWYyN2Q2YWFmMDE3NTNkMDg5Njg3
NzI1ZjFiMWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA4LTIwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBw
b3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
MzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKyAgICAgICAgQWRk
cyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9uLgorCiAyMDE5LTA4LTIwICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjb21t
ZW50IGZvbGxvdy11cCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDc1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYWVlYjViOTAxOThjYzkxMzE2YzllOGU2ZDFjNGYzMzZiMGU0
YWM5NS4uNTJhYmFiMDc5ZjdlOWMxZmZhNGY3MTVjNmQ0YWQ2NTlhMjU3NzE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5MiBAQAorMjAxOS0wOC0yMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcG9ydCBORkMgYXV0aGVudGljYXRvcnMg
Zm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4NjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM1NDIxND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
c3VwcG9ydCBmb3IgTkZDIGF1dGhlbnRpY2F0b3JzIGluY2x1ZGluZyBib3RoIEZJRE8yIGFuZCBV
MkYgb25lcy4gSXQgdXRpbGl6ZXMgYSBwcml2YXRlCisgICAgICAgIGZyYW1ld29yayBjYWxsZWQg
TmVhckZpZWxkIGluc3RlYWQgb2YgQ29yZU5GQyB0byBiZSBhYmxlIHRvIHN1cHBseSBhIGN1c3Rv
bSBVSSBsYXRlciBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgVGhlIHBhdGNoIGZvbGxvd3MgYWxt
b3N0IHRoZSBzYW1lIGZsb3cgYXMgcHJldmlvdXMgSElEIGFuZCBMb2NhbCBhdXRoZW50aWNhdG9y
IHN1cHBvcnQuCisgICAgICAgIDEpIERpc2NvdmVyeSBpcyB2aWEgTmZjU2VydmljZSB3aGljaCB3
aWxsIGludm9rZSBORkhhcmR3YXJlTWFuYWdlciB0byBzdGFydCBhIGdlbmVyaWMgTkZDIHJlYWRl
ciBzZXNzaW9uLgorICAgICAgICAyKSBPbmNlIGEgcmVhZGVyIHNlc3Npb24gaXMgZXN0YWJsaXNo
ZWQsIGEgTmZjQ29ubmVjdGlvbiBpcyBjcmVhdGVkIHRvIHN0YXJ0IHRoZSBwb2xsaW5nIGFuZCBy
ZWdpc3RlciB0aGUgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZQorICAgICAgICB0byB3YWl0IGZv
ciAnZGlkRGV0ZWN0VGFncycuCisgICAgICAgIDMpIFdoZW4gdGFncyBhcmUgZGV0ZWN0ZWQsIE5m
Y0Nvbm5lY3Rpb24gd2lsbCBkZXRlcm1pbmUgaWYgaXQgbWVldHMgb3VyIHJlcXVyaWVtZW50czog
eyB0eXBlLCBjb25uZWN0YWJpbGl0eSwgZmlkbyBhcHBsZXQgYXZhaWxhYmlsaXR5IH0uCisgICAg
ICAgIFRoZSBmaXJzdCB0YWcgdGhhdCBtZWV0cyBhbGwgcmVxdWlyZW1lbnQgd2lsbCB0aGVuIGJl
IHJldHVybmVkIGZvciBXZWJBdXRobiBvcGVyYXRpb25zLgorICAgICAgICA0KSBUaGUgZmlyc3Qg
V2ViQXV0aG4gb3BlcmF0aW9uIGlzIHRvIHNlbmQgYXV0aGVudGljYXRvckdldEluZm8gY29tbWFu
ZCB0byBkZXRlcm1pbmUgdGhlIHN1cHBvcnRlZCBwcm90b2NvbCwgYW5kIHRoZW4gaW5pdGlhbGl6
ZSBjb3JyZXNwb25kaW5nCisgICAgICAgIGF1dGhlbnRpY2F0b3JzLiBOb3RlZCwgdGhlIHNlbmRp
bmcvcmVjZWl2aW5nIG9mIHRoaXMgY29tbWFuZCBpcyBub3cgYWJzdHJhY3RlZCBpbnRvIEZpZG9T
ZXJ2aWNlIHdoaWNoIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyBIaWRTZXJ2aWNlIGFuZCBOZmNTZXJ2
aWNlLgorICAgICAgICA1KSBGcm9tIHRoZW4sIHRoZSBhY3R1YWwgV2ViQXV0aG4gcmVxdWVzdCwg
ZWl0aGVyIG1ha2VDcmVkZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aWxsIGJlIHNlbnQuCisKKyAg
ICAgICAgRm9yIHRlc3RpbmcsIHRoaXMgcGF0Y2ggZm9sbG93cyB0aGUgc2FtZSBmbG93IGFzIHdl
bGwuCisgICAgICAgIDEpIE1vY2tOZmNTZXJ2aWNlIG92ZXJyaWRlcyBOZmNTZXJ2aWNlIHRvIG1v
Y2sgdGhlIGJlaGF2aW9yIG9mIE5GQyBUYWdzIGRpc2NvdmVyeS4KKyAgICAgICAgMikgVGhlIHNh
bWUgY2xhc3MgYWxzbyBzd2l6emxlcyBtZXRob2RzIGZyb20gTkZSZWFkZXJTZXNzaW9uIHRvIG1v
Y2sgdGFnIGNvbm5lY3Rpb24gYW5kIGNvbW11bmljYXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsOjpjb2xsZWN0VHJhbnNwb3J0cyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFu
c3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRyYW5zcG9y
dFNlcnZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpjcmVhdGVNb2NrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNl
OjpIaWRTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQp
OgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpjb250aW51ZUFkZERldmljZUFmdGVyR2V0
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05lYXJGaWVsZFNvZnRMaW5rLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsubW06IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TmZjQ29ubmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpmaWRvOjpjb21wYXJlVmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5l
Y3Rpb246Ok5mY0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp+
TmZjQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OnRyYW5zYWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVjdGlvbjo6ZGlkRGV0ZWN0VGFncyBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1Nl
cnZpY2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmZj
U2VydmljZTo6TmZjU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6On5OZmNT
ZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TmZjU2VydmljZTo6ZGlkQ29ubmVjdFRhZyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW06IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UuaC4KKyAgICAgICAgKC1bV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSBpbml0V2l0aENvbm5l
Y3Rpb246XSk6CisgICAgICAgICgtW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgcmVhZGVyU2Vz
c2lvbjpkaWREZXRlY3RUYWdzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbTogQWRkZWQu
CisgICAgICAgICgtW1dLTW9ja05GVGFnIHR5cGVdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcg
aW5pdFdpdGhORlRhZzpdKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgZGVzY3JpcHRpb25dKToK
KyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaXNFcXVhbFRvTkZUYWc6XSk6CisgICAgICAgICgtW1dL
TW9ja05GVGFnIGluaXRXaXRoVHlwZTpdKToKKyAgICAgICAgKFdlYktpdDo6TW9ja05mY1NlcnZp
Y2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja05mY1NlcnZpY2U6OnRy
YW5zY2VpdmUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFy
dERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tOZmNTZXJ2aWNlOjpkZXRlY3RUYWdz
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpDdGFwTmZjRHJpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2Vi
S2l0OjpDdGFwTmZjRHJpdmVyOjpyZXNwb25kQXN5bmMgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vydmlj
ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2
aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpGaWRvU2Vydmlj
ZSk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpnZXRJbmZvKToKKyAgICAgICAgKFdl
YktpdDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
LmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVu
dGljYXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
VTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE5LTA4LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFtGVFddIEZpeCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggOTUyZjQzZWFkOTkwYmMxZWFhOTNmNDFhNThmMTM5NjZlZDIxNTY4NS4uOTQyYWI2YWFkZmEx
NmM1MTMxY2U1NTQxNTkzZDY5MmIzYWE0YWYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xNTUzLDcgKzE1
NTMsNyBAQAogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKLSNkZWZpbmUgSEFWRV9D
VEZPTlRDUkVBVEVGT1JDSEFSQUNURVJTV0lUSExBTkdVQUdFQU5ET1BUSU9OIDEKKyNkZWZpbmUg
SEFWRV9DVEZPTlRDUkVBVEVGT1JDSEFSQUNURVJTV0lUSExBTkdVQUdFQU5ET1BUSU9OIDAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTMwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAppbmRleCAyMTFlM2M4MWYzZjBkZTJmZTViY2Jm
Y2U2M2UzZTRmYzgxNTAyYTIwLi5mMjZjYWVhOGY3MjEzMTU2ZjY5N2E2MzgxZmM2MDE1YzAzNDVm
NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvQ29uc3RhbnRzLmgKQEAgLTIyMyw2ICsyMjMsMjUgQEAgY29uc3QgY2hhciBrVTJmVmVyc2lv
bltdID0gIlUyRl9WMiI7CiBjb25zdCB1aW50MzJfdCBrQ1RBUEhJRFVzYWdlUGFnZSA9IDB4RjFE
MDsKIGNvbnN0IHVpbnQzMl90IGtDVEFQSElEVXNhZ2UgPSAweDAxOwogCisvLyBDVEFQTkZDIEFw
cGxldCBzZWxlY3Rpb24gY29tbWFuZCBhbmQgcmVzcG9uc2VzCisvLyBodHRwczovL2ZpZG9hbGxp
YW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhl
bnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE5MDEzMC5odG1sI25mYy1hcHBsZXQtc2VsZWN0
aW9uCitjb25zdCB1aW50OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ29tbWFuZFtdID0gewor
ICAgIDB4MDAsIDB4QTQsIDB4MDQsIDB4MDAsIC8vIENMQSwgSU5TLCBQMSwgUDIKKyAgICAweDA4
LCAvLyBMCisgICAgMHhBMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg0NywgLy8gUklECisgICAgMHgy
RiwgMHgwMCwgMHgwMSAvLyBQSVgKK307CisKK2NvbnN0IHVpbnQ4X3Qga0NUQVBORkNBcHBsZXRT
ZWxlY3Rpb25VMmZbXSA9IHsKKyAgICAweDU1LCAweDMyLCAweDQ2LCAweDVGLCAweDU2LCAweDMy
LCAvLyBWZXJzaW9uCisgICAgMHg5MCwgMHgwMCAvLyBBUERVIHJlc3BvbnNlIGNvZGUKK307CisK
K2NvbnN0IHVpbnQ4X3Qga0NUQVBORkNBcHBsZXRTZWxlY3Rpb25DdGFwW10gPSB7CisgICAgMHg0
NiwgMHg0OSwgMHg0NCwgMHg0ZiwgMHg1ZiwgMHgzMiwgMHg1ZiwgMHgzMCwgLy8gVmVyc2lvbgor
ICAgIDB4OTAsIDB4MDAgLy8gQVBEVSByZXNwb25zZSBjb2RlCit9OworCiB9IC8vIG5hbWVzcGFj
ZSBmaWRvCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IGE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0
MDc1NjNmZmNkMGY5YjguLjY2OTJkY2E3MzYzOWEzZWJiMzA5MDc4ZGEyNGRhY2IyMTIwZTlhYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKICAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBBU1NFUlQoZGVjb2Rlci5pc0ludmFs
aWQoKSk7CisvLyAgICAgICAgQVNTRVJUKGRlY29kZXIuaXNJbnZhbGlkKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9OZWFyRmllbGRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05l
YXJGaWVsZFNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhN2I4Yjk4OTI2NThmNzhkMjU1YWRlNDUzYTE5MTg1
YTU1MWZhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9OZWFyRmllbGRTUEkuaApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPE5lYXJGaWVsZC9OZWFyRmllbGQuaD4KKworI2Vsc2UKKwordHlw
ZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIE5GRmVhdHVyZSkgeworICAgIE5GRmVhdHVyZVJl
YWRlck1vZGUgICAgICAgICAgICAgICAgID0gMSA8PCAwLAorfTsKKwordHlwZWRlZiBOU19FTlVN
KHVpbnQzMl90LCBORlRhZ1R5cGUpIHsKKyAgICBORlRhZ1R5cGVVbmtub3duICAgID0gMCwKKyAg
ICBORlRhZ1R5cGVHZW5lcmljNEEgID0gMywKK307CisKK3R5cGVkZWYgTlNfT1BUSU9OUyh1aW50
MzJfdCwgTkZUZWNobm9sb2d5KSB7CisgICAgTkZUZWNobm9sb2d5Tm9uZSAgICAgICAgICAgICAg
ICAgPSAwLAorfTsKKwordHlwZWRlZiBOU19FTlVNKHVpbnQzMl90LCBORk5kZWZBdmFpbGFiaWxp
dHkpIHsKKyAgICBORk5kZWZBdmFpbGFiaWxpdHlVbmtub3duID0gMCwKK307CisKK0Bwcm90b2Nv
bCBORlRhZ0EKK0BlbmQKKworQHByb3RvY29sIE5GVGFnQgorQGVuZAorCitAcHJvdG9jb2wgTkZU
YWdGCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZyA8TlNPYmplY3Q+CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5GVGFnVHlwZSB0eXBlOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBORlRlY2hub2xvZ3kgdGVjaG5vbG9neTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNEYXRhICp0YWdJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNEYXRhICpVSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGFzc2lnbikgTkZOZGVmQXZhaWxhYmlsaXR5IG5kZWZBdmFpbGFiaWxpdHk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGFzc2lnbikgc2l6ZV90IG5kZWZNZXNzYWdlU2l6ZTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBzaXplX3QgbmRlZkNvbnRhaW5l
clNpemU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqQXBw
RGF0YSBOU19ERVBSRUNBVEVEKDEwXzEyLCAxMF8xNSwgMTBfMCwgMTNfMCk7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQ8TkZUYWdBPiB0YWdBOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBpZDxORlRhZ0I+IHRhZ0I7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIGlkPE5GVGFnRj4gdGFnRjsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTkZU
YWc6KGlkPE5GVGFnPil0YWc7CistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOworLSAoQk9PTClp
c0VxdWFsVG9ORlRhZzooaWQ8TkZUYWc+KXRhZzsKK0BlbmQKKworQGludGVyZmFjZSBORlRhZyA6
IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZywgTkZUYWcsIE5GVGFnQSwgTkZUYWdCLCBORlRhZ0Y+
CitAZW5kCisKK0Bwcm90b2NvbCBORlNlc3Npb24gPE5TT2JqZWN0PgorLSAodm9pZCkgZW5kU2Vz
c2lvbjsKK0BlbmQKKworQGludGVyZmFjZSBORlNlc3Npb24gOiBOU09iamVjdCA8TkZTZXNzaW9u
PgorQGVuZAorCitAcHJvdG9jb2wgTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CisKK0BpbnRlcmZh
Y2UgTkZSZWFkZXJTZXNzaW9uIDogTkZTZXNzaW9uCitAcHJvcGVydHkgKGFzc2lnbikgaWQ8TkZS
ZWFkZXJTZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOworCistIChCT09MKSBzdGFydFBvbGxpbmc7
CistIChCT09MKSBzdG9wUG9sbGluZzsKKy0gKEJPT0wpIGNvbm5lY3RUYWc6KE5GVGFnKil0YWc7
CistIChCT09MKSBkaXNjb25uZWN0VGFnOworLSAoTlNEYXRhKikgdHJhbnNjZWl2ZTooTlNEYXRh
KiljYXBkdTsKKy0gKE5TRXJyb3IgKikgdXBkYXRlVUlBbGVydE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZTsKK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIDxOU09i
amVjdD4KK0BvcHRpb25hbAorLSAodm9pZCkgcmVhZGVyU2Vzc2lvbjooTkZSZWFkZXJTZXNzaW9u
Kil0aGVTZXNzaW9uIGRpZERldGVjdFRhZ3M6KE5TQXJyYXk8TkZUYWcgKj4gKil0YWdzOworQGVu
ZAorCitAaW50ZXJmYWNlIE5GSGFyZHdhcmVNYW5hZ2VyIDogTlNPYmplY3QKKysgKGluc3RhbmNl
dHlwZSkgc2hhcmVkSGFyZHdhcmVNYW5hZ2VyOworLSAoTlNPYmplY3Q8TkZTZXNzaW9uPiAqKSBz
dGFydFJlYWRlclNlc3Npb25XaXRoQWN0aW9uU2hlZXRVSToodm9pZCheKShORlJlYWRlclNlc3Np
b24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9yKSl0aGVTdGFydENhbGxiYWNrOworLSAoQk9PTClh
cmVGZWF0dXJlc1N1cHBvcnRlZDooTkZGZWF0dXJlKWZlYXR1cmVNYXNrIG91dEVycm9yOihOU0Vy
cm9yKiopb3V0RXJyb3I7CitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGI0NjZkMmM3
NDg5ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1MTY0NDQuLjgxMzc4ODFiYjQxZWU3YTk3ODNiYWQ4
NjQ0NTcxZGExZjkxZmQ2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDA4LDYgKzQwOCw4IEBAIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKIAogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAorVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKK1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcAogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDMwZjQ4OGFiNTgwODkxZTk5MzU0NTJkNmI2MTM4ZTAzY2JiODAyY2UuLmJkOTk1
ZTk1NmY4ZWY2YTNmOGIxMjFhZTBiZWI5YmI0ZmNmYzJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTQ5Niw5ICs0OTYsMTQgQEAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCitVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KIAogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbQorVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KIAogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA4ZmFhNzZm
M2E0OGFjOGJlOTNmN2JmMzc4MGNjNDQzNGM2MDY5NTZmLi5hZjg0YTkxMzcwZmY4ZTA3OTdkNGY2
MTRhZTgyY2EzMGQzMmY4NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTY3OCw2ICs2NzgsMzAgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29uZmlndXJhdGlvbi5oaWQgPSBXVEZN
b3ZlKGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gbmZjUmVmID0gc3RhdGljX2Nhc3Q8V0tE
aWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYs
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKS5nZXQoKSkpKSB7
CisgICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZj
IG5mYzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7
CisgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCisgICAgICAgICAgICBuZmMuZXJyb3Ig
PSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6
OlN1Y2Nlc3M7CisgICAgICAgIGlmIChlcnJvciA9PSAibm8tdGFncyIpCisgICAgICAgICAgICBu
ZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5m
Yzo6RXJyb3I6Ok5vVGFnczsKKyAgICAgICAgaWYgKGVycm9yID09ICJ3cm9uZy10YWctdHlwZSIp
CisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlwZTsKKyAgICAgICAgaWYgKGVycm9y
ID09ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vQ29ubmVjdGlv
bnM7CisgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNpb3VzLXBheWxvYWQiKQorICAgICAgICAg
ICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOworCisgICAgICAgIGlmIChhdXRvIHBheWxv
YWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9h
ZEJhc2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAgbmZjLnBheWxvYWRCYXNlNjQgPSBXZWJL
aXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3IoKTsKKworICAgICAgICBp
ZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKKyAgICAgICAgICAgIG5mYy5tdWx0aXBs
ZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRhZ3MpOworCisgICAgICAgIGNvbmZp
Z3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOworICAgIH0KKwogICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggMmMwODQ0NTc4NTdkNDEwOWM4NDMx
MTU5MTgzMGUzNGIyYTI1YjZkZi4uMGQ3YjY2MTNmZjZhZTZkNmE4NTkxYjZkYzA4M2EzMWNlYWQ3
MjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzgsMTUgKzM4
LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JN
YW5hZ2VySW50ZXJuYWwgewogCiAjaWYgUExBVEZPUk0oTUFDKQotY29uc3Qgc2l6ZV90IG1heFRy
YW5zcG9ydE51bWJlciA9IDI7Citjb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVtYmVyID0gMzsK
ICNlbHNlCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVtYmVyID0gMTsKK2NvbnN0IHNpemVf
dCBtYXhUcmFuc3BvcnROdW1iZXIgPSAyOwogI2VuZGlmCiAKIC8vIFN1Z2dlc3RlZCBieSBXZWJB
dXRoTiBzcGVjIGFzIG9mIDcgQXVndXN0IDIwMTguCiBjb25zdCB1bnNpZ25lZCBtYXhUaW1lT3V0
VmFsdWUgPSAxMjAwMDA7CiAKLS8vIEZJWE1FKDE4ODYyNCwgMTg4NjI1KTogU3VwcG9ydCBORkMg
YW5kIEJMRSBhdXRoZW50aWNhdG9ycy4KKy8vIEZJWE1FKDE4ODYyNSk6IFN1cHBvcnQgQkxFIGF1
dGhlbnRpY2F0b3JzLgogc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQg
Y29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0aGVudGljYXRv
clNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IHJl
c3VsdDsKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFu
c3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGkKICAgICAgICAg
YWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogI2Vu
ZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9y
dDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTY5LDcgKzcxLDEx
IEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFu
c3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
KyAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpO
ZmMpOworI2Vsc2UKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSByZXN1bHQuYWRkKEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CiAjZW5kaWYKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFu
c3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAg
YWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogI2Vu
ZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9y
dDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMCw4ICsxMDgs
OSBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJh
bnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgorICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CkBAIC0xMDksNiArMTE4LDggQEAgc3RhdGlj
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29u
c3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAgaWYgKCFyZXN1bHQuY29udGFpbnMoQXV0aGVudGlj
YXRvclRyYW5zcG9ydDo6VXNiKSAmJiBhbGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0cy5jb250YWlu
cyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogI2VuZGlmCisgICAgICAgIGlmICghcmVzdWx0
LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYykgJiYgYWxsb3dDcmVkZW50aWFs
LnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKICAgICAgICAg
aWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVtYmVyKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5jcHAKaW5kZXggZjQ1NjU3Yjk1OTcwOTgwZjRjMWY0NWVhMzE4MGMzZTc3MGY1
ODA3My4uMTE1MmQzMWQ0YTQ1YzMyNzM0Y2RiYTkzMmFlMGUzOGE5NmUwMmMyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
clRyYW5zcG9ydFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcApAQCAtMzIsNiAr
MzIsOCBAQAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgogI2luY2x1ZGUgIk1vY2tIaWRTZXJ2
aWNlLmgiCiAjaW5jbHVkZSAiTW9ja0xvY2FsU2VydmljZS5oIgorI2luY2x1ZGUgIk1vY2tOZmNT
ZXJ2aWNlLmgiCisjaW5jbHVkZSAiTmZjU2VydmljZS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNiArNDcsOCBAQCBVbmlxdWVSZWY8QXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpjcmVhdGUoVwogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNi
OgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxIaWRTZXJ2aWNlPihvYnNlcnZlcik7CiAj
ZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYzoKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmZjU2VydmljZT4ob2JzZXJ2ZXIpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxMb2NhbFNlcnZpY2U+KG9ic2VydmVyKTsKQEAgLTYwLDYgKzY0LDggQEAgVW5p
cXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZTo6Y3JlYXRlTW8KICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ6OlVzYjoKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TW9ja0hpZFNlcnZpY2U+
KG9ic2VydmVyLCBjb25maWd1cmF0aW9uKTsKICNlbmRpZgorICAgIGNhc2UgV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxN
b2NrTmZjU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3VyYXRpb24pOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxNb2NrTG9jYWxTZXJ2aWNlPihvYnNlcnZlciwgY29uZmlndXJhdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9I
aWRTZXJ2aWNlLmgKaW5kZXggN2QyZDM1ZjI0N2RlZDAyZTA2ZjRkNmIxNWQzYTlkNzU0MWVkMmFj
Zi4uZThlYzIzY2JiMjEwMjFmNTY2ZGQ0ZDgxODczZjk0YmUwMGMwYWQ1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vydmlj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0hpZFNlcnZpY2UuaApAQCAtMjcsMTcgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2Vy
dmljZS5oIgorI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lP
SElETWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBDdGFwSGlkRHJpdmVy
OwogY2xhc3MgSGlkQ29ubmVjdGlvbjsKIAotY2xhc3MgSGlkU2VydmljZSA6IHB1YmxpYyBBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitjbGFzcyBIaWRTZXJ2aWNlIDogcHVibGljIEZp
ZG9TZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWRTZXJ2aWNlKE9ic2VydmVyJik7
CiAgICAgfkhpZFNlcnZpY2UoKTsKQEAgLTUxLDExICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKTsKICAgICB2aXJ0dWFsIFVuaXF1ZVJl
ZjxIaWRDb25uZWN0aW9uPiBjcmVhdGVIaWRDb25uZWN0aW9uKElPSElERGV2aWNlUmVmKSBjb25z
dDsKIAotICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oQ3RhcEhpZERyaXZl
ciogZGV2aWNlUmVmLCBWZWN0b3I8dWludDhfdD4mJiBpbmZvKTsKLQogICAgIFJldGFpblB0cjxJ
T0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKLSAgICAvLyBLZWVwaW5nIGRyaXZlcnMgYWxpdmUg
d2hlbiB0aGV5IGFyZSBpbml0aWFsaXppbmcgYXV0aGVudGljYXRvcnMuCi0gICAgSGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4+IG1fZHJpdmVyczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXggYWJkMGU3ZTcyOTQ3
OTEyOGNiNmFmZmY3ZjIxODEyNjNlNGRhOTgzNS4uMTI3ODA2ZmFkNDgxYWQyYjZmZmIyN2U3ODM4
YjBjNjg5ODQwOTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBAIC0yOCwxNSArMjgs
OCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0
ICJDdGFwQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCAiQ3RhcEhpZERyaXZlci5oIgogI2ltcG9y
dCAiSGlkQ29ubmVjdGlvbi5oIgotI2ltcG9ydCAiVTJmQXV0aGVudGljYXRvci5oIgotI2ltcG9y
dCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Rl
dmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KLSNpbXBvcnQgPHd0Zi9SdW5M
b29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIGZpZG87CkBAIC01
Niw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZVJlbW92ZWRDYWxsYmFjayh2b2lkKiBjb250
ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVmCiB9CiAKIEhpZFNlcnZpY2U6Okhp
ZFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDogQXV0aGVudGljYXRvclRyYW5zcG9y
dFNlcnZpY2Uob2JzZXJ2ZXIpCisgICAgOiBGaWRvU2VydmljZShvYnNlcnZlcikKIHsKICAgICBt
X21hbmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0RpY3Rpb25hcnkgKm1hdGNoaW5nRGlj
dGlvbmFyeSA9IEB7CkBAIC05MiwzMiArODUsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4g
SGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAK
IHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewot
ICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25u
ZWN0aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUg
ZGV2aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVx
dWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhf
dD4mJiByZXNwb25zZSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
ICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhp
cy0+Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7
Ci0gICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJp
dmVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKLX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyhD
dGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQotewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBkcml2ZXIgPSBtX2RyaXZlcnMudGFrZShwdHIp
OwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbmZvID0gcmVhZENUQVBHZXRJbmZvUmVzcG9u
c2UocmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYmIGluZm8tPnZlcnNpb25zKCkuZmluZChQcm90
b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52ZXJzaW9ucygpLmVuZCgpKSB7Ci0gICAgICAg
IG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChDdGFwQXV0aGVudGljYXRvcjo6Y3JlYXRl
KFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5mbykpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBnZXQgaW5mbyByZXNwb25z
ZS4iKTsKLSAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVyc2lvbjo6a1UyZik7Ci0g
ICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0
ZShXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJbmZvKFdURjo6bWFrZVVuaXF1ZTxDdGFwSGlk
RHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZTA1ZmFjMjJiOWQ0MDVmNTMyODk3NzhhZTcwMTVhMGI4MGU0YjM3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVh
ckZpZWxkU29mdExpbmsuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIK
KyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9I
RUFERVIoV2ViS2l0LCBOZWFyRmllbGQpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihX
ZWJLaXQsIE5GVGFnKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZTZXNz
aW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZSZWFkZXJTZXNzaW9u
KTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZIYXJkd2FyZU1hbmFnZXIp
OworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZp
ZWxkU29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1NDQyMzM5NDRiMDJmYTU1ZWZkZTZjZjRhNzQ0
MjlkMGU1YWM5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCitTT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUktfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCk7CisKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlRhZyk7CitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlJlYWRlclNlc3Npb24pOworCisjaWYg
UExBVEZPUk0oTUFDKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUwoV2ViS2l0
LCBOZWFyRmllbGQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsKKyNlbHNlCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZIYXJkd2FyZU1hbmFnZXIpOworI2VuZGlm
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4MDgzNDUwNjYwOTM0ZTE1N2QwNTE1ZjUyZmFiMGQ2YWQyODgxMmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNfQ0xBU1MgTkZS
ZWFkZXJTZXNzaW9uOworT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmZjU2Vydmlj
ZTsKKworY2xhc3MgTmZjQ29ubmVjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZmNDb25u
ZWN0aW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTmZjQ29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgTmZjQ29ubmVjdGlvbihSZXRh
aW5QdHI8TkZSZWFkZXJTZXNzaW9uPiYmLCBOZmNTZXJ2aWNlJik7CisgICAgfk5mY0Nvbm5lY3Rp
b24oKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSBjb25zdDsKKworICAgIC8vIEZvciBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlCisgICAg
dm9pZCBkaWREZXRlY3RUYWdzKE5TQXJyYXkgKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPE5GUmVhZGVyU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJldGFpblB0cjxXS05GUmVh
ZGVyU2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFdlYWtQdHI8TmZjU2VydmljZT4g
bV9zZXJ2aWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzkyNTdlYjkxMGViOGIyOGU4ODg3MTkwNjQwN2VkNjA4MjNjYjIzYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nv
bm5lY3Rpb24ubW0KQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisKKyNpbXBvcnQgIk5mY1NlcnZpY2UuaCIKKyNpbXBvcnQgIldLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIGZp
ZG87CisKK25hbWVzcGFjZSB7CitpbmxpbmUgYm9vbCBjb21wYXJlVmVyc2lvbihOU0RhdGEgKmRh
dGEsIGNvbnN0IHVpbnQ4X3QgdmVyc2lvbltdLCBzaXplX3QgdmVyc2lvblNpemUpCit7CisgICAg
aWYgKGRhdGEubGVuZ3RoICE9IHZlcnNpb25TaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuICFtZW1jbXAoZGF0YS5ieXRlcywgdmVyc2lvbiwgdmVyc2lvblNpemUpOworfQor
fSAvLyBuYW1lc3BhY2UKKworTmZjQ29ubmVjdGlvbjo6TmZjQ29ubmVjdGlvbihSZXRhaW5QdHI8
TkZSZWFkZXJTZXNzaW9uPiYmIHNlc3Npb24sIE5mY1NlcnZpY2UmIHNlcnZpY2UpCisgICAgOiBt
X3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dL
TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbjoqdGhpc10p
KQorICAgICwgbV9zZXJ2aWNlKG1ha2VXZWFrUHRyKHNlcnZpY2UpKQoreworICAgIFttX3Nlc3Np
b24gc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07CisgICAgLy8gRklYTUUoMjAwOTMzKQor
ICAgIFttX3Nlc3Npb24gdXBkYXRlVUlBbGVydE1lc3NhZ2U6QCJIb2xkIHRoZSBrZXkgYWdhaW5z
dCB0aGUgdG9wIG9mIHlvdXIgZGV2aWNlLiJdOworICAgIFttX3Nlc3Npb24gc3RhcnRQb2xsaW5n
XTsKK30KKworTmZjQ29ubmVjdGlvbjo6fk5mY0Nvbm5lY3Rpb24oKQoreworICAgIFttX3Nlc3Np
b24gZGlzY29ubmVjdFRhZ107CisgICAgW21fc2Vzc2lvbiBzdG9wUG9sbGluZ107CisgICAgW21f
c2Vzc2lvbiBlbmRTZXNzaW9uXTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IE5mY0Nvbm5lY3Rpb246
OnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Cit7CisgICAgYXV0byByZXNw
b25zZURhdGEgPSBbbV9zZXNzaW9uIHRyYW5zY2VpdmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRh
dGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV1dOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3BvbnNlOworICAgIHJlc3BvbnNlLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihyZXNwb25zZURhdGEuYnl0ZXMpLCByZXNwb25zZURhdGEubGVuZ3RoKTsKKyAgICByZXR1
cm4gcmVzcG9uc2U7Cit9CisKK3ZvaWQgTmZjQ29ubmVjdGlvbjo6ZGlkRGV0ZWN0VGFncyhOU0Fy
cmF5ICp0YWdzKSBjb25zdAoreworICAgIC8vIEZJWE1FKDIwMDkzMikKKyAgICBmb3IgKE5GVGFn
ICp0YWcgaW4gdGFncykgeworICAgICAgICBpZiAodGFnLnR5cGUgIT0gTkZUYWdUeXBlR2VuZXJp
YzRBKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghW21fc2Vzc2lvbiBjb25u
ZWN0VGFnOnRhZ10pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBDb25maXJt
IHRoZSBGSURPIGFwcGxldCBpcyBhdmFsaWFibGUgYmVmb3JlIHJldHVybi4KKyAgICAgICAgLy8g
aHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRv
LWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNu
ZmMtYXBwbGV0LXNlbGVjdGlvbgorICAgICAgICBhdXRvIHZlcnNpb25EYXRhID0gW21fc2Vzc2lv
biB0cmFuc2NlaXZlOltOU0RhdGEgZGF0YVdpdGhCeXRlczprQ1RBUE5GQ0FwcGxldFNlbGVjdGlv
bkNvbW1hbmQgbGVuZ3RoOnNpemVvZihrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkNvbW1hbmQpXV07
CisgICAgICAgIGlmICghdmVyc2lvbkRhdGEgfHwgKCFjb21wYXJlVmVyc2lvbih2ZXJzaW9uRGF0
YSwga0NUQVBORkNBcHBsZXRTZWxlY3Rpb25VMmYsIHNpemVvZihrQ1RBUE5GQ0FwcGxldFNlbGVj
dGlvblUyZikpICYmICFjb21wYXJlVmVyc2lvbih2ZXJzaW9uRGF0YSwga0NUQVBORkNBcHBsZXRT
ZWxlY3Rpb25DdGFwLCBzaXplb2Yoa0NUQVBORkNBcHBsZXRTZWxlY3Rpb25DdGFwKSkpKSB7Cisg
ICAgICAgICAgICBbbV9zZXNzaW9uIGRpc2Nvbm5lY3RUYWddOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fc2VydmljZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9zZXJ2aWNlLT5kaWRDb25uZWN0VGFnKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOWZmM2NlM2Qw
YmViMzk2ZjlmNjYzZjVmNDI2ODE4ODk2MzA3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCisKK09CSkNfQ0xBU1MgTkZSZWFk
ZXJTZXNzaW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ3RhcE5mY0RyaXZlcjsK
KworY2xhc3MgTmZjU2VydmljZSA6IHB1YmxpYyBGaWRvU2VydmljZSB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgTmZjU2VydmljZShPYnNlcnZlciYpOworICAgIH5OZmNTZXJ2aWNlKCk7CisKKyAg
ICAvLyBGb3IgTmZjQ29ubmVjdGlvbi4KKyAgICB2b2lkIGRpZENvbm5lY3RUYWcoKTsKKworcHJv
dGVjdGVkOgorICAgIC8vIE9ubHkgb25lIHJlYWRlciBzZXNzaW9uIGlzIGFsbG93ZWQgcGVyIHRp
bWUuCisgICAgLy8gS2VlcCB0aGUgcmVhZGVyIHNlc3Npb24gYWxpdmUgaGVyZSB3aGVuIGl0IHRy
aWVzIHRvIGNvbm5lY3QgdG8gYSB0YWcuCisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBOZmNEcml2
ZXI+IG1fZHJpdmVyOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnREaXNjb3ZlcnlJbnRlcm5h
bCgpIGZpbmFsOworICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oVmVjdG9y
PHVpbnQ4X3Q+JiYgcmVzcG9uc2UpOworCisgICAgLy8gT3ZlcnJpZGVkIGJ5IE1vY2tOZmNTZXJ2
aWNlLgorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9O
ZmNTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTmZjU2VydmljZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzRhNTcwODc4ODgwZmUwMzIwY2QxYWEz
MGFhOTk4NGQ0NmYwYjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQpAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZmNTZXJ2aWNlLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJDdGFwTmZjRHJpdmVyLmgiCisj
aW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIKKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KKworI2ltcG9ydCAiTmVhckZpZWxkU29mdExpbmsuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworTmZjU2VydmljZTo6TmZjU2Vy
dmljZShPYnNlcnZlciYgb2JzZXJ2ZXIpCisgICAgOiBGaWRvU2VydmljZShvYnNlcnZlcikKK3sK
K30KKworTmZjU2VydmljZTo6fk5mY1NlcnZpY2UoKQoreworfQorCit2b2lkIE5mY1NlcnZpY2U6
OmRpZENvbm5lY3RUYWcoKQoreworICAgIGdldEluZm8oV1RGTW92ZShtX2RyaXZlcikpOworfQor
Cit2b2lkIE5mY1NlcnZpY2U6OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwoKQoreworICAgIHBsYXRm
b3JtU3RhcnREaXNjb3ZlcnkoKTsKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0
RGlzY292ZXJ5KCkKK3sKKyAgICBpZiAoIVtbZ2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygpIHNo
YXJlZEhhcmR3YXJlTWFuYWdlcl0gYXJlRmVhdHVyZXNTdXBwb3J0ZWQ6TkZGZWF0dXJlUmVhZGVy
TW9kZSBvdXRFcnJvcjpuaWxdKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXaWxsIGJlIGV4
ZWN1dGVkIGluIGEgZGlmZmVyZW50IHRocmVhZC4KKyAgICBhdXRvIGNhbGxiYWNrID0gbWFrZUJs
b2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKE5GUmVhZGVyU2Vz
c2lvbiAqc2Vzc2lvbiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkbid0IHN0YXJ0IGEgTkZDIHJlYWRlciBzZXNzaW9uOiAlQCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJldGFpblB0cjxO
RlJlYWRlclNlc3Npb24+IHJldGFpblNlc3Npb24gPSBzZXNzaW9uOworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCB0aGlzLCBzZXNzaW9uID0gcmV0YWluU2Vzc2lv
bl0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAg
ICAgICAgW3Nlc3Npb24gZW5kU2Vzc2lvbl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDdGFwTmZjRHJpdmVyIGFuZCBOZmNDb25uZWN0
aW9uIHdpbGwgdGFrZSBjYXJlIG9mIHBvbGxpbmcgdGFncyBhbmQgY29ubmVjdGluZyB0byB0aGVt
LgorICAgICAgICAgICAgbV9kcml2ZXIgPSBXVEY6Om1ha2VVbmlxdWU8Q3RhcE5mY0RyaXZlcj4o
bWFrZVVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPihXVEZNb3ZlKHNlc3Npb24pLCAqdGhpcykpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBbW2dldE5GSGFyZHdhcmVNYW5hZ2VyQ2xhc3MoKSBz
aGFyZWRIYXJkd2FyZU1hbmFnZXJdIHN0YXJ0UmVhZGVyU2Vzc2lvbldpdGhBY3Rpb25TaGVldFVJ
OmNhbGxiYWNrLmdldCgpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNl
c3Npb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlMGI5NmM3NjYwZDQ5YmNjODM3NTZhZTVlYmRk
ODBhYTA2ZTk0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1wb3J0IDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIE5mY0Nvbm5lY3Rpb247Cit9CisKK0BpbnRl
cmZhY2UgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxORlJlYWRlclNlc3Np
b25EZWxlZ2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29ubmVjdGlvbjooV2ViS2l0
OjpOZmNDb25uZWN0aW9uJiljb25uZWN0aW9uOworCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY1ZDcwODMyMzJhMGUwN2EzYTBmMzE2YTE2MjEyZWM0YTE2
YTZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tORlJlYWRl
clNlc3Npb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2ltcG9ydCAi
TmZjQ29ubmVjdGlvbi5oIgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKworI2ltcG9ydCAiTmVh
ckZpZWxkU29mdExpbmsuaCIKKworQGltcGxlbWVudGF0aW9uIFdLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUgeworICAgIFdlYWtQdHI8V2ViS2l0OjpOZmNDb25uZWN0aW9uPiBfY29ubmVjdGlvbjsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29ubmVjdGlvbjooV2ViS2l0OjpOZmNDb25u
ZWN0aW9uJiljb25uZWN0aW9uCit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgX2Nvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihjb25uZWN0aW9uKTsKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLy8gRXhlY3V0ZWQgaW4gYSBkaWZmZXJlbnQgdGhyZWFkLgorLSAodm9pZCly
ZWFkZXJTZXNzaW9uOihORlJlYWRlclNlc3Npb24qKXRoZVNlc3Npb24gZGlkRGV0ZWN0VGFnczoo
TlNBcnJheTxORlRhZyAqPiAqKXRhZ3MKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIFJldGFpblB0cjxOU0FycmF5PiByZXRhaW5UYWdzID0gdGFnczsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBfY29ubmVjdGlvbiwgdGFncyA9IHJl
dGFpblRhZ3NdIHsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjb25uZWN0aW9uLT5kaWREZXRlY3RUYWdzKHRhZ3MuZ2V0KCkpOworICAgIH0p
OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2Vy
dmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrTmZjU2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzMmNkZTRkNmI2NmRhYzMxYWNjNjI5NmM1ZTk5
ODI2YTI2YjMzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2lu
Y2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJO
ZmNTZXJ2aWNlLmgiCisKK09CSkNfQ0xBU1MgTlNEYXRhOworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CisKK2NsYXNzIE1v
Y2tOZmNTZXJ2aWNlIGZpbmFsIDogcHVibGljIE5mY1NlcnZpY2UgeworcHVibGljOgorICAgIE1v
Y2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiYpOworCisgICAgTlNEYXRhKiB0cmFuc2NlaXZlKCk7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkgZmluYWw7CisKKyAgICB2b2lkIGRldGVjdFRh
Z3MoKSBjb25zdDsKKworICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9j
b25maWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDNlMTVjMGRhZGQ4NTc2NTkwNzY3MzMzYjNlNDRjYjBhYjEyNzc4MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a05mY1NlcnZpY2UubW0KQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIk1vY2tOZmNTZXJ2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKQorI2ltcG9ydCAiQ3RhcE5mY0RyaXZlci5oIgorI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgi
CisjaW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFu
dHMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
KyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworI2ltcG9ydCAiTmVhckZpZWxkU29mdExpbmsuaCIK
KworQGludGVyZmFjZSBXS01vY2tORlRhZyA6IE5TT2JqZWN0IDxORlRhZz4KKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoVHlwZTooTkZUYWdUeXBlKXR5cGU7CisKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdLTW9ja05GVGFnIHsKKyAgICBORlRhZ1R5cGUgX3R5cGU7Cit9CisKK0BzeW50aGVz
aXplIHRlY2hub2xvZ3k7CitAc3ludGhlc2l6ZSB0YWdJRDsKK0BzeW50aGVzaXplIEFwcERhdGE7
CitAc3ludGhlc2l6ZSBVSUQ7CitAc3ludGhlc2l6ZSBuZGVmQXZhaWxhYmlsaXR5OworQHN5bnRo
ZXNpemUgbmRlZk1lc3NhZ2VTaXplOworQHN5bnRoZXNpemUgbmRlZkNvbnRhaW5lclNpemU7CitA
c3ludGhlc2l6ZSB0YWdBOworQHN5bnRoZXNpemUgdGFnQjsKK0BzeW50aGVzaXplIHRhZ0Y7CisK
Ky0gKE5GVGFnVHlwZSl0eXBlCit7CisgICAgcmV0dXJuIF90eXBlOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhORlRhZzooaWQ8TkZUYWc+KXRhZworeworICAgIGlmICgoc2VsZiA9IFtz
dXBlciBpbml0XSkpCisgICAgICAgIF90eXBlID0gdGFnLnR5cGU7CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKE5TU3RyaW5nKilkZXNjcmlwdGlvbgoreworICAgIHJldHVybiBuaWw7Cit9CisK
Ky0gKEJPT0wpaXNFcXVhbFRvTkZUYWc6KGlkPE5GVGFnPil0YWcKK3sKKyAgICByZXR1cm4gTk87
Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFR5cGU6KE5GVGFnVHlwZSl0eXBlCit7Cisg
ICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgX3R5cGUgPSB0eXBlOworICAg
IHJldHVybiBzZWxmOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIGZpZG87Cit1c2luZyBNb2NrID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6TmZjOworCituYW1lc3BhY2UgeworCitzdGF0aWMgaWQ8TkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGU+IGdsb2JhbE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlOworc3RhdGljIE1vY2tOZmNTZXJ2
aWNlKiBnbG9iYWxOZmNTZXJ2aWNlOworCitzdGF0aWMgdm9pZCBORlJlYWRlclNlc3Npb25TZXRE
ZWxlZ2F0ZShpZCwgU0VMLCBpZDxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCit7
CisgICAgZ2xvYmFsTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKK30KKworc3Rh
dGljIEJPT0wgTkZSZWFkZXJTZXNzaW9uQ29ubmVjdFRhZ0ZhaWwoaWQsIFNFTCwgTkZUYWcgKikK
K3sKKyAgICByZXR1cm4gTk87Cit9CisKK3N0YXRpYyBCT09MIE5GUmVhZGVyU2Vzc2lvbkNvbm5l
Y3RUYWcoaWQsIFNFTCwgTkZUYWcgKikKK3sKKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMg
TlNEYXRhKiBORlJlYWRlclNlc3Npb25UcmFuc2NlaXZlKGlkLCBTRUwsIE5TRGF0YSAqKQorewor
ICAgIGlmICghZ2xvYmFsTmZjU2VydmljZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gZ2xvYmFsTmZjU2VydmljZS0+dHJhbnNjZWl2ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZQor
CitNb2NrTmZjU2VydmljZTo6TW9ja05mY1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25z
dCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorICAg
IDogTmZjU2VydmljZShvYnNlcnZlcikKKyAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uKQoreworfQorCitOU0RhdGEqIE1vY2tOZmNTZXJ2aWNlOjp0cmFuc2NlaXZlKCkKK3sKKyAg
ICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIHJlc3VsdCA9IFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2
NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNd
OworICAgIG1fY29uZmlndXJhdGlvbi5uZmMtPnBheWxvYWRCYXNlNjQucmVtb3ZlKDApOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgTW9ja05mY1NlcnZpY2U6OnBsYXRmb3JtU3RhcnRE
aXNjb3ZlcnkoKQoreworICAgIGlmICghIW1fY29uZmlndXJhdGlvbi5uZmMpIHsKKyAgICAgICAg
Z2xvYmFsTmZjU2VydmljZSA9IHRoaXM7CisKKyAgICAgICAgTWV0aG9kIG1ldGhvZFRvU3dpenps
ZTEgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNlc3Npb25DbGFzcygpLCBA
c2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSk7CisgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlv
bihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5GUmVhZGVyU2Vzc2lvblNldERlbGVnYXRlKTsKKwor
ICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxlMiA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9k
KGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBzZWxlY3Rvcihjb25uZWN0VGFnOikpOworICAg
ICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Ok5vQ29u
bmVjdGlvbnMpCisgICAgICAgICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9T
d2l6emxlMiwgKElNUClORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUy
LCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWcpOworCisgICAgICAgIE1ldGhvZCBtZXRo
b2RUb1N3aXp6bGUzID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoZ2V0TkZSZWFkZXJTZXNzaW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKHRyYW5zY2VpdmU6KSk7CisgICAgICAgIG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUzLCAoSU1QKU5GUmVhZGVyU2Vzc2lvblRyYW5zY2Vp
dmUpOworCisgICAgICAgIGF1dG8gcmVhZGVyU2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jTkZSZWFk
ZXJTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CisgICAgICAgIG1fZHJpdmVyID0gV1RGOjptYWtl
VW5pcXVlPEN0YXBOZmNEcml2ZXI+KG1ha2VVbmlxdWVSZWY8TmZjQ29ubmVjdGlvbj4ocmVhZGVy
U2Vzc2lvbi5nZXQoKSwgKnRoaXMpKTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5k
ZXRlY3RUYWdzKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIExP
R19FUlJPUigiTm8gbmZjIGF1dGhlbnRpY2F0b3JzIGlzIGF2YWlsYWJsZS4iKTsKK30KKwordm9p
ZCBNb2NrTmZjU2VydmljZTo6ZGV0ZWN0VGFncygpIGNvbnN0Cit7CisgICAgaWYgKG1fY29uZmln
dXJhdGlvbi5uZmMtPmVycm9yID09IE1vY2s6OkVycm9yOjpOb1RhZ3MpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW2NvbmZpZ3VyYXRpb24gPSBt
X2NvbmZpZ3VyYXRpb25dIHsKKyAgICAgICAgYXV0byB0YWdzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLm5mYy0+ZXJy
b3IgPT0gTW9jazo6RXJyb3I6Oldyb25nVGFnVHlwZSB8fCBjb25maWd1cmF0aW9uLm5mYy0+bXVs
dGlwbGVUYWdzKQorICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OltbV0tNb2NrTkZUYWcgYWxs
b2NdIGluaXRXaXRoVHlwZTpORlRhZ1R5cGVVbmtub3duXV07CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dLTW9ja05GVGFnIGFsbG9jXSBpbml0V2l0aFR5cGU6
TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubmZjLT5t
dWx0aXBsZVRhZ3MpCisgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6W1tXS01vY2tORlRhZyBh
bGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZUdlbmVyaWM0QV1dOworCisgICAgICAgIFtnbG9i
YWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSByZWFkZXJTZXNzaW9uOm5pbCBkaWREZXRlY3RUYWdz
OnRhZ3MuZ2V0KCldOworICAgIH0pOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIGNhbGxiYWNr
LmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCBmN2MzOTY5Njk1OTQxOGFiOTUwZDY3ZjQ0MzZl
Y2ZlM2EzY2JmZDFjLi5mNDBhN2I3YmQ4YmUxYjdkMGIzNDI4NWJkNjY2Yzg3ZDBkY2Q3OTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaApAQCAtNzIsOSArNzIsMjQgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07
CiAgICAgfTsKIAorICAgIHN0cnVjdCBOZmMgeworICAgICAgICBlbnVtIGNsYXNzIEVycm9yIDog
dWludDhfdCB7CisgICAgICAgICAgICBTdWNjZXNzLAorICAgICAgICAgICAgTm9UYWdzLAorICAg
ICAgICAgICAgV3JvbmdUYWdUeXBlLAorICAgICAgICAgICAgTm9Db25uZWN0aW9ucywKKyAgICAg
ICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICAgICAgfTsKKworICAgICAgICBFcnJvciBlcnJv
ciB7IEVycm9yOjpTdWNjZXNzIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNl
NjQ7CisgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdzIHsgZmFsc2UgfTsKKyAgICB9OworCiAgICAg
Ym9vbCBzaWxlbnRGYWlsdXJlIHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxMb2NhbD4gbG9jYWw7
CiAgICAgT3B0aW9uYWw8SGlkPiBoaWQ7CisgICAgT3B0aW9uYWw8TmZjPiBuZmM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKaW5kZXggYTAxNTVlZDFiZjYyMGY4MGE4YzRlODg2NjU1MWRjNDg2MzE0MGM2ZS4uMGY5OTMz
MzQ5OGIyYzczMDVjMzMxYTE1OGYyMWE0MWRhNDkwOWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDdGFwQXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRI
TikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJD
dGFwRHJpdmVyLmgiCiAjaW5jbHVkZSAiQ3RhcEhpZERyaXZlci5oIgpAQCAtMTE1LDQgKzExNSw0
IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSgpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFD
KQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50
aWNhdG9yLmgKaW5kZXggMzFlODg4ODc1YTU2ZmVmOGUwOTA4MThhMTg2YzU3MTMzNTAzY2YzYi4u
YTE4ZGYwNDk0YTk3N2U5OTA1ZDRmZTNkZTYwODI4NmNlNDc3YjA3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oPgpAQCAtNTgsNCArNTgsNCBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
ICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZj
RHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcE5mY0RyaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5ODYzOTM2Yzk0YTJlNGE3ZjAyZjk2
YTZkZDU4YTQ2ZjQ3MjkxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKQEAgLTAsMCArMSw5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDdGFwTmZj
RHJpdmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSA8V2ViQ29yZS9B
cGR1Q29tbWFuZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXBkdVJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
YXBkdTsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCitDdGFwTmZjRHJpdmVyOjpDdGFwTmZjRHJp
dmVyKFVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgOiBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKK3sKK30KKworLy8gRklYTUUoMjAwOTM0KQordm9p
ZCBDdGFwTmZjRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25z
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gRm9yIENUQVAyLCBjb21tYW5kcyBmb2xs
b3c6CisgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0y
MDE5MDEzMC9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAx
OTAxMzAuaHRtbCNuZmMtY29tbWFuZC1mcmFtaW5nCisgICAgaWYgKHByb3RvY29sKCkgPT0gUHJv
dG9jb2xWZXJzaW9uOjprQ3RhcCkgeworICAgICAgICBBcGR1Q29tbWFuZCBjb21tYW5kOworICAg
ICAgICBjb21tYW5kLnNldENsYSgweDgwKTsKKyAgICAgICAgY29tbWFuZC5zZXRJbnMoMHgxMCk7
CisgICAgICAgIGNvbW1hbmQuc2V0RGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgY29tbWFu
ZC5zZXRSZXNwb25zZUxlbmd0aChBcGR1Q29tbWFuZDo6a0FwZHVNYXhSZXNwb25zZUxlbmd0aCk7
CisKKyAgICAgICAgYXV0byBhcGR1UmVzcG9uc2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0ZUZyb21N
ZXNzYWdlKG1fY29ubmVjdGlvbi0+dHJhbnNhY3QoY29tbWFuZC5nZXRFbmNvZGVkQ29tbWFuZCgp
KSk7CisgICAgICAgIGlmICghYXBkdVJlc3BvbnNlKSB7CisgICAgICAgICAgICByZXNwb25kQXN5
bmMoV1RGTW92ZShjYWxsYmFjayksIHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25zZS0+c3RhdHVzKCkgPT0gQXBkdVJlc3BvbnNlOjpT
dGF0dXM6OlNXX0lOU19OT1RfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICAvLyBSZXR1cm4ga0N0
YXAxRXJySW52YWxpZENvbW1hbmQgaW5zdGVhZCBvZiBhbiBlbXB0eSByZXNwb25zZSB0byBzaWdu
YWwgRmlkb1NlcnZpY2UgdG8gY3JlYXRlIGEgVTJGIGF1dGhlbnRpY2F0b3IKKyAgICAgICAgICAg
IC8vIGZvciB0aGUgZ2V0SW5mbyBzdGFnZS4KKyAgICAgICAgICAgIHJlc3BvbmRBc3luYyhXVEZN
b3ZlKGNhbGxiYWNrKSwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VD
b2RlOjprQ3RhcDFFcnJJbnZhbGlkQ29tbWFuZCkgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGFwZHVSZXNwb25zZS0+c3RhdHVzKCkgIT0gQXBkdVJlc3Bv
bnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SKSB7CisgICAgICAgICAgICByZXNwb25kQXN5bmMoV1RG
TW92ZShjYWxsYmFjayksIHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgLy8gRklYTUU6IFNvbWVob3cgZWxtaW5pYXRlIHRoZSBuZWVkIGZvciB0aGUgY29weT8K
KyAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCAoVmVjdG9yPHVpbnQ4X3Q+
KGFwZHVSZXNwb25zZS0+ZGF0YSgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gRm9yIFUyRiwgVTJmQXV0aGVudGljYXRvciB3b3VsZCBoYW5kbGUgdGhlIEFQRFUgZW5jb2Rp
bmcuCisgICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJmLXYxLjIt
cHMtMjAxNzA0MTEvZmlkby11MmYtbmZjLXByb3RvY29sLXYxLjItcHMtMjAxNzA0MTEuaHRtbCNm
cmFtaW5nCisgICAgY2FsbGJhY2sobV9jb25uZWN0aW9uLT50cmFuc2FjdChXVEZNb3ZlKGRhdGEp
KSk7Cit9CisKKy8vIFJldHVybiB0aGUgcmVzcG9uc2UgYXN5bmMgdG8gbWF0Y2ggdGhlIEhJRCBi
ZWhhdmlvdXIsIHN1Y2ggdGhhdCBuZmMgY291bGQgZml0IGludG8gdGhlIGN1cnJlbnQgaW5mcmEu
Cit2b2lkIEN0YXBOZmNEcml2ZXI6OnJlc3BvbmRBc3luYyhSZXNwb25zZUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKSBjb25zdAoreworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVzcG9uc2UpKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ZDAzYTgwMTA4MzBlNTQ2MjdhZTFkOWYxNDVhMDYzZGViYjdkOTVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwTmZjRHJpdmVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIK
KyNpbmNsdWRlICJOZmNDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIHRoZSBD
VEFQIE5GQyBwcm90b2NvbDoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRv
LXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12
Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjCitjbGFzcyBDdGFwTmZjRHJpdmVyIDogcHVibGljIEN0
YXBEcml2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEN0YXBOZmNEcml2ZXIoVW5pcXVlUmVm
PE5mY0Nvbm5lY3Rpb24+JiYpOworCisgICAgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQg
cmVzcG9uZEFzeW5jKFJlc3BvbnNlQ2FsbGJhY2smJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9u
c2UpIGNvbnN0OworCisgICAgVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vRmlkb1NlcnZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE4OWQ3Y2Y4Y2RjMzkx
NDNiNTNiZTk5ZTZlZDhiOGUwZTI4OGM1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCkBAIC0w
LDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Rmlkb1NlcnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJDdGFw
QXV0aGVudGljYXRvci5oIgorI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIKKyNpbmNsdWRlICJVMmZB
dXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1l
c3NhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitGaWRvU2VydmljZTo6Rmlkb1NlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQorICAgIDog
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCit7Cit9CisKK3ZvaWQgRmlk
b1NlcnZpY2U6OmdldEluZm8oc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQor
eworICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgorICAgIGRy
aXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVz
dENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkg
eworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVBZnRl
ckdldEluZm8ocHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgfSk7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7CisgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBGaWRvU2Vydmlj
ZTo6Y29udGludWVBZnRlckdldEluZm8oQ3RhcERyaXZlciogcHRyLCBWZWN0b3I8dWludDhfdD4m
JiByZXNwb25zZSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4gZHJpdmVyID0g
bV9kcml2ZXJzLnRha2UocHRyKTsKKyAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSB8fCBy
ZXNwb25zZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW5mbyA9IHJl
YWRDVEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBpZiAoaW5mbyAmJiBpbmZvLT52
ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCkgIT0gaW5mby0+dmVyc2lvbnMo
KS5lbmQoKSkgeworICAgICAgICBvYnNlcnZlcigpLT5hdXRoZW50aWNhdG9yQWRkZWQoQ3RhcEF1
dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlciksIFdURk1vdmUoKmluZm8pKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSBhIGN0
YXAgZ2V0IGluZm8gcmVzcG9uc2UuIik7CisgICAgZHJpdmVyLT5zZXRQcm90b2NvbChQcm90b2Nv
bFZlcnNpb246OmtVMmYpOworICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChVMmZB
dXRoZW50aWNhdG9yOjpjcmVhdGUoV1RGTW92ZShkcml2ZXIpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1Nl
cnZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGMzZDhkYjdkOTM5ZTA0M2E1ZGU5ZjNjOTg1Mzc2ZjU3OGVl
MDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9GaWRvU2VydmljZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBDdGFwRHJpdmVyOworCitjbGFzcyBGaWRvU2VydmljZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9y
VHJhbnNwb3J0U2VydmljZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRmlkb1NlcnZpY2UoT2Jz
ZXJ2ZXImKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZ2V0SW5mbyhzdGQ6OnVuaXF1ZV9wdHI8
Q3RhcERyaXZlcj4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb250aW51ZUFmdGVyR2V0SW5m
byhDdGFwRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIGluZm8pOworCisgICAgLy8gS2Vl
cGluZyBkcml2ZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgZ2V0dGluZyBpbmZvIGZyb20gZGV2aWNl
cy4KKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPj4gbV9kcml2ZXJzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXggYTU4NTY3MmZkMmM5
YzMxY2VlYzQzNjE2ZmM3MDU3ODU1NzVhYTU3Ny4uNGQxMmE5NjVkN2YwMTlhM2E1M2I5ZmQyNmVj
NmNhM2ZlMjY0YjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVTJmQXV0aGVu
dGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KQEAgLTIzOCw0ICsyMzgsNCBAQCB2b2lkIFUyZkF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJl
c3BvbnNlJiYgYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAppbmRleCA5YTQ3NzM2ODZmNjA3YzBiYTQw
ZGNjYzdmNWRmODExMDVjNTU1OTljLi5kOTA1NWNkMDU5MDE0MTVhYWQ1M2QyMTllYTEzZjljZWY0
NjdhOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JN
KE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03OSw0ICs3OSw0IEBAIHByaXZhdGU6CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYg
UExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAzMWI3ZDgzMGQzMDdm
YWQ4NWMyNmQ1OGMwZWY2YTcyYjIzNTg5MzJmLi4yODMwMzhkMzRlZTM4NzRkYzQ2Mzk5NjAxY2Iw
OTQ5Yjc2N2NhZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckRhdGEuaCIK
KyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oIgogI2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2lt
cG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA0YTE4YzM0YmZl
MmE5YWFiOTJlYWUwNmI4NzJlNDliYWE5NDg2NzkuLmVlYjAwNjYwMTczYzQ5N2NkMWEyZTU1MDc4
YjkxOGY4MWYxYWZmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTAzNSw2ICsxMDM1LDEwIEBACiAJCTUzQkE0N0QxMURDMkVGNUUw
MDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29y
a0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0NGQkJDODIyMjREMUI1MDAyNjY1NDYgLyogVGV4
dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0NGQkJDNzIyMjREMUIwMDAyNjY1NDYgLyogVGV4dENoZWNrZXJDb21wbGV0
aW9uLmggKi87IH07CiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBB
QjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9OworCQk1NzBE
QUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQUMyMzAyNkY1QzAwRThGQzA0IC8qIE5m
Y1NlcnZpY2UuaCAqLzsgfTsKKwkJNTcwREFBQzIyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MERBQUMwMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggKi87IH07CisJCTU3MERB
QUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDNDIzMDM3RjdF
MDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oICovOyB9OworCQk1NzBEQUFD
QTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzgyMzAzODVGRDAwRThGQzA0IC8qIEN0
YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0NDMyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZp
ZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRN
b3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9OwogCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQg
LyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsg
fTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VCQjIxODE4
NDhGMDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRpY2F0b3IuaCAqLzsgfTsKQEAgLTEwNDMsNiArMTA0
NywxMSBAQAogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5r
LmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0FDOEY0RTIx
N0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0I0QjQ2MDIwQjUw
NEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNEI0
NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUEND
b25zdGFudHMuaCAqLzsgfTsKKwkJNTdCODI2NDEyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVs
ZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdC
ODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovOyB9OworCQk1N0I4MjY0
NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAv
KiBOZWFyRmllbGRTb2Z0TGluay5oICovOyB9OworCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExp
bmsubW0gKi87IH07CisJCTU3QjgyNjQ4MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDYy
MzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi87IH07CisJCTU3QjgyNjRDMjMwNjAz
QzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNT
ZXJ2aWNlLmggKi87IH07CiAJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeS5oICovOyB9OwogCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyogV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZCMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1N0RD
RUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENF
RDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdl
cy5oICovOyB9OwpAQCAtMzQ3Myw2ICszNDgyLDE1IEBACiAJCTU3MEFCOTAwMjBCMjUxNzQwMEI4
QkU4NyAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4QkU4NyAvKiBTZWNLZXlQ
cm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Vj
S2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwQjczQ0Yy
MzAyMzZERDAwRkFFQzUzIC8qIEN0YXBEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3RhcERyaXZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFBQzIzMDI2RjVDMDBFOEZD
MDQgLyogTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZmNTZXJ2aWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2
aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmZjU2VydmljZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQjAyMzAyNzNEMjAwRThGQzA0IC8qIE5lYXJGaWVsZC5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE5lYXJGaWVsZC5mcmFtZXdvcms7IHBhdGggPSBT
eXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9OZWFyRmllbGQuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmZjQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5mY0Nvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzUyMzAzN0Y3RTAwRThG
QzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzUwNzVBNzIwQUI3NjM2MDA2OTNFQTkgLyogV2Vi
Q3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWxNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0
NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTG9j
YWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKQEAgLTM0OTcsNiArMzUxNSwxMyBAQAogCQk1N0FDOEY0RjIxN0ZFRUQ5MDA1NTQzOEMgLyog
SGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZENvbm5lY3Rpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBCNTA0QUIwMEQ0QUQ3OSAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xpZW50Q2Vy
dGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVC
MCAvKiBOZWFyRmllbGRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmVhckZpZWxkU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFy
RmllbGRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZWFyRmllbGRTb2Z0TGluay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVh
ckZpZWxkU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZWFyRmllbGRTb2Z0TGlu
ay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDYyMzA1MEM1MTAwQjcy
RUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpZG9TZXJ2aWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRv
U2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvU2VydmljZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjRBMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZj
U2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTmZjU2VydmljZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZp
Y2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrTmZjU2VydmljZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCQkVBNkMyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9y
aXphdGlvbkxvYWRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRUQ2QTIxNDJFQUUyMDAx
NkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
NTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNjE5Myw2
ICs2MjE4LDcgQEAKIAkJCQlBMUZCNjgyNjFGNkU1MUMxMDBDNDNGOUYgLyogQ3Jhc2hSZXBvcnRl
ckNsaWVudFNQSS5oICovLAogCQkJCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBEZXZpY2VJ
ZGVudGl0eVNQSS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAvKiBEZXZpY2VN
YW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJG
aWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0MUIzQTI5RkQwMDNBNEM3RiAvKiBOU0ludm9jYXRp
b25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFENjREQjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oICov
LAogCQkJCTBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLywK
QEAgLTY5NTksNiArNjk4NSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayAqLywKKwkJCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyogTmVhckZpZWxkLmZy
YW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC02OTcxLDYgKzY5OTgsMTAgQEAKIAkJCQk1NzBCNzNDRjIzMDIzNkRE
MDBGQUVDNTMgLyogQ3RhcERyaXZlci5oICovLAogCQkJCTU3NTk3RUMwMjE4MThCRTIwMDM3Rjky
NCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLywKIAkJCQk1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQg
LyogQ3RhcEhpZERyaXZlci5oICovLAorCQkJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBD
dGFwTmZjRHJpdmVyLmNwcCAqLywKKwkJCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3Rh
cE5mY0RyaXZlci5oICovLAorCQkJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2Vy
dmljZS5jcHAgKi8sCisJCQkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNl
LmggKi8sCiAJCQkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRpY2F0b3Iu
Y3BwICovLAogCQkJCTU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50aWNhdG9y
LmggKi8sCiAJCQkpOwpAQCAtNzAzMiw2ICs3MDYzLDE0IEBACiAJCQkJNTdEQ0VEQTgyMTRBNTY4
QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1N0RDRUQ5QTIxNDhCMDgz
MDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggKi8sCiAJCQkJNTdEQ0VEQTAyMTQ4RkEwRjAwMTZC
ODQ3IC8qIExvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1N0I4MjY0MjIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsuaCAqLywKKwkJCQk1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsubW0gKi8sCisJCQkJNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0
IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZDMDQgLyog
TmZjQ29ubmVjdGlvbi5tbSAqLywKKwkJCQk1NzBEQUFBQzIzMDI2RjVDMDBFOEZDMDQgLyogTmZj
U2VydmljZS5oICovLAorCQkJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNl
Lm1tICovLAorCQkJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lv
bkRlbGVnYXRlLmggKi8sCisJCQkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFk
ZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcwNDksNiArNzA4OCw4IEBACiAJCQkJNTdEQ0VEQzYy
MTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8sCiAJCQkJNTdEQ0VE
QzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLywKIAkJCQk1N0RDRURD
MjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1N0I4MjY0
QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLywKKwkJCQk1N0I4MjY0QjIz
MDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UubW0gKi8sCiAJCQkJNTdEQ0VEQkUyMTRD
QTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gTW9jazsKQEAgLTkzNTUsNiArOTM5Niw3IEBACiAJCQkJQTFGQjY4
MjcxRjZFNTFDMTAwQzQzRjlGIC8qIENyYXNoUmVwb3J0ZXJDbGllbnRTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWRE
cml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBD
dGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5
MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAx
ODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTkz
ODYsNiArOTQyOCw3IEBACiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9u
bWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIxNDk2QjUyNjAwQTRF
RTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NDgyMzA1
MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEI5NjYx
QTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5
MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDc0LDYgKzk1MTcsNyBAQAogCQkJCTU3RENFRENCMjE0
RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2Fs
U2VydmljZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8q
IE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURCRjIxNEYwRENGMDAx
NkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDYgKzk1MjUsOCBAQAogCQkJCTFBRENCODZCMTg5
ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdGRDMxODAyMkIzNTE1ODAwOEQwRThCIC8qIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUJDM0RGNjE4OTlFNDM3MDA0RjA2MjYgLyog
TmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0I4MjY0NDIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3QjgyNjQx
MjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NkZCQTJBMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE2RkJEMjgxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTUyNiw2ICs5NTcyLDggQEAKIAkJCQk1
QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVCOTIyNTcwNDZGMDBENkY5N0UgLyogTmV0d29ya1Nv
Y2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUMyMjMwMzczMDMwMEU4RkMw
NCAvKiBOZmNDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQUFBRTIzMDI2RjVD
MDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNTYxNDg5
OUMwOTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTMxMjYxRjE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM1MjE0ODk5ODE5
MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBp
biBIZWFkZXJzICovLApAQCAtMTAxNTQsNiArMTAyMDIsNyBAQAogCQkJCTFBMUIwRUI4MThBNDI0
Q0QwMDM4NDgxQSAvKiBXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUExMzIxMjE5MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNBNjVERjFBN0MzQTdEMDBDQUM2MzcgLyog
V0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUM2MjMw
MzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgxMEQ3MSAv
KiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEx
MTM4LDYgKzExMTg3LDcgQEAKIAkJCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2Fn
ZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgyMjEyQjZBNzEwMEY0
OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdBMjEy
QjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdCODI2NDUy
MzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MTM0NDMyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAwMDEyOEFGRCAvKiBOZXRzY2FwZVBs
dWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5NjIxMkI2QURBMDBGNDkzRkQgLyog
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTY2N2M4NmIyYzQ1NzBlMjBlNDdm
Y2M1NDUzNGUzN2QwYTc1Mjk1Zi4uYTQ0Yzk4NGRlNjU2MjI4MjRkMGI0YmQzMTg4NmJiOGQwZjI4
M2MwMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBm
b3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgIFNldHVwIE5GQyBt
b2NrIHRlc3RpbmcgY29uZmlndXJhdGlvbi4KKwogMjAxOS0wOC0yMCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVzdWx0cy53ZWJraXQub3JnOiBBZGQg
VG9vbFRpcHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IGZhMWJjMWRkYmI3MTZmN2IzN2JkMDc3N2RhMDAxNmRiZTJl
YmIwNGMuLjA5ZGI1MWZkODE2MjFhODViMDZlOGY4MzMwMzQwZGI1Nzg3ZjA4YTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cApAQCAtMjcxNiw2ICsyNzE2LDcxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3VyYXRpb25WCiAgICAgICAg
IGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJh
d0hpZEtleXMuZGF0YSgpLCByYXdIaWRWYWx1ZXMuZGF0YSgpLCByYXdIaWRLZXlzLnNpemUoKSkp
KTsKICAgICB9CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbmZjUHJvcGVydHlOYW1l
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmZjIikpOworICAgIEpTVmFs
dWVSZWYgbmZjVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbmZpZ3VyYXRp
b24sIG5mY1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmlu
ZWQoY29udGV4dCwgbmZjVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIG5mY1ZhbHVl
KSkgeworICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTT2JqZWN0UmVmIG5mYyA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBuZmNWYWx1ZSwgMCk7CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGVycm9yUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZXJyb3IiKSk7CisgICAgICAgIEpTVmFsdWVSZWYgZXJyb3JWYWx1ZSA9IEpTT2JqZWN0
R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBlcnJvclByb3BlcnR5TmFtZS5nZXQoKSwgMCk7Cisg
ICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGVycm9yVmFsdWUpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+
IG5mY0tleXM7CisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiBuZmNWYWx1
ZXM7CisgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkVycm9yIikpKTsKKyAgICAgICAgbmZjVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0
KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXJyb3JWYWx1ZSwgMCkpLmdldCgpKSk7CisK
KyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5h
bWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwYXlsb2FkQmFzZTY0Iikp
OworICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgbmZjLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsK
KyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZh
bHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKSB7Cisg
ICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBKU09iamVjdFJlZiBw
YXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1
ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5ndGhQcm9wZXJ0eSA9IGFk
b3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVy
dHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHkuZ2V0KCksIG51bGxwdHIp
OworICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2
NExlbmd0aFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1
dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworICAg
ICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlLCBudWxscHRy
KSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRCYXNlNjRMZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgaSwg
bnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwg
cGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2NHMuZ2V0KCksIHRvV0so
YWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIDAp
KS5nZXQoKSkuZ2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBuZmNLZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0
IikpKTsKKyAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQocGF5bG9hZEJhc2U2NHMpOworICAg
ICAgICB9CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG11bHRpcGxlVGFnc1By
b3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm11bHRpcGxl
VGFncyIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBtdWx0aXBsZVRhZ3NWYWx1ZSA9IEpTT2JqZWN0
R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBtdWx0aXBsZVRhZ3NQcm9wZXJ0eU5hbWUuZ2V0KCks
IDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBtdWx0aXBsZVRh
Z3NWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbXVsdGlwbGVUYWdzVmFsdWUpKSB7
CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgbXVsdGlwbGVUYWdz
VmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgbXVsdGlw
bGVUYWdzID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSk7Cisg
ICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkpOworICAgICAgICAgICAgbmZjVmFsdWVzLmFwcGVuZChh
ZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtdWx0aXBsZVRhZ3MpKS5nZXQoKSk7CisgICAgICAgIH0K
KworICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd05mY0tleXM7CisgICAgICAgIFZlY3Rv
cjxXS1R5cGVSZWY+IHJhd05mY1ZhbHVlczsKKyAgICAgICAgcmF3TmZjS2V5cy5yZXNpemUobmZj
S2V5cy5zaXplKCkpOworICAgICAgICByYXdOZmNWYWx1ZXMucmVzaXplKG5mY1ZhbHVlcy5zaXpl
KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5mY0tleXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIHJhd05mY0tleXNbaV0gPSBuZmNLZXlzW2ldLmdldCgpOworICAgICAg
ICAgICAgcmF3TmZjVmFsdWVzW2ldID0gbmZjVmFsdWVzW2ldLmdldCgpOworICAgICAgICB9CisK
KyAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIk5mYyIpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBw
ZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd05mY0tleXMuZGF0YSgpLCByYXdOZmNW
YWx1ZXMuZGF0YSgpLCByYXdOZmNLZXlzLnNpemUoKSkpKTsKKyAgICB9CisKICAgICBWZWN0b3I8
V0tTdHJpbmdSZWY+IHJhd0NvbmZpZ3VyYXRpb25LZXlzOwogICAgIFZlY3RvcjxXS1R5cGVSZWY+
IHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXM7CiAgICAgcmF3Q29uZmlndXJhdGlvbktleXMucmVzaXpl
KGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDY5YTRlYjM2MWY3Y2I0OWJjZDFj
ODYxZjJmYWIzNjBiYzIzYTI4OS4uNmQ1NmYzZDg0ZjdlMWUzYWNlMDA4Mjk0NjQ1MTc2NGQ2Njdj
ZDQyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRo
ZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSAibG9j
YWwiIGtleXdvcmQgd2l0aCAiaGlkIi4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZj
Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAxOS0w
OC0yMCAgUnVzc2VsbCBFcHN0ZWluICA8cmVwc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVw
ZGF0aW5nIEV4cGVjdGF0aW9ucyBmb3IgTXVsdGlwbGUgTmV3bHkgUGFzc2luZyBUZXN0cy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1u
ZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQwNWIzY2RjMjM3MDI0
N2U2ZWM4MDhhYWM0NTQwNTA2ODczN2VmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorCitQQVNTIENUQVAgTkZDIHdpdGggZW1wdHkgYXBkdSByZXNwb25zZSBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBDVEFQIE5GQyB3aXRoIHdyb25nIGRh
dGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVjMGIxYjhhZTQ2ODg3ZjVmYmE1YjEzM2I4ODJmNGU2NDlkOGFkMjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1m
YWlsdXJlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0
bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogQ1RBUCBORkMgZmFpbHVyZSBjYXNlcyB3aXRoIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHsKKyAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBp
ZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiSm9obiIsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2Np
aVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICB0aW1lb3V0OiAx
MAorICAgICAgICB9CisgICAgfTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsICIi
XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiQ1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJlc3Bv
bnNlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZl
cnNpb25CYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRp
bWVkIG91dC4iKTsKKyAgICB9LCAiQ1RBUCBORkMgd2l0aCB3cm9uZyBkYXRhIGVycm9yIGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNzI1MDk4YWY3MzUyMDFhMWE3ODcyNjFlMDA5YjFlYmVlZWZjNzJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCB0aW1lb3V0IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm8gdGFncyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRp
Y2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25n
IHRhZyB0eXBlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBudWxsIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9uZyB2ZXJzaW9uIGluIGEgbW9jayBu
ZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODI0ODU3MzNjNWFmMzcy
MzgzMjFiNmYyNGIyMjAzNGRmZWQ0YjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5m
Yy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5X
ZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBm
YWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1
bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlmIHRoZXkg
bmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IG5mYzogeyBlcnJvcjogIm5vLXRhZ3MiIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAg
ICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAg
ICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03
IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwLAorICAgICAgICAgICAgICAgIGF1dGhl
bnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJwbGF0Zm9ybSIg
fQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0
b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4i
LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBubyB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAg
dGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9u
ZyB0YWcgdHlwZSBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAor
ICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZj
OiB7IGVycm9yOiAibm8tY29ubmVjdGlvbnMiIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNy
ZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAg
ICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgcGF5bG9hZEJhc2U2NDogWyBdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbnVsbCB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAg
dGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwor
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNp
b24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRw
cy1leHBlY3RlZC50eHQKaW5kZXggMzEyZGU5MzBlNGRiNjYwMTI3Mzc3Zjk2OGNlYWNmODBlNTFh
ZGZhNi4uODA3MjUxZjg2OTVkYjgxMmNlNDY3NDc1MjlhZjQxODA3YjczYWFhMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIAotUEFTUyBQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfSBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
dXNlclZlcmlmaWNhdGlvbiB7ICdwcmVmZXJyZWQnIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJW
ZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9w
dGlvbnMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZl
cmlmaWNhdGlvbiB7ICdwcmVmZXJyZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAK
K1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0
aW9uIHsgJ2Rpc2NvdXJhZ2VkJyB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cy4gCi1QQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAK
LVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRl
c3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIGRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0
aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCBhMTQ3ZWYz
N2Q1MzkzZGViOTY5ODY1ZjQwYjFlZWM3NWU5NWM3YTViLi4zZTZhZjFhOTYyNzEzZDA3ZGQ2N2Vj
YmJlOTdhNjhkNzYwMzMzNDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAg
fSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11
bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CiAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNl
bGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRo
ZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAg
ICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlcXVpcmVSZXNpZGVudEtleSB7IGZh
bHNlIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2Ug
fSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAg
ICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2Vy
VmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2Vy
VmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CkBAIC0xNTYsNyArMTU2LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGNoZWNr
UmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ2Rpc2NvdXJhZ2VkJyB9
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQn
IH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KHQg
PT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAg
ICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAg
ICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4
ZWQgb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTIyNSw3ICsyMjUsNyBAQAogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
ewogICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRp
b24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7Ci0g
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVz
dGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0yNzEsNSArMjcxLDUgQEAKICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAg
fSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJl
Y3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRp
b24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNWU4MzEyZTAyZjNiYmY5NThhMjhiNDM3MWRlZGJl
ZTMwNWYzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JT
ZWxlY3Rpb24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9y
LiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtdWx0aXBsZSB0
YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggVTJGIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0
cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45Y2E0ZDFiZThiN2NmYzk2NTEyMWYzY2YxODQ3NjBiMDI1Mjk0
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC0wLDAg
KzEsMTU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJ
OiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBzdWNjZXNzIGNhc2VzIHdpdGggYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvY2Jvci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVk
IHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBk
dUJhc2U2NCwgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisKKyAgICBmdW5j
dGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgcmVz
cG9uc2UKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVu
dGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQp
LCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVu
dERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpO
RFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2Vy
dF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBw
aWQiKTsKKworICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgICAgICBjb25zdCBhdHRl
c3RhdGlvbk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRp
b25PYmplY3QpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwg
Im5vbmUiKTsKKworICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRo
RGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ2
Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1ODBmMGI0ODEyYzc3MDk2MmUxZTQ4
ZjVhZDgiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDc4KTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGF1dGhE
YXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNl
NjQpKTsKKyAgICAgICAgLy8gQ2hlY2sgbm9uZSBhdHRlc3RhdGlvbgorICAgICAgICBhc3NlcnRf
dHJ1ZShjaGVja1B1YmxpY0tleShhdXRoRGF0YS5wdWJsaWNLZXkpKTsKKyAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdCwgeyB9KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja1UyZlJlc3VsdChjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAg
Ly8gQ2hlY2sgcmVzcG9uc2UKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwu
cGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElk
QmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGlj
LWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRl
bnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJl
c3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxs
ZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7Cisg
ICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVz
dWx0cygpLCAiYXBwaWQiKTsKKworICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgICAg
ICBjb25zdCBhdHRlc3RhdGlvbk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9u
c2UuYXR0ZXN0YXRpb25PYmplY3QpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9u
T2JqZWN0LmZtdCwgIm5vbmUiKTsKKworICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAg
ICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhE
YXRhKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJw
SWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJj
Nzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFn
cywgNjUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDApOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElELCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRl
bnRpYWxJZEJhc2U2NCkpOworICAgICAgICAvLyBDaGVjayBub25lIGF0dGVzdGF0aW9uCisgICAg
ICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0p
OworICAgIH0KKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRl
c3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdl
OiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3Jl
ZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAg
ICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBv
cHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJs
b2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUy
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb246
IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJjcm9zcy1wbGF0Zm9ybSIgfSwKKyAgICAgICAg
ICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAg
IH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhl
bnRpY2F0b3JTZWxlY3Rpb24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIG5mYyBhdXRo
ZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJL
ZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAg
ICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVz
cG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0sIG11bHRpcGxl
VGFnczogdHJ1ZSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIG11bHRpcGxlIHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNh
dG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2hu
IEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFw
cGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6
IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVk
UGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBw
b3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwor
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tVMmZSZXN1bHQoY3JlZGVudGlhbCk7
CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA4YTA0ODQ0MmE4NDBlMGQxZDkzNDk3NmE5NzM2YTk5
NzkxMDAyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggdGltZW91dCBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGI2NDg3NGZmZjVkODFmZTdiNjE0NDM5ZjcyNjI5YTk5ZDAwMjUxMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAg
IC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlm
IHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWworICAg
ICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAg
ICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJibGUiXSB9LAorICAg
ICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZj
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjY4YjlmZDhlNTZmZDQ2MGFlYTFjNzA4
YWFhYTBiY2U3MGEwZTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAK
K1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBVMkYgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLW5mYy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MmJjZGNiZjc3ODhlMTVhNmMxMWE5
MzUxMTM1Y2NiZTFmOWYzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0
bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRp
Y2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gc3VjY2VzcyBjYXNlcyB3
aXRoIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2Vz
L3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmln
dXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNv
bmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6
ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVz
dEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2
NF0gfSB9KTsKKworICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpCisgICAgewor
ICAgICAgICAvLyBDaGVjayByZXNwb25kCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFz
ZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRl
bnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwg
J3B1YmxpYy1rZXknKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJh
eShjcmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRC
YXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVu
dGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJj
aGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwg
bnVsbCk7CisgICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0
ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQor
ICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNy
ZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1
YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1ODBmMGI0ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgMSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoYXV0aERhdGEuY291bnRlciwgODApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNr
VTJmUmVzdWx0KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25kCisg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQp
LCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0
VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNP
TiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdp
biI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNy
ZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9ub3Rf
ZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsK
KworICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRl
Y29kZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGlj
YXRvckRhdGEpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhE
YXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlh
Mjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0
YS5mbGFncywgMSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkp
OworICAgIH0KKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6
IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBh
IG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAg
ICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAg
ICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RT
dXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7Cisg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZSZXN1bHQoY3JlZGVudGlh
bCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3
aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5kZXggOTg3
ZDA3MjE5ZDRlNDc3MDc0Yzk4ZjQyYzE1YjE4NTNjNzNhYzYxMi4uYjBjMjIzOTI0NDBhMGI1OGQ4
OGI5YWFjOTU1NzllNmVkOTU5NmM4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTk5LDYgKzk5LDQwIEBAIGNvbnN0IHRlc3RVMmZT
aWduUmVzcG9uc2UgPQogICAgICJmNFY0TGVFQWhxZUQwZWZmVGpZNTUzSDE5cStqV3ExVGM0V09r
QUE9IjsKIGNvbnN0IHRlc3RDdGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFz
ZTY0ID0gIkdRPT0iOwogY29uc3QgdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNl
QmFzZTY0ID0gIklnPT0iOworY29uc3QgdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQgPSAiVlRKR1gx
WXlrQUE9IjsKK2NvbnN0IHRlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCA9ICJSa2xFVDE4eVh6Q1FB
QT09IjsKK2NvbnN0IHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0ID0KKyAgICAiQUtZQmdt
WlZNa1pmVmpKb1JrbEVUMTh5WHpBQ2dXdG9iV0ZqTFhObFkzSmxkQU5RYlVTNm0vYnNMa201TUF5
UCIgKworICAgICI2U0RMY3dTa1luSnI5V0oxY1BWa2NHeGhkUFJwWTJ4cFpXNTBVR2x1OUFVWkJM
QUdnUUdRQUE9PSI7Citjb25zdCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NCA9CisgICAg
IkFLTUJabkJoWTJ0bFpBSll4RWJNZjdsbm5WV3kyNUNTNGNqWjVlSFFLM1dBOExTQkxIY0pZdUhr
ajFyWVFRQUEiICsKKyAgICAiQUU3NG9CSHpqQXBORllBR0Z4RWZudHg5QUVBb0NLM082UDVPeVhO
NlYvZis5bkFnYTBOQTJDZ3A0VjNtZ1NKNSIgKworICAgICJqT0hMTURybXhwL1MwcmJEK2FpaHJ1
MUMwYUFOM0JraU02R055NW5TbERWcU9nVGdwUUVDQXlZZ0FTRllJRUZiIiArCisgICAgImhlM1Jr
TnVkNnNneXJhQkdqbGgxcHpUbENaZWhRbEwvYjE4SFo2V0dJbGdnSmdmVWQvZW45cDVBSXFNUWJV
bmkiICsKKyAgICAibkVlWGRGTGt2VzAvelY1QnBFampOeEFEbzJOaGJHY21ZM05wWjFoSE1FVUNJ
UURLZytaQm1FQnRmMGxXcTRSZSIgKworICAgICJkSDQvaS9MT1lxT1I0dVIyTkFqMnpRbXc5UUln
YlRYYjRodkZiajRUMjdidi9yR3JjK3krMHB1b1lPQmtCazlQIiArCisgICAgIm1DZXdXbE5qZURW
amdWa0N3akNDQXI0d2dnR21vQU1DQVFJQ0JIU0cvY0l3RFFZSktvWklodmNOQVFFTEJRQXciICsK
KyAgICAiTGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNB
ME5UY3lNREEyTXpFdyIgKworICAgICJJQmNOTVRRd09EQXhNREF3TURBd1doZ1BNakExTURBNU1E
UXdNREF3TURCYU1HOHhDekFKQmdOVkJBWVRBbE5GIiArCisgICAgIk1SSXdFQVlEVlFRS0RBbFpk
V0pwWTI4Z1FVSXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjAiICsKKyAgICAi
WlhOMFlYUnBiMjR4S0RBbUJnTlZCQU1NSDFsMVltbGpieUJWTWtZZ1JVVWdVMlZ5YVdGc0lERTVO
VFV3TURNNCIgKworICAgICJOREl3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNW
WGZPdDl5UjlNWFh2L1p6RTh4cE9oNDY2IiArCisgICAgIjRZRUpWbUZRK3ppTExsOWxKNzlYUUpx
bGdhVU5Dc1V2R0VSY0NoTlVpaE5UeUtUbG1uQk9VanZBVGV2dG8yd3ciICsKKyAgICAiYWpBaUJn
a3JCZ0VFQVlMRUNnSUVGVEV1TXk0MkxqRXVOQzR4TGpReE5EZ3lMakV1TVRBVEJnc3JCZ0VFQVlM
bCIgKworICAgICJIQUlCQVFRRUF3SUZJREFoQmdzckJnRUVBWUxsSEFFQkJBUVNCQkQ0b0JIempB
cE5GWUFHRnhFZm50eDlNQXdHIiArCisgICAgIkExVWRFd0VCL3dRQ01BQXdEUVlKS29aSWh2Y05B
UUVMQlFBRGdnRUJBREZjU0lEbW1sSitPR2FKdlduOUNxaHYiICsKKyAgICAiU2V1ZVRvVkZRVlZ2
cXRBTE9nQ0tIZHdCK1d4MjltZzJHcEhpTXNnUXA1eGpCMHliYm5wRzZ4MjEyRnhFU0orRyIgKwor
ICAgICJpblpEMGlwY2hpN0FQd1BsaEl2amdIMTZ6Vlg0NGE0ZTRoT3NjNnRMSU9QNzFTYU1zSHVI
Z0NjZEgwdmc1ZDJzIiArCisgICAgImMwMDZXSmU5VFhPNmZ6VitvZ2pKbllwTktRTG1DWG9BWEUz
SkJOd0tHQklPQ3ZmUURQeVdtaWlHNWJHeFlmUHQiICsKKyAgICAieThaM3BualgrMU1Ebk0yaGhy
NDB1bE14bFNORG5YL1pTbkR5TUdJYms4VE9RbWpURjAyVU84YXVQOGszd3Q1RCIgKworICAgICIx
clJPSVJVOStGQ1NYNVdRWWk2OFJ1RHJHTVpCOFA1K2J5b0pxYktRZHhuMkxtRTFvWkF5b2hQQW1M
Y29QTzZRIiArCisgICAgIkFBPT0iOworY29uc3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFz
ZTY0ID0KKyAgICAiQUtNQm9tSnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1
b0VpZVl6aHl6QTY1c2FmMHRLMiIgKworICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFEx
YWpvRTRHUjBlWEJsYW5CMVlteHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgIlo1MVZzdHVRa3VI
STJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsK
KyAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYv
NnFOczhPdXR6aFAyQyIgKworICAgICJRb0oxTDdGZTY0Rzl1QmVRQUE9PSI7CiAKIGNvbnN0IFJF
U09VUkNFU19ESVIgPSAiL1dlYktpdC93ZWJhdXRobi9yZXNvdXJjZXMvIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376904</attachid>
            <date>2019-08-21 12:21:21 -0700</date>
            <delta_ts>2019-08-21 18:12:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188624-20190821122120.patch</filename>
            <type>text/plain</type>
            <size>153989</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5YTE3ZWQ0NWI5YmM0MDBkZmI4ZGIw
ZjQ0ZDU2NjdhYzE0OTZkYzQuLjViYWIzZTQ3MzY3NzllNDYzMTNlN2UwYzcxN2Y1YWQwZTMzZDE3
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMjEgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRp
Y2F0b3JzIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDoKKyAgICAgICAgQWRkIGEgZmVhdHVyZSBmbGFnIGZvciBOZWFyRmllbGQuCisKIDIwMTktMDgt
MjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gRm9sbG93dXAgdG8gcjI0ODkwMy4gSXQncyBub3QgdmFsaWQgdG8gcmVtb3ZlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNzU2NzA4ZDY1OTc5MDg2OGMyMDgwNTVmZjU0YTY0MTZjZWIwODY4Mi4uYjM5NTQ0YmIw
ZWYyN2Q2YWFmMDE3NTNkMDg5Njg3NzI1ZjFiMWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1m
YWlsdXJlLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLW5mYy5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1u
ZmMuaHR0cHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25z
dGFudHMuaDoKKyAgICAgICAgQWRkcyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9u
LgorCiAyMDE5LTA4LTIwICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBjb21tZW50IGZvbGxvdy11cCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDc1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWVlYjViOTAxOThjYzkx
MzE2YzllOGU2ZDFjNGYzMzZiMGU0YWM5NS4uNTJhYmFiMDc5ZjdlOWMxZmZhNGY3MTVjNmQ0YWQ2
NTlhMjU3NzE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxOS0wOC0yMCAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcG9y
dCBORkMgYXV0aGVudGljYXRvcnMgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM1
NDIxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgTkZDIGF1dGhlbnRpY2F0b3JzIGluY2x1
ZGluZyBib3RoIEZJRE8yIGFuZCBVMkYgb25lcy4gSXQgdXRpbGl6ZXMgYSBwcml2YXRlCisgICAg
ICAgIGZyYW1ld29yayBjYWxsZWQgTmVhckZpZWxkIGluc3RlYWQgb2YgQ29yZU5GQyB0byBiZSBh
YmxlIHRvIHN1cHBseSBhIGN1c3RvbSBVSSBsYXRlciBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAg
VGhlIHBhdGNoIGZvbGxvd3MgYWxtb3N0IHRoZSBzYW1lIGZsb3cgYXMgcHJldmlvdXMgSElEIGFu
ZCBMb2NhbCBhdXRoZW50aWNhdG9yIHN1cHBvcnQuCisgICAgICAgIDEpIERpc2NvdmVyeSBpcyB2
aWEgTmZjU2VydmljZSB3aGljaCB3aWxsIGludm9rZSBORkhhcmR3YXJlTWFuYWdlciB0byBzdGFy
dCBhIGdlbmVyaWMgTkZDIHJlYWRlciBzZXNzaW9uLgorICAgICAgICAyKSBPbmNlIGEgcmVhZGVy
IHNlc3Npb24gaXMgZXN0YWJsaXNoZWQsIGEgTmZjQ29ubmVjdGlvbiBpcyBjcmVhdGVkIHRvIHN0
YXJ0IHRoZSBwb2xsaW5nIGFuZCByZWdpc3RlciB0aGUgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0
ZQorICAgICAgICB0byB3YWl0IGZvciAnZGlkRGV0ZWN0VGFncycuCisgICAgICAgIDMpIFdoZW4g
dGFncyBhcmUgZGV0ZWN0ZWQsIE5mY0Nvbm5lY3Rpb24gd2lsbCBkZXRlcm1pbmUgaWYgaXQgbWVl
dHMgb3VyIHJlcXVyaWVtZW50czogeyB0eXBlLCBjb25uZWN0YWJpbGl0eSwgZmlkbyBhcHBsZXQg
YXZhaWxhYmlsaXR5IH0uCisgICAgICAgIFRoZSBmaXJzdCB0YWcgdGhhdCBtZWV0cyBhbGwgcmVx
dWlyZW1lbnQgd2lsbCB0aGVuIGJlIHJldHVybmVkIGZvciBXZWJBdXRobiBvcGVyYXRpb25zLgor
ICAgICAgICA0KSBUaGUgZmlyc3QgV2ViQXV0aG4gb3BlcmF0aW9uIGlzIHRvIHNlbmQgYXV0aGVu
dGljYXRvckdldEluZm8gY29tbWFuZCB0byBkZXRlcm1pbmUgdGhlIHN1cHBvcnRlZCBwcm90b2Nv
bCwgYW5kIHRoZW4gaW5pdGlhbGl6ZSBjb3JyZXNwb25kaW5nCisgICAgICAgIGF1dGhlbnRpY2F0
b3JzLiBOb3RlZCwgdGhlIHNlbmRpbmcvcmVjZWl2aW5nIG9mIHRoaXMgY29tbWFuZCBpcyBub3cg
YWJzdHJhY3RlZCBpbnRvIEZpZG9TZXJ2aWNlIHdoaWNoIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyBI
aWRTZXJ2aWNlIGFuZCBOZmNTZXJ2aWNlLgorICAgICAgICA1KSBGcm9tIHRoZW4sIHRoZSBhY3R1
YWwgV2ViQXV0aG4gcmVxdWVzdCwgZWl0aGVyIG1ha2VDcmVkZW50aWFsIG9yIGdldEFzc2VydGlv
biB3aWxsIGJlIHNlbnQuCisKKyAgICAgICAgRm9yIHRlc3RpbmcsIHRoaXMgcGF0Y2ggZm9sbG93
cyB0aGUgc2FtZSBmbG93IGFzIHdlbGwuCisgICAgICAgIDEpIE1vY2tOZmNTZXJ2aWNlIG92ZXJy
aWRlcyBOZmNTZXJ2aWNlIHRvIG1vY2sgdGhlIGJlaGF2aW9yIG9mIE5GQyBUYWdzIGRpc2NvdmVy
eS4KKyAgICAgICAgMikgVGhlIHNhbWUgY2xhc3MgYWxzbyBzd2l6emxlcyBtZXRob2RzIGZyb20g
TkZSZWFkZXJTZXNzaW9uIHRvIG1vY2sgdGFnIGNvbm5lY3Rpb24gYW5kIGNvbW11bmljYXRpb24u
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmg6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFs
Ojpjb2xsZWN0VHJhbnNwb3J0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGVNb2NrKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tOgorICAgICAg
ICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6SGlk
U2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpjb250
aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZp
ZWxkU29mdExpbmsubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24u
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpmaWRvOjpjb21wYXJlVmVyc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246Ok5mY0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZmNDb25uZWN0aW9uOjp+TmZjQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5m
Y0Nvbm5lY3Rpb246OnRyYW5zYWN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVj
dGlvbjo6ZGlkRGV0ZWN0VGFncyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmZjU2VydmljZTo6TmZjU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5mY1NlcnZpY2U6On5OZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TmZjU2Vydmlj
ZTo6ZGlkQ29ubmVjdFRhZyk6CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OnN0YXJ0RGlz
Y292ZXJ5SW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0
YXJ0RGlzY292ZXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKC1bV0tORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZSBpbml0V2l0aENvbm5lY3Rpb246XSk6CisgICAgICAgICgtW1dLTkZSZWFkZXJTZXNz
aW9uRGVsZWdhdGUgcmVhZGVyU2Vzc2lvbjpkaWREZXRlY3RUYWdzOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNl
cnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TmZjU2VydmljZS5tbTogQWRkZWQuCisgICAgICAgICgtW1dLTW9ja05GVGFnIHR5cGVdKToKKyAg
ICAgICAgKC1bV0tNb2NrTkZUYWcgaW5pdFdpdGhORlRhZzpdKToKKyAgICAgICAgKC1bV0tNb2Nr
TkZUYWcgZGVzY3JpcHRpb25dKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaXNFcXVhbFRvTkZU
YWc6XSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIGluaXRXaXRoVHlwZTpdKToKKyAgICAgICAg
KFdlYktpdDo6TW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZj
U2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tO
ZmNTZXJ2aWNlOjpkZXRlY3RUYWdzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0
b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBB
dXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcE5mY0RyaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJp
dmVyOjpDdGFwTmZjRHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6dHJh
bnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpyZXNwb25kQXN5bmMgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNE
cml2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkZp
ZG9TZXJ2aWNlOjpGaWRvU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpn
ZXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJ
bmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2Vy
dmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA4LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZpeCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktp
dCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggOTUyZjQzZWFkOTkwYmMxZWFhOTNmNDFhNThmMTM5NjZl
ZDIxNTY4NS4uMTcwYjg1ZGFkMTBhYmU0ODRmNThhZDVkNmQzNGQwNGEzZTI0OGVmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCkBAIC0xNjM2LDMgKzE2MzYsNyBAQAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQogI2Rl
ZmluZSBIQVZFX0RBVEFfUFJPVEVDVElPTl9LRVlDSEFJTiAxCiAjZW5kaWYKKworI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTMwMDAwKQorI2RlZmluZSBIQVZFX05GX1JFQURFUl9TRVNTSU9OX1VQREFURV9VSSAx
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0NvbnN0YW50cy5oCmluZGV4IDIxMWUzYzgxZjNmMGRlMmZlNWJjYmZjZTYzZTNlNGZjODE1
MDJhMjAuLmYyNmNhZWE4ZjcyMTMxNTZmNjk3YTYzODFmYzYwMTVjMDM0NWY1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMu
aApAQCAtMjIzLDYgKzIyMywyNSBAQCBjb25zdCBjaGFyIGtVMmZWZXJzaW9uW10gPSAiVTJGX1Yy
IjsKIGNvbnN0IHVpbnQzMl90IGtDVEFQSElEVXNhZ2VQYWdlID0gMHhGMUQwOwogY29uc3QgdWlu
dDMyX3Qga0NUQVBISURVc2FnZSA9IDB4MDE7CiAKKy8vIENUQVBORkMgQXBwbGV0IHNlbGVjdGlv
biBjb21tYW5kIGFuZCByZXNwb25zZXMKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWFwcGxldC1zZWxlY3Rpb24KK2NvbnN0IHVp
bnQ4X3Qga0NUQVBORkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kW10gPSB7CisgICAgMHgwMCwgMHhB
NCwgMHgwNCwgMHgwMCwgLy8gQ0xBLCBJTlMsIFAxLCBQMgorICAgIDB4MDgsIC8vIEwKKyAgICAw
eEEwLCAweDAwLCAweDAwLCAweDA2LCAweDQ3LCAvLyBSSUQKKyAgICAweDJGLCAweDAwLCAweDAx
IC8vIFBJWAorfTsKKworY29uc3QgdWludDhfdCBrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvblUyZltd
ID0geworICAgIDB4NTUsIDB4MzIsIDB4NDYsIDB4NUYsIDB4NTYsIDB4MzIsIC8vIFZlcnNpb24K
KyAgICAweDkwLCAweDAwIC8vIEFQRFUgcmVzcG9uc2UgY29kZQorfTsKKworY29uc3QgdWludDhf
dCBrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkN0YXBbXSA9IHsKKyAgICAweDQ2LCAweDQ5LCAweDQ0
LCAweDRmLCAweDVmLCAweDMyLCAweDVmLCAweDMwLCAvLyBWZXJzaW9uCisgICAgMHg5MCwgMHgw
MCAvLyBBUERVIHJlc3BvbnNlIGNvZGUKK307CisKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9Db2NvYS9OZWFyRmllbGRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L0NvY29hL05lYXJGaWVsZFNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhN2I4Yjk4OTI2NThmNzhkMjU1YWRl
NDUzYTE5MTg1YTU1MWZhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9Db2NvYS9OZWFyRmllbGRTUEkuaApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPE5lYXJGaWVsZC9OZWFyRmllbGQuaD4KKworI2Vs
c2UKKwordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIE5GRmVhdHVyZSkgeworICAgIE5G
RmVhdHVyZVJlYWRlck1vZGUgICAgICAgICAgICAgICAgID0gMSA8PCAwLAorfTsKKwordHlwZWRl
ZiBOU19FTlVNKHVpbnQzMl90LCBORlRhZ1R5cGUpIHsKKyAgICBORlRhZ1R5cGVVbmtub3duICAg
ID0gMCwKKyAgICBORlRhZ1R5cGVHZW5lcmljNEEgID0gMywKK307CisKK3R5cGVkZWYgTlNfT1BU
SU9OUyh1aW50MzJfdCwgTkZUZWNobm9sb2d5KSB7CisgICAgTkZUZWNobm9sb2d5Tm9uZSAgICAg
ICAgICAgICAgICAgPSAwLAorfTsKKwordHlwZWRlZiBOU19FTlVNKHVpbnQzMl90LCBORk5kZWZB
dmFpbGFiaWxpdHkpIHsKKyAgICBORk5kZWZBdmFpbGFiaWxpdHlVbmtub3duID0gMCwKK307CisK
K0Bwcm90b2NvbCBORlRhZ0EKK0BlbmQKKworQHByb3RvY29sIE5GVGFnQgorQGVuZAorCitAcHJv
dG9jb2wgTkZUYWdGCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZyA8TlNPYmplY3Q+CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5GVGFnVHlwZSB0eXBlOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBORlRlY2hub2xvZ3kgdGVjaG5vbG9neTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNEYXRhICp0YWdJRDsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgY29weSkgTlNEYXRhICpVSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGFzc2lnbikgTkZOZGVmQXZhaWxhYmlsaXR5IG5kZWZBdmFpbGFiaWxpdHk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGFzc2lnbikgc2l6ZV90IG5kZWZNZXNzYWdl
U2l6ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBzaXplX3QgbmRl
ZkNvbnRhaW5lclNpemU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
RGF0YSAqQXBwRGF0YSBOU19ERVBSRUNBVEVEKDEwXzEyLCAxMF8xNSwgMTBfMCwgMTNfMCk7CisK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQ8TkZUYWdBPiB0YWdBOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBpZDxORlRhZ0I+IHRhZ0I7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIGlkPE5GVGFnRj4gdGFnRjsKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoTkZUYWc6KGlkPE5GVGFnPil0YWc7CistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uOwor
LSAoQk9PTClpc0VxdWFsVG9ORlRhZzooaWQ8TkZUYWc+KXRhZzsKK0BlbmQKKworQGludGVyZmFj
ZSBORlRhZyA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZywgTkZUYWcsIE5GVGFnQSwgTkZUYWdC
LCBORlRhZ0Y+CitAZW5kCisKK0Bwcm90b2NvbCBORlNlc3Npb24gPE5TT2JqZWN0PgorLSAodm9p
ZCkgZW5kU2Vzc2lvbjsKK0BlbmQKKworQGludGVyZmFjZSBORlNlc3Npb24gOiBOU09iamVjdCA8
TkZTZXNzaW9uPgorQGVuZAorCitAcHJvdG9jb2wgTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CisK
K0BpbnRlcmZhY2UgTkZSZWFkZXJTZXNzaW9uIDogTkZTZXNzaW9uCitAcHJvcGVydHkgKGFzc2ln
bikgaWQ8TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOworCistIChCT09MKSBzdGFy
dFBvbGxpbmc7CistIChCT09MKSBzdG9wUG9sbGluZzsKKy0gKEJPT0wpIGNvbm5lY3RUYWc6KE5G
VGFnKil0YWc7CistIChCT09MKSBkaXNjb25uZWN0VGFnOworLSAoTlNEYXRhKikgdHJhbnNjZWl2
ZTooTlNEYXRhKiljYXBkdTsKKy0gKE5TRXJyb3IgKikgdXBkYXRlVUlBbGVydE1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZTsKK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVyU2Vzc2lvbkRlbGVn
YXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorLSAodm9pZCkgcmVhZGVyU2Vzc2lvbjooTkZSZWFk
ZXJTZXNzaW9uKil0aGVTZXNzaW9uIGRpZERldGVjdFRhZ3M6KE5TQXJyYXk8TkZUYWcgKj4gKil0
YWdzOworQGVuZAorCitAaW50ZXJmYWNlIE5GSGFyZHdhcmVNYW5hZ2VyIDogTlNPYmplY3QKKysg
KGluc3RhbmNldHlwZSkgc2hhcmVkSGFyZHdhcmVNYW5hZ2VyOworLSAoTlNPYmplY3Q8TkZTZXNz
aW9uPiAqKSBzdGFydFJlYWRlclNlc3Npb25XaXRoQWN0aW9uU2hlZXRVSToodm9pZCheKShORlJl
YWRlclNlc3Npb24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9yKSl0aGVTdGFydENhbGxiYWNrOwor
LSAoQk9PTClhcmVGZWF0dXJlc1N1cHBvcnRlZDooTkZGZWF0dXJlKWZlYXR1cmVNYXNrIG91dEVy
cm9yOihOU0Vycm9yKiopb3V0RXJyb3I7CitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IGI0NjZkMmM3NDg5ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1MTY0NDQuLjgxMzc4ODFiYjQxZWU3
YTk3ODNiYWQ4NjQ0NTcxZGExZjkxZmQ2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDA4LDYgKzQwOCw4
IEBAIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3Iu
Y3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcAor
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKK1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcAogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKIAogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDMwZjQ4OGFiNTgwODkxZTk5MzU0NTJkNmI2MTM4ZTAzY2JiODAy
Y2UuLmJkOTk1ZTk1NmY4ZWY2YTNmOGIxMjFhZTBiZWI5YmI0ZmNmYzJlNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTQ5Niw5ICs0OTYsMTQgQEAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KK1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBAbm8tdW5pZnkKK1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCitVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQorVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KIAogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5tbQorVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KIAogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRl
eCA4ZmFhNzZmM2E0OGFjOGJlOTNmN2JmMzc4MGNjNDQzNGM2MDY5NTZmLi5hZjg0YTkxMzcwZmY4
ZTA3OTdkNGY2MTRhZTgyY2EzMGQzMmY4NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTY3OCw2ICs2
NzgsMzAgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29uZmlndXJhdGlvbi5o
aWQgPSBXVEZNb3ZlKGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gbmZjUmVmID0gc3RhdGlj
X2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZpZ3Vy
YXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKS5n
ZXQoKSkpKSB7CisgICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbjo6TmZjIG5mYzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwoc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkpKS0+
c3RyaW5nKCk7CisgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCisgICAgICAgICAgICBu
ZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5m
Yzo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgICAgIGlmIChlcnJvciA9PSAibm8tdGFncyIpCisgICAg
ICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246Ok5mYzo6RXJyb3I6Ok5vVGFnczsKKyAgICAgICAgaWYgKGVycm9yID09ICJ3cm9uZy10
YWctdHlwZSIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFnVHlwZTsKKyAgICAgICAg
aWYgKGVycm9yID09ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBX
ZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5v
Q29ubmVjdGlvbnM7CisgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNpb3VzLXBheWxvYWQiKQor
ICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOworCisgICAgICAgIGlmIChh
dXRvIHBheWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiUGF5bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAgbmZjLnBheWxvYWRCYXNl
NjQgPSBXZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3IoKTsKKwor
ICAgICAgICBpZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkKKyAgICAgICAgICAgIG5m
Yy5tdWx0aXBsZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBsZVRhZ3MpOworCisgICAg
ICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOworICAgIH0KKwogICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggMmMwODQ0NTc4NTdk
NDEwOWM4NDMxMTU5MTgzMGUzNGIyYTI1YjZkZi4uMGQ3YjY2MTNmZjZhZTZkNmE4NTkxYjZkYzA4
M2EzMWNlYWQ3MjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAt
MzgsMTUgKzM4LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEF1dGhl
bnRpY2F0b3JNYW5hZ2VySW50ZXJuYWwgewogCiAjaWYgUExBVEZPUk0oTUFDKQotY29uc3Qgc2l6
ZV90IG1heFRyYW5zcG9ydE51bWJlciA9IDI7Citjb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVt
YmVyID0gMzsKICNlbHNlCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVtYmVyID0gMTsKK2Nv
bnN0IHNpemVfdCBtYXhUcmFuc3BvcnROdW1iZXIgPSAyOwogI2VuZGlmCiAKIC8vIFN1Z2dlc3Rl
ZCBieSBXZWJBdXRoTiBzcGVjIGFzIG9mIDcgQXVndXN0IDIwMTguCiBjb25zdCB1bnNpZ25lZCBt
YXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAKLS8vIEZJWE1FKDE4ODYyNCwgMTg4NjI1KTogU3Vw
cG9ydCBORkMgYW5kIEJMRSBhdXRoZW50aWNhdG9ycy4KKy8vIEZJWE1FKDE4ODYyNSk6IFN1cHBv
cnQgQkxFIGF1dGhlbnRpY2F0b3JzLgogc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFu
c3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0
aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNw
b3J0U2V0IHJlc3VsdDsKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGkK
ICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpV
c2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRv
clRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTY5
LDcgKzcxLDExIEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNv
bGxlY3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9y
dDo6VXNiKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKKyAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJh
bnNwb3J0OjpOZmMpOworI2Vsc2UKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSByZXN1bHQuYWRk
KEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CiAjZW5kaWYKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sK
ICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpV
c2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRv
clRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEw
MCw4ICsxMDgsOSBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBj
b2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAgICAgICAgcmVzdWx0
LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgorICAgICAgICAgICAgcmVzdWx0LmFk
ZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlucyhBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFp
bnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQogICAgICAgICAgICAgcmVzdWx0
LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CkBAIC0xMDksNiArMTE4LDgg
QEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5z
cG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAgaWYgKCFyZXN1bHQuY29udGFpbnMo
QXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSAmJiBhbGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0
cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpKQogICAgICAgICAgICAgcmVz
dWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogI2VuZGlmCisgICAgICAgIGlm
ICghcmVzdWx0LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYykgJiYgYWxsb3dD
cmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZj
KSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsK
ICAgICAgICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0TnVtYmVyKQogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5kZXggZjQ1NjU3Yjk1OTcwOTgwZjRjMWY0NWVhMzE4
MGMzZTc3MGY1ODA3My4uMTE1MmQzMWQ0YTQ1YzMyNzM0Y2RiYTkzMmFlMGUzOGE5NmUwMmMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcApA
QCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgogI2luY2x1ZGUgIk1v
Y2tIaWRTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiTW9ja0xvY2FsU2VydmljZS5oIgorI2luY2x1ZGUg
Ik1vY2tOZmNTZXJ2aWNlLmgiCisjaW5jbHVkZSAiTmZjU2VydmljZS5oIgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNiArNDcsOCBAQCBVbmlx
dWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpjcmVhdGUoVwogICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydDo6VXNiOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxIaWRTZXJ2aWNlPihvYnNl
cnZlcik7CiAjZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6
Ok5mYzoKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmZjU2VydmljZT4ob2JzZXJ2ZXIp
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbFNlcnZpY2U+KG9ic2VydmVyKTsKQEAgLTYwLDYgKzY0
LDggQEAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW8KICAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OlVzYjoKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TW9ja0hp
ZFNlcnZpY2U+KG9ic2VydmVyLCBjb25maWd1cmF0aW9uKTsKICNlbmRpZgorICAgIGNhc2UgV2Vi
Q29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxNb2NrTmZjU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3VyYXRpb24pOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxNb2NrTG9jYWxTZXJ2aWNlPihvYnNlcnZlciwgY29uZmlndXJhdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9IaWRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9IaWRTZXJ2aWNlLmgKaW5kZXggN2QyZDM1ZjI0N2RlZDAyZTA2ZjRkNmIxNWQzYTlk
NzU0MWVkMmFjZi4uZThlYzIzY2JiMjEwMjFmNTY2ZGQ0ZDgxODczZjk0YmUwMGMwYWQ1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
SGlkU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0hpZFNlcnZpY2UuaApAQCAtMjcsMTcgKzI3LDE2IEBACiAKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCiAjaW5jbHVkZSA8SU9L
aXQvaGlkL0lPSElETWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBDdGFw
SGlkRHJpdmVyOwogY2xhc3MgSGlkQ29ubmVjdGlvbjsKIAotY2xhc3MgSGlkU2VydmljZSA6IHB1
YmxpYyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitjbGFzcyBIaWRTZXJ2aWNlIDog
cHVibGljIEZpZG9TZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWRTZXJ2aWNlKE9i
c2VydmVyJik7CiAgICAgfkhpZFNlcnZpY2UoKTsKQEAgLTUxLDExICs1MCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKTsKICAgICB2aXJ0dWFs
IFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBjcmVhdGVIaWRDb25uZWN0aW9uKElPSElERGV2aWNl
UmVmKSBjb25zdDsKIAotICAgIHZvaWQgY29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oQ3Rh
cEhpZERyaXZlciogZGV2aWNlUmVmLCBWZWN0b3I8dWludDhfdD4mJiBpbmZvKTsKLQogICAgIFJl
dGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKLSAgICAvLyBLZWVwaW5nIGRyaXZl
cnMgYWxpdmUgd2hlbiB0aGV5IGFyZSBpbml0aWFsaXppbmcgYXV0aGVudGljYXRvcnMuCi0gICAg
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4+IG1fZHJpdmVyczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXggYWJk
MGU3ZTcyOTQ3OTEyOGNiNmFmZmY3ZjIxODEyNjNlNGRhOTgzNS4uMTI3ODA2ZmFkNDgxYWQyYjZm
ZmIyN2U3ODM4YjBjNjg5ODQwOTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBAIC0y
OCwxNSArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQog
Ci0jaW1wb3J0ICJDdGFwQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCAiQ3RhcEhpZERyaXZlci5o
IgogI2ltcG9ydCAiSGlkQ29ubmVjdGlvbi5oIgotI2ltcG9ydCAiVTJmQXV0aGVudGljYXRvci5o
IgotI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZpZG9D
b25zdGFudHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KLSNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIGZp
ZG87CkBAIC01Niw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZVJlbW92ZWRDYWxsYmFjayh2
b2lkKiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNlUmVmCiB9CiAKIEhpZFNl
cnZpY2U6OkhpZFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIDogQXV0aGVudGljYXRv
clRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCisgICAgOiBGaWRvU2VydmljZShvYnNlcnZlcikK
IHsKICAgICBtX21hbmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBOU0RpY3Rpb25hcnkgKm1h
dGNoaW5nRGljdGlvbmFyeSA9IEB7CkBAIC05MiwzMiArODUsNyBAQCBVbmlxdWVSZWY8SGlkQ29u
bmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBk
ZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVh
dGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8g
ZnJvbSB0aGUgZGV2aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50
aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0
b3I8dWludDhfdD4mJiByZXNwb25zZSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB3ZWFrVGhpcy0+Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8ocHRyLCBXVEZNb3ZlKHJl
c3BvbnNlKSk7Ci0gICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRkKFdU
Rk1vdmUoZHJpdmVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250aW51ZUFkZERldmljZUFmdGVy
R2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQot
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBkcml2ZXIgPSBtX2RyaXZlcnMu
dGFrZShwdHIpOwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbmZvID0gcmVhZENUQVBHZXRJ
bmZvUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYmIGluZm8tPnZlcnNpb25zKCku
ZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52ZXJzaW9ucygpLmVuZCgpKSB7
Ci0gICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChDdGFwQXV0aGVudGljYXRv
cjo6Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5mbykpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBnZXQgaW5m
byByZXNwb25zZS4iKTsKLSAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVyc2lvbjo6
a1UyZik7Ci0gICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkF1dGhlbnRpY2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJbmZvKFdURjo6bWFrZVVuaXF1
ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZTA1ZmFjMjJiOWQ0MDVmNTMyODk3NzhhZTcwMTVhMGI4MGU0YjM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTmVhckZpZWxkU29mdExpbmsuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZWFyRmll
bGRTUEkuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVX
T1JLX0ZPUl9IRUFERVIoV2ViS2l0LCBOZWFyRmllbGQpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihXZWJLaXQsIE5GVGFnKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktp
dCwgTkZTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZSZWFk
ZXJTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZIYXJkd2Fy
ZU1hbmFnZXIpOworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNv
ZnRMaW5rLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmVhckZpZWxkU29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1NDQyMzM5NDRiMDJmYTU1ZWZk
ZTZjZjRhNzQ0MjlkMGU1YWM5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCitTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCk7CisKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlRhZyk7CitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZTZXNzaW9uKTsKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlJlYWRlclNlc3Npb24p
OworCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9O
QUwoV2ViS2l0LCBOZWFyRmllbGQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsKKyNlbHNlCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZIYXJkd2FyZU1hbmFnZXIp
OworI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZj
Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MDgzNDUwNjYwOTM0ZTE1N2QwNTE1ZjUyZmFiMGQ2
YWQyODgxMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNf
Q0xBU1MgTkZSZWFkZXJTZXNzaW9uOworT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBX
S05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmZjU2VydmljZTsKKworY2xhc3MgTmZjQ29ubmVjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxOZmNDb25uZWN0aW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTmZjQ29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgTmZjQ29ubmVj
dGlvbihSZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiYmLCBOZmNTZXJ2aWNlJik7CisgICAgfk5m
Y0Nvbm5lY3Rpb24oKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2FjdChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKSBjb25zdDsKKworICAgIC8vIEZvciBXS05GUmVhZGVyU2Vzc2lvbkRlbGVn
YXRlCisgICAgdm9pZCBkaWREZXRlY3RUYWdzKE5TQXJyYXkgKikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgUmV0YWluUHRyPE5GUmVhZGVyU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJldGFpblB0
cjxXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFdlYWtQdHI8TmZj
U2VydmljZT4gbV9zZXJ2aWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzE5M2VjOTcxOTk4MmMyNmNlOGU3NjlhZjZkODEzMzY1NmRkZGUzZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05mY0Nvbm5lY3Rpb24ubW0KQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbXBvcnQgIk5mY1NlcnZpY2UuaCIKKyNpbXBvcnQgIldLTkZSZWFkZXJT
ZXNzaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2lt
cG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIGZpZG87CisKK25hbWVzcGFjZSB7CitpbmxpbmUgYm9vbCBjb21wYXJlVmVyc2lvbihO
U0RhdGEgKmRhdGEsIGNvbnN0IHVpbnQ4X3QgdmVyc2lvbltdLCBzaXplX3QgdmVyc2lvblNpemUp
Cit7CisgICAgaWYgKGRhdGEubGVuZ3RoICE9IHZlcnNpb25TaXplKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuICFtZW1jbXAoZGF0YS5ieXRlcywgdmVyc2lvbiwgdmVyc2lvblNp
emUpOworfQorfSAvLyBuYW1lc3BhY2UKKworTmZjQ29ubmVjdGlvbjo6TmZjQ29ubmVjdGlvbihS
ZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiYmIHNlc3Npb24sIE5mY1NlcnZpY2UmIHNlcnZpY2Up
CisgICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRv
cHROUyhbW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlv
bjoqdGhpc10pKQorICAgICwgbV9zZXJ2aWNlKG1ha2VXZWFrUHRyKHNlcnZpY2UpKQoreworICAg
IFttX3Nlc3Npb24gc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07CisgICAgLy8gRklYTUUo
MjAwOTMzKQorI2lmIEhBVkUoTkZfUkVBREVSX1NFU1NJT05fVVBEQVRFX1VJKQorICAgIFttX3Nl
c3Npb24gdXBkYXRlVUlBbGVydE1lc3NhZ2U6QCJIb2xkIHRoZSBrZXkgYWdhaW5zdCB0aGUgdG9w
IG9mIHlvdXIgZGV2aWNlLiJdOworI2VuZGlmCisgICAgW21fc2Vzc2lvbiBzdGFydFBvbGxpbmdd
OworfQorCitOZmNDb25uZWN0aW9uOjp+TmZjQ29ubmVjdGlvbigpCit7CisgICAgW21fc2Vzc2lv
biBkaXNjb25uZWN0VGFnXTsKKyAgICBbbV9zZXNzaW9uIHN0b3BQb2xsaW5nXTsKKyAgICBbbV9z
ZXNzaW9uIGVuZFNlc3Npb25dOworfQorCitWZWN0b3I8dWludDhfdD4gTmZjQ29ubmVjdGlvbjo6
dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3Bv
bnNlRGF0YSA9IFttX3Nlc3Npb24gdHJhbnNjZWl2ZTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0
YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXV07CisKKyAgICBWZWN0b3I8dWludDhfdD4gcmVz
cG9uc2U7CisgICAgcmVzcG9uc2UuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHJlc3BvbnNlRGF0YS5ieXRlcyksIHJlc3BvbnNlRGF0YS5sZW5ndGgpOworICAgIHJldHVy
biByZXNwb25zZTsKK30KKwordm9pZCBOZmNDb25uZWN0aW9uOjpkaWREZXRlY3RUYWdzKE5TQXJy
YXkgKnRhZ3MpIGNvbnN0Cit7CisgICAgLy8gRklYTUUoMjAwOTMyKQorICAgIGZvciAoTkZUYWcg
KnRhZyBpbiB0YWdzKSB7CisgICAgICAgIGlmICh0YWcudHlwZSAhPSBORlRhZ1R5cGVHZW5lcmlj
NEEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFbbV9zZXNzaW9uIGNvbm5l
Y3RUYWc6dGFnXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIENvbmZpcm0g
dGhlIEZJRE8gYXBwbGV0IGlzIGF2YWxpYWJsZSBiZWZvcmUgcmV0dXJuLgorICAgICAgICAvLyBo
dHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTkwMTMwL2ZpZG8t
Y2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE5MDEzMC5odG1sI25m
Yy1hcHBsZXQtc2VsZWN0aW9uCisgICAgICAgIGF1dG8gdmVyc2lvbkRhdGEgPSBbbV9zZXNzaW9u
IHRyYW5zY2VpdmU6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmtDVEFQTkZDQXBwbGV0U2VsZWN0aW9u
Q29tbWFuZCBsZW5ndGg6c2l6ZW9mKGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ29tbWFuZCldXTsK
KyAgICAgICAgaWYgKCF2ZXJzaW9uRGF0YSB8fCAoIWNvbXBhcmVWZXJzaW9uKHZlcnNpb25EYXRh
LCBrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvblUyZiwgc2l6ZW9mKGtDVEFQTkZDQXBwbGV0U2VsZWN0
aW9uVTJmKSkgJiYgIWNvbXBhcmVWZXJzaW9uKHZlcnNpb25EYXRhLCBrQ1RBUE5GQ0FwcGxldFNl
bGVjdGlvbkN0YXAsIHNpemVvZihrQ1RBUE5GQ0FwcGxldFNlbGVjdGlvbkN0YXApKSkpIHsKKyAg
ICAgICAgICAgIFttX3Nlc3Npb24gZGlzY29ubmVjdFRhZ107CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbV9zZXJ2aWNlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX3NlcnZpY2UtPmRpZENvbm5lY3RUYWcoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5ZmYzY2UzZDBi
ZWIzOTZmOWY2NjNmNWY0MjY4MTg4OTYzMDcxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKQorCisjaW5jbHVkZSAiRmlkb1NlcnZpY2UuaCIKKworT0JKQ19DTEFTUyBORlJlYWRl
clNlc3Npb247CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDdGFwTmZjRHJpdmVyOwor
CitjbGFzcyBOZmNTZXJ2aWNlIDogcHVibGljIEZpZG9TZXJ2aWNlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBOZmNTZXJ2aWNlKE9ic2VydmVyJik7CisgICAgfk5mY1NlcnZpY2UoKTsKKworICAg
IC8vIEZvciBOZmNDb25uZWN0aW9uLgorICAgIHZvaWQgZGlkQ29ubmVjdFRhZygpOworCitwcm90
ZWN0ZWQ6CisgICAgLy8gT25seSBvbmUgcmVhZGVyIHNlc3Npb24gaXMgYWxsb3dlZCBwZXIgdGlt
ZS4KKyAgICAvLyBLZWVwIHRoZSByZWFkZXIgc2Vzc2lvbiBhbGl2ZSBoZXJlIHdoZW4gaXQgdHJp
ZXMgdG8gY29ubmVjdCB0byBhIHRhZy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcE5mY0RyaXZl
cj4gbV9kcml2ZXI7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydERpc2NvdmVyeUludGVybmFs
KCkgZmluYWw7CisgICAgdm9pZCBjb250aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyhWZWN0b3I8
dWludDhfdD4mJiByZXNwb25zZSk7CisKKyAgICAvLyBPdmVycmlkZWQgYnkgTW9ja05mY1NlcnZp
Y2UuCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05m
Y1NlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9OZmNTZXJ2aWNlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNGE1NzA4Nzg4ODBmZTAzMjBjZDFhYTMw
YWE5OTg0ZDQ2ZjBiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1tCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5mY1NlcnZpY2UuaCIK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbXBvcnQgIkN0YXBOZmNEcml2ZXIuaCIKKyNp
bXBvcnQgIk5lYXJGaWVsZFNQSS5oIgorI2ltcG9ydCAiTmZjQ29ubmVjdGlvbi5oIgorI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgorCisjaW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCitOZmNTZXJ2aWNlOjpOZmNTZXJ2
aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKKyAgICA6IEZpZG9TZXJ2aWNlKG9ic2VydmVyKQorewor
fQorCitOZmNTZXJ2aWNlOjp+TmZjU2VydmljZSgpCit7Cit9CisKK3ZvaWQgTmZjU2VydmljZTo6
ZGlkQ29ubmVjdFRhZygpCit7CisgICAgZ2V0SW5mbyhXVEZNb3ZlKG1fZHJpdmVyKSk7Cit9CisK
K3ZvaWQgTmZjU2VydmljZTo6c3RhcnREaXNjb3ZlcnlJbnRlcm5hbCgpCit7CisgICAgcGxhdGZv
cm1TdGFydERpc2NvdmVyeSgpOworfQorCit2b2lkIE5mY1NlcnZpY2U6OnBsYXRmb3JtU3RhcnRE
aXNjb3ZlcnkoKQoreworICAgIGlmICghW1tnZXRORkhhcmR3YXJlTWFuYWdlckNsYXNzKCkgc2hh
cmVkSGFyZHdhcmVNYW5hZ2VyXSBhcmVGZWF0dXJlc1N1cHBvcnRlZDpORkZlYXR1cmVSZWFkZXJN
b2RlIG91dEVycm9yOm5pbF0pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdpbGwgYmUgZXhl
Y3V0ZWQgaW4gYSBkaWZmZXJlbnQgdGhyZWFkLgorICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxv
Y2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoTkZSZWFkZXJTZXNz
aW9uICpzZXNzaW9uLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIExP
R19FUlJPUigiQ291bGRuJ3Qgc3RhcnQgYSBORkMgcmVhZGVyIHNlc3Npb246ICVAIiwgZXJyb3Ip
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmV0YWluUHRyPE5G
UmVhZGVyU2Vzc2lvbj4gcmV0YWluU2Vzc2lvbiA9IHNlc3Npb247CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHRoaXMsIHNlc3Npb24gPSByZXRhaW5TZXNzaW9u
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
ICAgICBbc2Vzc2lvbiBlbmRTZXNzaW9uXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEN0YXBOZmNEcml2ZXIgYW5kIE5mY0Nvbm5lY3Rp
b24gd2lsbCB0YWtlIGNhcmUgb2YgcG9sbGluZyB0YWdzIGFuZCBjb25uZWN0aW5nIHRvIHRoZW0u
CisgICAgICAgICAgICBtX2RyaXZlciA9IFdURjo6bWFrZVVuaXF1ZTxDdGFwTmZjRHJpdmVyPiht
YWtlVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+KFdURk1vdmUoc2Vzc2lvbiksICp0aGlzKSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworICAgIFtbZ2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygpIHNo
YXJlZEhhcmR3YXJlTWFuYWdlcl0gc3RhcnRSZWFkZXJTZXNzaW9uV2l0aEFjdGlvblNoZWV0VUk6
Y2FsbGJhY2suZ2V0KCldOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vz
c2lvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUwYjk2Yzc2NjBkNDliY2M4Mzc1NmFlNWViZGQ4
MGFhMDZlOTRlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaApAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKQorCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgTmZjQ29ubmVjdGlvbjsKK30KKworQGludGVy
ZmFjZSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIDogTlNPYmplY3QgPE5GUmVhZGVyU2Vzc2lv
bkRlbGVnYXRlPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25uZWN0aW9uOihXZWJLaXQ6
Ok5mY0Nvbm5lY3Rpb24mKWNvbm5lY3Rpb247CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxl
Z2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZjVkNzA4MzIzMmEwZTA3YTNhMGYzMTZhMTYyMTJlYzRhMTZh
NmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJO
ZmNDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorCisjaW1wb3J0ICJOZWFy
RmllbGRTb2Z0TGluay5oIgorCitAaW1wbGVtZW50YXRpb24gV0tORlJlYWRlclNlc3Npb25EZWxl
Z2F0ZSB7CisgICAgV2Vha1B0cjxXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb24+IF9jb25uZWN0aW9uOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5l
Y3Rpb24mKWNvbm5lY3Rpb24KK3sKKyAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICBfY29ubmVjdGlvbiA9IG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pOworICAgIHJldHVybiBz
ZWxmOworfQorCisvLyBFeGVjdXRlZCBpbiBhIGRpZmZlcmVudCB0aHJlYWQuCistICh2b2lkKXJl
YWRlclNlc3Npb246KE5GUmVhZGVyU2Vzc2lvbiopdGhlU2Vzc2lvbiBkaWREZXRlY3RUYWdzOihO
U0FycmF5PE5GVGFnICo+ICopdGFncworeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgUmV0YWluUHRyPE5TQXJyYXk+IHJldGFpblRhZ3MgPSB0YWdzOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uLCB0YWdzID0gcmV0
YWluVGFnc10geworICAgICAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNvbm5lY3Rpb24tPmRpZERldGVjdFRhZ3ModGFncy5nZXQoKSk7CisgICAgfSk7
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2
aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tOZmNTZXJ2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4
MjZhMjZiMzMwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UuaApAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5j
bHVkZSAiTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk5m
Y1NlcnZpY2UuaCIKKworT0JKQ19DTEFTUyBOU0RhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKKworY2xhc3MgTW9j
a05mY1NlcnZpY2UgZmluYWwgOiBwdWJsaWMgTmZjU2VydmljZSB7CitwdWJsaWM6CisgICAgTW9j
a05mY1NlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJik7CisKKyAgICBOU0RhdGEqIHRyYW5zY2VpdmUoKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKSBmaW5hbDsKKworICAgIHZvaWQgZGV0ZWN0VGFn
cygpIGNvbnN0OworCisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2Nv
bmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40M2UxNWMwZGFkZDg1NzY1OTA3NjczMzNiM2U0NGNiMGFiMTI3NzgzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TmZjU2VydmljZS5tbQpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiTW9ja05mY1NlcnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVU
SE4pCisjaW1wb3J0ICJDdGFwTmZjRHJpdmVyLmgiCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIK
KyNpbXBvcnQgIk5mY0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50
cy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgor
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCisjaW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgor
CitAaW50ZXJmYWNlIFdLTW9ja05GVGFnIDogTlNPYmplY3QgPE5GVGFnPgorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhUeXBlOihORlRhZ1R5cGUpdHlwZTsKKworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV0tNb2NrTkZUYWcgeworICAgIE5GVGFnVHlwZSBfdHlwZTsKK30KKworQHN5bnRoZXNp
emUgdGVjaG5vbG9neTsKK0BzeW50aGVzaXplIHRhZ0lEOworQHN5bnRoZXNpemUgQXBwRGF0YTsK
K0BzeW50aGVzaXplIFVJRDsKK0BzeW50aGVzaXplIG5kZWZBdmFpbGFiaWxpdHk7CitAc3ludGhl
c2l6ZSBuZGVmTWVzc2FnZVNpemU7CitAc3ludGhlc2l6ZSBuZGVmQ29udGFpbmVyU2l6ZTsKK0Bz
eW50aGVzaXplIHRhZ0E7CitAc3ludGhlc2l6ZSB0YWdCOworQHN5bnRoZXNpemUgdGFnRjsKKwor
LSAoTkZUYWdUeXBlKXR5cGUKK3sKKyAgICByZXR1cm4gX3R5cGU7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aE5GVGFnOihpZDxORlRhZz4pdGFnCit7CisgICAgaWYgKChzZWxmID0gW3N1
cGVyIGluaXRdKSkKKyAgICAgICAgX3R5cGUgPSB0YWcudHlwZTsKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAoTlNTdHJpbmcqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIG5pbDsKK30KKwor
LSAoQk9PTClpc0VxdWFsVG9ORlRhZzooaWQ8TkZUYWc+KXRhZworeworICAgIHJldHVybiBOTzsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTkZUYWdUeXBlKXR5cGUKK3sKKyAg
ICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBfdHlwZSA9IHR5cGU7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1l
c3BhY2UgZmlkbzsKK3VzaW5nIE1vY2sgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOjpOZmM7CisKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBpZDxORlJlYWRlclNlc3Npb25EZWxl
Z2F0ZT4gZ2xvYmFsTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CitzdGF0aWMgTW9ja05mY1NlcnZp
Y2UqIGdsb2JhbE5mY1NlcnZpY2U7CisKK3N0YXRpYyB2b2lkIE5GUmVhZGVyU2Vzc2lvblNldERl
bGVnYXRlKGlkLCBTRUwsIGlkPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKK3sK
KyAgICBnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworfQorCitzdGF0
aWMgQk9PTCBORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbChpZCwgU0VMLCBORlRhZyAqKQor
eworICAgIHJldHVybiBOTzsKK30KKworc3RhdGljIEJPT0wgTkZSZWFkZXJTZXNzaW9uQ29ubmVj
dFRhZyhpZCwgU0VMLCBORlRhZyAqKQoreworICAgIHJldHVybiBZRVM7Cit9CisKK3N0YXRpYyBO
U0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUoaWQsIFNFTCwgTlNEYXRhICopCit7Cisg
ICAgaWYgKCFnbG9iYWxOZmNTZXJ2aWNlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biBnbG9iYWxOZmNTZXJ2aWNlLT50cmFuc2NlaXZlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisK
K01vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAg
OiBOZmNTZXJ2aWNlKG9ic2VydmVyKQorICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24pCit7Cit9CisKK05TRGF0YSogTW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUoKQoreworICAg
IGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gcmVzdWx0ID0gW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQmFzZTY0RW5jb2RlZFN0cmluZzptX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0
WzBdIG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc107
CisgICAgbV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NC5yZW1vdmUoMCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERp
c2NvdmVyeSgpCit7CisgICAgaWYgKCEhbV9jb25maWd1cmF0aW9uLm5mYykgeworICAgICAgICBn
bG9iYWxOZmNTZXJ2aWNlID0gdGhpczsKKworICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxl
MSA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBz
ZWxlY3RvcihzZXREZWxlZ2F0ZTopKTsKKyAgICAgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9u
KG1ldGhvZFRvU3dpenpsZTEsIChJTVApTkZSZWFkZXJTZXNzaW9uU2V0RGVsZWdhdGUpOworCisg
ICAgICAgIE1ldGhvZCBtZXRob2RUb1N3aXp6bGUyID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2Qo
Z2V0TkZSZWFkZXJTZXNzaW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNvbm5lY3RUYWc6KSk7CisgICAg
ICAgIGlmIChtX2NvbmZpZ3VyYXRpb24ubmZjLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6Tm9Db25u
ZWN0aW9ucykKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3
aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWdGYWlsKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTIs
IChJTVApTkZSZWFkZXJTZXNzaW9uQ29ubmVjdFRhZyk7CisKKyAgICAgICAgTWV0aG9kIG1ldGhv
ZFRvU3dpenpsZTMgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNlc3Npb25D
bGFzcygpLCBAc2VsZWN0b3IodHJhbnNjZWl2ZTopKTsKKyAgICAgICAgbWV0aG9kX3NldEltcGxl
bWVudGF0aW9uKG1ldGhvZFRvU3dpenpsZTMsIChJTVApTkZSZWFkZXJTZXNzaW9uVHJhbnNjZWl2
ZSk7CisKKyAgICAgICAgYXV0byByZWFkZXJTZXNzaW9uID0gYWRvcHROUyhbYWxsb2NORlJlYWRl
clNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICAgICAgbV9kcml2ZXIgPSBXVEY6Om1ha2VV
bmlxdWU8Q3RhcE5mY0RyaXZlcj4obWFrZVVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPihyZWFkZXJT
ZXNzaW9uLmdldCgpLCAqdGhpcykpOworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPmRl
dGVjdFRhZ3MoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTE9H
X0VSUk9SKCJObyBuZmMgYXV0aGVudGljYXRvcnMgaXMgYXZhaWxhYmxlLiIpOworfQorCit2b2lk
IE1vY2tOZmNTZXJ2aWNlOjpkZXRlY3RUYWdzKCkgY29uc3QKK3sKKyAgICBpZiAobV9jb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Ok5vVGFncykKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbY29uZmlndXJhdGlvbiA9IG1f
Y29uZmlndXJhdGlvbl0geworICAgICAgICBhdXRvIHRhZ3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubmZjLT5lcnJv
ciA9PSBNb2NrOjpFcnJvcjo6V3JvbmdUYWdUeXBlIHx8IGNvbmZpZ3VyYXRpb24ubmZjLT5tdWx0
aXBsZVRhZ3MpCisgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6W1tXS01vY2tORlRhZyBhbGxv
Y10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZVVua25vd25dXTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgW3RhZ3MgYWRkT2JqZWN0OltbV0tNb2NrTkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpO
RlRhZ1R5cGVHZW5lcmljNEFdXTsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5uZmMtPm11
bHRpcGxlVGFncykKKyAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dLTW9ja05GVGFnIGFs
bG9jXSBpbml0V2l0aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAgICAgICAgW2dsb2Jh
bE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIHJlYWRlclNlc3Npb246bmlsIGRpZERldGVjdFRhZ3M6
dGFncy5nZXQoKV07CisgICAgfSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgY2FsbGJhY2su
Z2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5oCmluZGV4IGY3YzM5Njk2OTU5NDE4YWI5NTBkNjdmNDQzNmVj
ZmUzYTNjYmZkMWMuLmY0MGE3YjdiZDhiZTFiN2QwYjM0Mjg1YmQ2NjZjODdkMGRjZDc5NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oCkBAIC03Miw5ICs3MiwyNCBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIGJvb2wgY2FuRG93bmdyYWRlIHsgZmFsc2UgfTsK
ICAgICB9OwogCisgICAgc3RydWN0IE5mYyB7CisgICAgICAgIGVudW0gY2xhc3MgRXJyb3IgOiB1
aW50OF90IHsKKyAgICAgICAgICAgIFN1Y2Nlc3MsCisgICAgICAgICAgICBOb1RhZ3MsCisgICAg
ICAgICAgICBXcm9uZ1RhZ1R5cGUsCisgICAgICAgICAgICBOb0Nvbm5lY3Rpb25zLAorICAgICAg
ICAgICAgTWFsaWNpb3VzUGF5bG9hZAorICAgICAgICB9OworCisgICAgICAgIEVycm9yIGVycm9y
IHsgRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2
NDsKKyAgICAgICAgYm9vbCBtdWx0aXBsZVRhZ3MgeyBmYWxzZSB9OworICAgIH07CisKICAgICBi
b29sIHNpbGVudEZhaWx1cmUgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPExvY2FsPiBsb2NhbDsK
ICAgICBPcHRpb25hbDxIaWQ+IGhpZDsKKyAgICBPcHRpb25hbDxOZmM+IG5mYzsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNw
cAppbmRleCBhMDE1NWVkMWJmNjIwZjgwYThjNGU4ODY2NTUxZGM0ODYzMTQwYzZlLi4wZjk5MzMz
NDk4YjJjNzMwNWMzMzFhMTU4ZjIxYTQxZGE0OTA5YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBBdXRoZW50aWNhdG9yLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkN0YXBBdXRoZW50aWNhdG9yLmgiCiAKLSNpZiBFTkFCTEUoV0VCX0FVVEhO
KSAmJiBQTEFURk9STShNQUMpCisjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUgIkN0
YXBEcml2ZXIuaCIKICNpbmNsdWRlICJDdGFwSGlkRHJpdmVyLmgiCkBAIC0xMTUsNCArMTE1LDQg
QEAgYm9vbCBDdGFwQXV0aGVudGljYXRvcjo6dHJ5RG93bmdyYWRlKCkKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMp
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRp
Y2F0b3IuaAppbmRleCAzMWU4ODg4NzVhNTZmZWY4ZTA5MDgxOGExODZjNTcxMzM1MDNjZjNiLi5h
MThkZjA0OTRhOTc3ZTk5MDVkNGZlM2RlNjA4Mjg2Y2U0NzdiMDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNh
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwQXV0aGVudGljYXRvci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9B
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+CkBAIC01OCw0ICs1OCw0IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikg
JiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNE
cml2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwTmZjRHJpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjAyMzIyYjZiODMwNjU5MGEwNjE5MmMy
MzVlZDI5NGE2YjBlOGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN0YXBOZmNE
cml2ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Fw
ZHVDb21tYW5kLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KKyNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBh
cGR1OwordXNpbmcgbmFtZXNwYWNlIGZpZG87CisKK0N0YXBOZmNEcml2ZXI6OkN0YXBOZmNEcml2
ZXIoVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQoreworfQorCisvLyBGSVhNRSgyMDA5MzQpOiBTdXBw
b3J0IE5GQ0NUQVBfR0VUUkVTUE9OU0UKK3ZvaWQgQ3RhcE5mY0RyaXZlcjo6dHJhbnNhY3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IC8vIEZvciBDVEFQMiwgY29tbWFuZHMgZm9sbG93OgorICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlh
bmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVu
dGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWNvbW1hbmQtZnJhbWlu
ZworICAgIGlmIChwcm90b2NvbCgpID09IFByb3RvY29sVmVyc2lvbjo6a0N0YXApIHsKKyAgICAg
ICAgQXBkdUNvbW1hbmQgY29tbWFuZDsKKyAgICAgICAgY29tbWFuZC5zZXRDbGEoMHg4MCk7Cisg
ICAgICAgIGNvbW1hbmQuc2V0SW5zKDB4MTApOworICAgICAgICBjb21tYW5kLnNldERhdGEoV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIGNvbW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoQXBkdUNvbW1h
bmQ6OmtBcGR1TWF4UmVzcG9uc2VMZW5ndGgpOworCisgICAgICAgIGF1dG8gYXBkdVJlc3BvbnNl
ID0gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShtX2Nvbm5lY3Rpb24tPnRyYW5zYWN0
KGNvbW1hbmQuZ2V0RW5jb2RlZENvbW1hbmQoKSkpOworICAgICAgICBpZiAoIWFwZHVSZXNwb25z
ZSkgeworICAgICAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCB7IH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChhcGR1UmVzcG9uc2Ut
PnN0YXR1cygpID09IEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19JTlNfTk9UX1NVUFBPUlRFRCkg
eworICAgICAgICAgICAgLy8gUmV0dXJuIGtDdGFwMUVyckludmFsaWRDb21tYW5kIGluc3RlYWQg
b2YgYW4gZW1wdHkgcmVzcG9uc2UgdG8gc2lnbmFsIEZpZG9TZXJ2aWNlIHRvIGNyZWF0ZSBhIFUy
RiBhdXRoZW50aWNhdG9yCisgICAgICAgICAgICAvLyBmb3IgdGhlIGdldEluZm8gc3RhZ2UuCisg
ICAgICAgICAgICByZXNwb25kQXN5bmMoV1RGTW92ZShjYWxsYmFjayksIHsgc3RhdGljX2Nhc3Q8
dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAxRXJySW52YWxpZENvbW1hbmQp
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChhcGR1UmVz
cG9uc2UtPnN0YXR1cygpICE9IEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUikgewor
ICAgICAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCB7IH0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBTb21laG93IGVsaW1p
bmF0ZSB0aGUgbmVlZCBmb3IgdGhlIGNvcHk/CisgICAgICAgIHJlc3BvbmRBc3luYyhXVEZNb3Zl
KGNhbGxiYWNrKSwgVmVjdG9yPHVpbnQ4X3Q+KGFwZHVSZXNwb25zZS0+ZGF0YSgpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGb3IgVTJGLCBVMmZBdXRoZW50aWNhdG9yIHdv
dWxkIGhhbmRsZSB0aGUgQVBEVSBlbmNvZGluZy4KKyAgICAvLyBodHRwczovL2ZpZG9hbGxpYW5j
ZS5vcmcvc3BlY3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9maWRvLXUyZi1uZmMtcHJvdG9j
b2wtdjEuMi1wcy0yMDE3MDQxMS5odG1sI2ZyYW1pbmcKKyAgICBjYWxsYmFjayhtX2Nvbm5lY3Rp
b24tPnRyYW5zYWN0KFdURk1vdmUoZGF0YSkpKTsKK30KKworLy8gUmV0dXJuIHRoZSByZXNwb25z
ZSBhc3luYyB0byBtYXRjaCB0aGUgSElEIGJlaGF2aW91ciwgc3VjaCB0aGF0IG5mYyBjb3VsZCBm
aXQgaW50byB0aGUgY3VycmVudCBpbmZyYS4KK3ZvaWQgQ3RhcE5mY0RyaXZlcjo6cmVzcG9uZEFz
eW5jKFJlc3BvbnNlQ2FsbGJhY2smJiBjYWxsYmFjaywgVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9u
c2UpIGNvbnN0Cit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXNwb25zZSkpOworICAgIH0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBOZmNEcml2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcE5mY0RyaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMDNhODAxMDgzMGU1NDYyN2FlMWQ5
ZjE0NWEwNjNkZWJiN2Q5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuaApAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
CisjaW5jbHVkZSAiQ3RhcERyaXZlci5oIgorI2luY2x1ZGUgIk5mY0Nvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgdGhlIENUQVAgTkZDIHByb3RvY29sOgorLy8gaHR0cHM6Ly9m
aWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9maWRvLWNsaWVudC10
by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRtbCNuZmMKK2NsYXNz
IEN0YXBOZmNEcml2ZXIgOiBwdWJsaWMgQ3RhcERyaXZlciB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgQ3RhcE5mY0RyaXZlcihVbmlxdWVSZWY8TmZjQ29ubmVjdGlvbj4mJik7CisKKyAgICB2b2lk
IHRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCByZXNwb25kQXN5bmMoUmVzcG9uc2VDYWxsYmFjayYm
LCBWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgY29uc3Q7CisKKyAgICBVbmlxdWVSZWY8TmZj
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MTg5ZDdjZjhjZGMzOTE0M2I1M2JlOTllNmVkOGI4ZTBlMjg4YzU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9GaWRvU2VydmljZS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWRvU2VydmljZS5oIgorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkN0YXBBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSAiQ3Rh
cERyaXZlci5oIgorI2luY2x1ZGUgIlUyZkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0ZpZG9TZXJ2aWNlOjpGaWRvU2VydmljZShP
YnNlcnZlciYgb2JzZXJ2ZXIpCisgICAgOiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZShv
YnNlcnZlcikKK3sKK30KKwordm9pZCBGaWRvU2VydmljZTo6Z2V0SW5mbyhzdGQ6OnVuaXF1ZV9w
dHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIpCit7CisgICAgLy8gR2V0IGF1dGhlbnRpY2F0b3IgaW5m
byBmcm9tIHRoZSBkZXZpY2UuCisgICAgZHJpdmVyLT50cmFuc2FjdChlbmNvZGVFbXB0eUF1dGhl
bnRpY2F0b3JSZXF1ZXN0KEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRJbmZv
KSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwdHIgPSBkcml2ZXIuZ2V0KCldKFZl
Y3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHdlYWtUaGlzLT5jb250aW51ZUFmdGVyR2V0SW5mbyhwdHIsIFdURk1vdmUocmVzcG9uc2Up
KTsKKyAgICB9KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZHJpdmVycy5hZGQoV1RGTW92ZShk
cml2ZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIEZpZG9TZXJ2aWNlOjpjb250aW51ZUFmdGVyR2V0SW5mbyhDdGFwRHJp
dmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQoreworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDdGFwRHJpdmVyPiBkcml2ZXIgPSBtX2RyaXZlcnMudGFrZShwdHIpOworICAgIGlmICgh
ZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBpbmZvID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UocmVzcG9uc2Up
OworICAgIGlmIChpbmZvICYmIGluZm8tPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246
OmtDdGFwKSAhPSBpbmZvLT52ZXJzaW9ucygpLmVuZCgpKSB7CisgICAgICAgIG9ic2VydmVyKCkt
PmF1dGhlbnRpY2F0b3JBZGRlZChDdGFwQXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURk1vdmUoZHJp
dmVyKSwgV1RGTW92ZSgqaW5mbykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBMT0df
RVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBnZXQgaW5mbyByZXNwb25zZS4iKTsKKyAgICBk
cml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVyc2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIo
KS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRy
aXZlcikpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9GaWRvU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzNkOGRiN2Q5
MzllMDQzYTVkZTlmM2M5ODUzNzZmNTc4ZWUwNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmgiCisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEN0YXBEcml2ZXI7CisKK2NsYXNzIEZpZG9TZXJ2
aWNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBGaWRvU2VydmljZShPYnNlcnZlciYpOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBnZXRJbmZvKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGNvbnRpbnVlQWZ0ZXJHZXRJbmZvKEN0YXBEcml2ZXIqIHB0ciwgVmVjdG9yPHVpbnQ4
X3Q+JiYgaW5mbyk7CisKKyAgICAvLyBLZWVwaW5nIGRyaXZlcnMgYWxpdmUgd2hlbiB0aGV5IGFy
ZSBnZXR0aW5nIGluZm8gZnJvbSBkZXZpY2VzLgorICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRy
PEN0YXBEcml2ZXI+PiBtX2RyaXZlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNh
dG9yLmNwcAppbmRleCBhNTg1NjcyZmQyYzljMzFjZWVjNDM2MTZmYzcwNTc4NTU3NWFhNTc3Li40
ZDEyYTk2NWQ3ZjAxOWEzYTUzYjlmZDI2ZWM2Y2EzZmUyNjRiMWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vVTJmQXV0aGVudGljYXRvci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJVMmZBdXRoZW50aWNhdG9yLmgiCiAKLSNpZiBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBQTEFURk9STShNQUMpCisjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUg
IkN0YXBEcml2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwZHVSZXNwb25zZS5oPgpAQCAtMjM4
LDQgKzIzOCw0IEBAIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFm
dGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5o
CmluZGV4IDlhNDc3MzY4NmY2MDdjMGJhNDBkY2NjN2Y1ZGY4MTEwNWM1NTU5OWMuLmQ5MDU1Y2Qw
NTkwMTQxNWFhZDUzZDIxOWVhMTNmOWNlZjQ2N2E5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0
aGVudGljYXRvci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5B
QkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAg
LTc5LDQgKzc5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IDMxYjdkODMwZDMwN2ZhZDg1YzI2ZDU4YzBlZjZhNzJiMjM1ODkzMmYuLjI4
MzAzOGQzNGVlMzg3NGRjNDYzOTk2MDFjYjA5NDliNzY3Y2FmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDgsNiArNDgsNyBAQAog
I2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNpbXBvcnQgIlVJS2l0U1BJ
LmgiCiAjaW1wb3J0ICJVc2VyRGF0YS5oIgorI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgogI2lt
cG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJWaWV3VXBkYXRl
RGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJJbnRlcm5hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMDRhMThjMzRiZmUyYTlhYWI5MmVhZTA2Yjg3MmU0OWJhYTk0ODY3OS4u
ZWViMDA2NjAxNzNjNDk3Y2QxYTJlNTUwNzhiOTE4ZjgxZjFhZmY3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDM1LDYgKzEwMzUs
MTAgQEAKIAkJNTNCQTQ3RDExREMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUVCNTQ3
MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggKi87IH07CiAJCTUzQ0ZC
QkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQ0ZCQkM3MjIyNEQxQjAwMDI2
NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLzsgfTsKIAkJNTcwQUI4RjMyMEFFM0JE
NzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEYyMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQ
cm94eVN0b3JlLmggKi87IH07CisJCTU3MERBQUFFMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBE
QUFBQzIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oICovOyB9OworCQk1NzBEQUFDMjIz
MDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nv
bm5lY3Rpb24uaCAqLzsgfTsKKwkJNTcwREFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFk
ZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRl
bGVnYXRlLmggKi87IH07CisJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJp
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBE
QUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovOyB9OwogCQk1NzJGRDQ0
MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1
Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CiAJ
CTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VCNzIxODExRDlBMDAzN0Y5
MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwogCQk1NzU5N0VCRDIxODE4NDkwMDAzN0Y5MjQg
LyogQ3RhcEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3NTk3RUJCMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRv
ci5oICovOyB9OwpAQCAtMTA0Myw2ICsxMDQ3LDExIEBACiAJCTU3OERDMjk4MjE1NUEwMDIwMDc0
RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBM
b2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCAqLzsgfTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAw
NTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3QUM4RjRFMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9u
LmggKi87IH07CiAJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0
ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkgLyogQ2xpZW50Q2Vy
dGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovOyB9OworCQk1N0I4MjY0MTIz
MDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MDIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZp
ZWxkU1BJLmggKi87IH07CisJCTU3QjgyNjQ0MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCODI2NDIyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLmggKi87IH07CisJ
CTU3QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjgyNjQzMjMwNEYxNDAw
MEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSAqLzsgfTsKKwkJNTdCODI2NDgyMzA1MEM1
MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0NjIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2Uu
aCAqLzsgfTsKKwkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0QTIz
MDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLzsgfTsKIAkJNTdCQkVBNkQyMkJD
MEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QkJFQTZDMjJCQzBCRkUwMDI3Mzk5
NSAvKiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggKi87IH07CiAJCTU3RENFRDZFMjE0MkVF
NUUwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VE
NkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTU3RENFRDZGMjE0MkVFNjMwMDE2Qjg0NyAvKiBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkEyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmggKi87IH07CkBAIC0zNDczLDYgKzM0ODIsMTUg
QEAKIAkJNTcwQUI5MDAyMEIyNTE3NDAwQjhCRTg3IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcwQUI5MDMy
MEIyNTQxQzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWNLZXlQcm94eVN0b3JlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NzBCNzNDRjIzMDIzNkREMDBGQUVDNTMgLyogQ3RhcERyaXZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdGFwRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3MERBQUFDMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5mY1NlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQUQy
MzAyNkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZmNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFCMDIzMDI3
M0QyMDBFOEZDMDQgLyogTmVhckZpZWxkLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTmVh
ckZpZWxkLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtz
L05lYXJGaWVsZC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk1NzBEQUFD
MDIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZmND
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUMxMjMwMzcz
MDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmZj
Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzQyMzAz
N0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1NzBEQUFDNTIzMDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM4MjMwMzg1RkQwMEU4RkMwNCAv
KiBDdGFwTmZjRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzkyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBO
ZmNEcml2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3RhcE5mY0RyaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkZENDQxMjIyNjVDRTIwMEExRUNDMyAvKiBXZWJW
aWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTA3
NUE3MjBBQjc2MzYwMDY5M0VBOSAvKiBXZWJDcmVkZW50aWFsTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ3JlZGVudGlhbE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yazsgcGF0
aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtMzQ5Nyw2ICszNTE1LDEzIEBACiAJCTU3
QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSGlkQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdCNEI0NUQyMEI1MDRBQjAwRDRBRDc5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVFMjBC
NTA0QUIwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3Rh
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaWVudENlcnRpZmljYXRl
QXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZWFyRmllbGRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2
NDIyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5lYXJGaWVsZFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3Qjgy
NjQzMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE5lYXJGaWVsZFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1N0I4MjY0NjIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlkb1NlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2
NDcyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpZG9TZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2NEEy
MzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tO
ZmNTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjRCMjMwNjAz
QzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1v
Y2tOZmNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0JCRUE2QzIy
QkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1N0RDRUQ2QjIxNDJFQUUyMDAxNkI4NDcgLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC02MTkzLDYgKzYyMTgsNyBAQAogCQkJCUExRkI2ODI2MUY2RTUx
QzEwMEM0M0Y5RiAvKiBDcmFzaFJlcG9ydGVyQ2xpZW50U1BJLmggKi8sCiAJCQkJNTdEQ0VEQUEy
MTRCOUI0MzAwMTZCODQ3IC8qIERldmljZUlkZW50aXR5U1BJLmggKi8sCiAJCQkJMkRBQURBOEUy
Mjk4QzIxMDAwRTM2QjBDIC8qIERldmljZU1hbmFnZW1lbnRTUEkuaCAqLywKKwkJCQk1N0I4MjY0
MDIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggKi8sCiAJCQkJMzc1NEQ1NDQxQjNB
MjlGRDAwM0E0QzdGIC8qIE5TSW52b2NhdGlvblNQSS5oICovLAogCQkJCTM3QjQ3RTJDMUQ2NERC
NzYwMDVGNEVGRiAvKiBvYmpjU1BJLmggKi8sCiAJCQkJMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQz
IC8qIFNhZmVCcm93c2luZ1NQSS5oICovLApAQCAtNjk1OSw2ICs2OTg1LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3
IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLAorCQkJCTU3MERBQUIwMjMwMjcz
RDIwMEU4RkMwNCAvKiBOZWFyRmllbGQuZnJhbWV3b3JrICovLAogCQkJKTsKIAkJCW5hbWUgPSBG
cmFtZXdvcmtzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTY5NzEsNiArNjk5OCwx
MCBAQAogCQkJCTU3MEI3M0NGMjMwMjM2REQwMEZBRUM1MyAvKiBDdGFwRHJpdmVyLmggKi8sCiAJ
CQkJNTc1OTdFQzAyMTgxOEJFMjAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuY3BwICovLAogCQkJ
CTU3NTk3RUI3MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmggKi8sCisJCQkJNTcw
REFBQzkyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuY3BwICovLAorCQkJCTU3MERB
QUM4MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggKi8sCisJCQkJNTdCODI2NDcy
MzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNwcCAqLywKKwkJCQk1N0I4MjY0NjIzMDUw
QzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCAqLywKIAkJCQk1N0VCMkUzOTIxRTE5ODNFMDBC
ODlDREYgLyogVTJmQXV0aGVudGljYXRvci5jcHAgKi8sCiAJCQkJNTdFQjJFMzgyMUUxOTgzRTAw
Qjg5Q0RGIC8qIFUyZkF1dGhlbnRpY2F0b3IuaCAqLywKIAkJCSk7CkBAIC03MDMyLDYgKzcwNjMs
MTQgQEAKIAkJCQk1N0RDRURBODIxNEE1NjhCMDAxNkI4NDcgLyogTG9jYWxDb25uZWN0aW9uLm1t
ICovLAogCQkJCTU3RENFRDlBMjE0OEIwODMwMDE2Qjg0NyAvKiBMb2NhbFNlcnZpY2UuaCAqLywK
IAkJCQk1N0RDRURBMDIxNDhGQTBGMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLm1tICovLAorCQkJ
CTU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovLAorCQkJ
CTU3QjgyNjQzMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSAqLywKKwkJ
CQk1NzBEQUFDMDIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5oICovLAorCQkJCTU3
MERBQUMxMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLm1tICovLAorCQkJCTU3MERB
QUFDMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLmggKi8sCisJCQkJNTcwREFBQUQyMzAy
NkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2UubW0gKi8sCisJCQkJNTcwREFBQzQyMzAzN0Y3RTAw
RThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCAqLywKKwkJCQk1NzBEQUFDNTIz
MDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzA0OSw2
ICs3MDg4LDggQEAKIAkJCQk1N0RDRURDNjIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29u
bmVjdGlvbi5tbSAqLywKIAkJCQk1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2Fs
U2VydmljZS5oICovLAogCQkJCTU3RENFREMyMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxT
ZXJ2aWNlLm1tICovLAorCQkJCTU3QjgyNjRBMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2Vy
dmljZS5oICovLAorCQkJCTU3QjgyNjRCMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2Vydmlj
ZS5tbSAqLywKIAkJCQk1N0RDRURCRTIxNENBMDFCMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBNb2NrOwpAQCAtOTM1
NSw2ICs5Mzk2LDcgQEAKIAkJCQlBMUZCNjgyNzFGNkU1MUMxMDBDNDNGOUYgLyogQ3Jhc2hSZXBv
cnRlckNsaWVudFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQkQyMTgxODQ5MDAwMzdG
OTI0IC8qIEN0YXBBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzU5N0VCOTIx
ODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcw
REFBQ0EyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1NUY5MTcxMUM1OTY3NkUwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5j
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTYxMEY0MzdEMTAwNThDMTVBIC8qIERlY29k
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTM4Niw2ICs5NDI4LDcgQEAKIAkJCQlCQzAzMkRBODEw
RjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUx
Mzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUE1NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1N0I4MjY0ODIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFGNDEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0QTU5MThCODExNzQwMDdCRENCNiAv
KiBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk0NzQsNiAr
OTUxNyw3IEBACiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNh
dG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3
IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0
RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RENFREJGMjE0RjBEQ0YwMDE2Qjg0NyAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEUzQUE3QzEyMDlFODNDMDBBNDlE
MDEgLyogTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDUwMzY2QjFCQ0RFMTc5MDBFMjBC
QjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTk0ODEsNiAr
OTUyNSw4IEBACiAJCQkJMUFEQ0I4NkIxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rp
b25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MDIyQjM1MTU4MDA4RDBFOEIgLyog
TmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QkMzREY2MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU3QjgyNjQ0MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NDEyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RkJBMkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNj
YXBlQnJvd3NlckZ1bmNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZGQkQyODExRTY5QkMyMDBE
QjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5QzU2MTJC
ODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC05NTI2LDYgKzk1NzIsOCBAQAogCQkJCTVDMjBDQkEwMUJCMUVDRDgwMDg5NUJCMSAvKiBOZXR3
b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTMyMTU5NTUxREJBRTcyOTAwNTRBQTND
IC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNzkxNUI5MjI1
NzA0NkYwMEQ2Rjk3RSAvKiBOZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTcwREFBQzIyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU3MERBQUFFMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUEyRUM1NjE0ODk5QzA5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzEyNjFGMTQ4RkY4MkMwMEJB
MkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxQTJFQzUyMTQ4OTk4MTkwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE1NCw2ICsxMDIw
Miw3IEBACiAJCQkJMUExQjBFQjgxOEE0MjRDRDAwMzg0ODFBIC8qIFdLTmF2aWdhdGlvblJlc3Bv
bnNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTEzMjEyMTkxRDU5MjQwMDlDMTQ4
OSAvKiBXS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
M0E2NURGMUE3QzNBN0QwMENBQzYzNyAvKiBXS05hdmlnYXRpb25SZXNwb25zZVJlZi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTcwREFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNz
aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTc5MTQ3NDNFNkYwMEE4RkJC
MiAvKiBXS05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE4QkUxNzExNDc0M0RC
MTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzFBMkVDNzQxNDhENTlDQTAwODEwRDcxIC8qIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTExMzgsNiArMTExODcsNyBAQAogCQkJCTJEOTJBNzgx
MjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MkE3ODIyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VTZW5kZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0EyMTJCNkE2MTAwRjQ5M0ZEIC8qIE1vZHVsZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29m
dExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0MzIxMkNGOUYwMDAxMjhBRkQgLyog
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDQyMTJD
RjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTJBNzk2MjEyQjZBREEwMEY0OTNGRCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAxNjY3Yzg2YjJjNDU3MGUyMGU0N2ZjYzU0NTM0ZTM3ZDBhNzUyOTVmLi5hNDRjOTg0ZGU2
NTYyMjgyNGQwYjRiZDMxODg2YmI4ZDBmMjgzYzAwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDgtMjAgIEpp
ZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1
cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3JzIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDMzNTQyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKToKKyAgICAgICAgU2V0dXAgTkZDIG1vY2sgdGVzdGluZyBjb25maWd1cmF0aW9uLgorCiAy
MDE5LTA4LTIwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICByZXN1bHRzLndlYmtpdC5vcmc6IEFkZCBUb29sVGlwcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZmExYmMxZGRi
YjcxNmY3YjM3YmQwNzc3ZGEwMDE2ZGJlMmViYjA0Yy4uMDlkYjUxZmQ4MTYyMWE4NWIwNmU4Zjgz
MzAzNDBkYjU3ODdmMDhhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNzE2LDYgKzI3MTYsNzEgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKEpTVmFsdWVS
ZWYgY29uZmlndXJhdGlvblYKICAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3SGlkS2V5cy5kYXRhKCksIHJhd0hpZFZhbHVlcy5k
YXRhKCksIHJhd0hpZEtleXMuc2l6ZSgpKSkpOwogICAgIH0KIAorICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBuZmNQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJuZmMiKSk7CisgICAgSlNWYWx1ZVJlZiBuZmNWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgY29uZmlndXJhdGlvbiwgbmZjUHJvcGVydHlOYW1lLmdldCgpLCAwKTsK
KyAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBuZmNWYWx1ZSkgJiYgIUpTVmFs
dWVJc051bGwoY29udGV4dCwgbmZjVmFsdWUpKSB7CisgICAgICAgIGlmICghSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHQsIG5mY1ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgSlNP
YmplY3RSZWYgbmZjID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIG5mY1ZhbHVlLCAwKTsKKwor
ICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZXJyb3JQcm9wZXJ0eU5hbWUoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlcnJvciIpKTsKKyAgICAgICAgSlNWYWx1
ZVJlZiBlcnJvclZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBuZmMsIGVycm9y
UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29u
dGV4dCwgZXJyb3JWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVmVjdG9y
PFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4gbmZjS2V5czsKKyAgICAgICAgVmVjdG9yPFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4+IG5mY1ZhbHVlczsKKyAgICAgICAgbmZjS2V5cy5hcHBlbmQoYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSkpOworICAgICAgICBu
ZmNWYWx1ZXMuYXBwZW5kKHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBl
cnJvclZhbHVlLCAwKSkuZ2V0KCkpKTsKKworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInBheWxvYWRCYXNlNjQiKSk7CisgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJh
c2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBuZmMsIHBheWxvYWRCYXNl
NjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5l
ZChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQs
IHBheWxvYWRCYXNlNjRWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQXJyYXko
Y29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHBheWxvYWRCYXNlNjQgPSBKU1ZhbHVlVG9PYmplY3Qo
Y29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgICAgIHN0YXRp
YyBhdXRvIGxlbmd0aFByb3BlcnR5ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NExlbmd0
aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBsZW5n
dGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc051
bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0cyA9IGFkb3B0V0soV0tN
dXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRMZW5n
dGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBwYXlsb2Fk
QmFzZTY0TGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGF5bG9hZEJhc2U2NExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBwYXlsb2FkQmFzZTY0LCBpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBpZiAo
IUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShw
YXlsb2FkQmFzZTY0cy5nZXQoKSwgdG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKS5nZXQoKSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkpOworICAgICAgICAgICAgbmZjVmFsdWVzLmFw
cGVuZChwYXlsb2FkQmFzZTY0cyk7CisgICAgICAgIH0KKworICAgICAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gbXVsdGlwbGVUYWdzUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygibXVsdGlwbGVUYWdzIikpOworICAgICAgICBKU1ZhbHVlUmVmIG11
bHRpcGxlVGFnc1ZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBuZmMsIG11bHRp
cGxlVGFnc1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzVW5k
ZWZpbmVkKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250
ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9v
bGVhbihjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgYm9vbCBtdWx0aXBsZVRhZ3MgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRl
eHQsIG11bHRpcGxlVGFnc1ZhbHVlKTsKKyAgICAgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk11bHRpcGxlVGFncyIpKSk7CisgICAg
ICAgICAgICBuZmNWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG11bHRpcGxl
VGFncykpLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4g
cmF3TmZjS2V5czsKKyAgICAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3TmZjVmFsdWVzOworICAg
ICAgICByYXdOZmNLZXlzLnJlc2l6ZShuZmNLZXlzLnNpemUoKSk7CisgICAgICAgIHJhd05mY1Zh
bHVlcy5yZXNpemUobmZjVmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbmZjS2V5cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgcmF3TmZjS2V5c1tpXSA9
IG5mY0tleXNbaV0uZ2V0KCk7CisgICAgICAgICAgICByYXdOZmNWYWx1ZXNbaV0gPSBuZmNWYWx1
ZXNbaV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBjb25maWd1cmF0aW9uS2V5cy5hcHBl
bmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTmZjIikpKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUo
cmF3TmZjS2V5cy5kYXRhKCksIHJhd05mY1ZhbHVlcy5kYXRhKCksIHJhd05mY0tleXMuc2l6ZSgp
KSkpOworICAgIH0KKwogICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3Q29uZmlndXJhdGlvbktl
eXM7CiAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3Q29uZmlndXJhdGlvblZhbHVlczsKICAgICBy
YXdDb25maWd1cmF0aW9uS2V5cy5yZXNpemUoY29uZmlndXJhdGlvbktleXMuc2l6ZSgpKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBkNjlhNGViMzYxZjdjYjQ5YmNkMWM4NjFmMmZhYjM2MGJjMjNhMjg5Li42ZDU2ZjNkODRm
N2UxZTNhY2UwMDgyOTQ2NDUxNzY0ZDY2N2NkNDJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIw
MTktMDgtMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3JzIGZvciBpT1MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODYyNAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1u
ZmMtZmFpbHVyZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlk
Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgIFRo
aXMgcGF0Y2ggcmVwbGFjZXMgdGhlICJsb2NhbCIga2V5d29yZCB3aXRoICJoaWQiLgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0
dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nl
c3MtbmZjLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy91dGlsLmpzOgorCiAyMDE5LTA4LTIwICBSdXNzZWxsIEVwc3RlaW4gIDxyZXBzdGVp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRpbmcgRXhwZWN0YXRpb25zIGZvciBNdWx0aXBs
ZSBOZXdseSBQYXNzaW5nIFRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZDA1YjNjZGMyMzcwMjQ3ZTZlYzgwOGFhYzQ1NDA1MDY4NzM3ZWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFp
bHVyZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgQ1RBUCBORkMg
d2l0aCBlbXB0eSBhcGR1IHJlc3BvbnNlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQ
QVNTIENUQVAgTkZDIHdpdGggd3JvbmcgZGF0YSBlcnJvciBpbiBhIG1vY2sgbmZjIGF1dGhlbnRp
Y2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFw
LW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9j
dGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYjFiOGFlNDY4ODdmNWZi
YTViMTMzYjg4MmY0ZTY0OWQ4YWQyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDM0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBDVEFQ
IE5GQyBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0bGU+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGNv
bnN0IGRlZmF1bHRPcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
IHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBs
ZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0Olt0
ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgIiJdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJDVEFQ
IE5GQyB3aXRoIGVtcHR5IGFwZHUgcmVzcG9uc2UgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBw
YXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZh
dWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJDVEFQIE5GQyB3
aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MjUwOThhZjczNTIw
MWExYTc4NzI2MWUwMDliMWViZWVlZmM3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
bmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBubyB0
YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdGFnIHR5cGUgaW4gYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBubyBj
b25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG51bGwgdmVyc2lvbiBpbiBhIG1vY2sgbmZjIGF1
dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHdyb25nIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4MjQ4NTczM2M1YWYzNzIzODMyMWI2ZjI0YjIyMDM0ZGZlZDRiNzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNDAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1
dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5l
ZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibm8tdGFncyIgfSB9
KTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJK
b2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50
OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDog
MTAsCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNh
dG9yQXR0YWNobWVudDogInBsYXRmb3JtIiB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0
IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQg
b3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5v
IHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVz
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBl
cnJvcjogIndyb25nLXRhZy10eXBlIiB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBlIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAg
dGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby1jb25uZWN0aW9ucyIgfSB9
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBubyBj
b25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAor
ICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZj
OiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbIF0gfSB9KTsK
KyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBudWxsIHZl
cnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVz
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVzc2Fn
ZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggd3JvbmcgdmVyc2lvbiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3Iu
Iik7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMTJkZTkzMGU0
ZGI2NjAxMjczNzdmOTY4Y2VhY2Y4MGU1MWFkZmE2Li44MDcyNTFmODY5NWRiODEyY2U0Njc0NzUy
OWFmNDE4MDdiNzNhYWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwx
MiBAQAogCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11
bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Ny
b3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBm
YWxzZSB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcg
fSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdkaXNjb3VyYWdlZCcgfSBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11
bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9z
cy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlcXVpcmVSZXNpZGVudEtleSB7IGZhbHNl
IH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcgfSBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiBQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdvIGNvbnNlY3V0aXZlIHJl
cXVlc3RzLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBub25l
IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBub25l
IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhp
ZC5odHRwcy5odG1sCmluZGV4IGExNDdlZjM3ZDUzOTNkZWI5Njk4NjVmNDBiMWVlYzc1ZTk1Yzdh
NWIuLmY1Mjk2ODc0OGIyMGQxYmJlMGI5ZjM2YzRiODRmMGI0ZThhY2ZmNDkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
QEAgLTksNDEgKzksNiBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAKLSAgICBmdW5jdGlv
biBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCi0gICAg
ewotICAgICAgICAvLyBDaGVjayByZXNwb25zZQotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRD
cmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5
cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4
QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlh
bElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNy
ZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3Jl
YXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5
NDQzIn0nKTsKLSAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGllbnRF
eHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwotCi0gICAgICAgIC8vIENoZWNrIGF0dGVzdGF0
aW9uCi0gICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVu
dGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAgIGlmIChpc05vbmVBdHRl
c3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10
LCAibm9uZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVz
dGF0aW9uT2JqZWN0LmZtdCwgInBhY2tlZCIpOwotICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQot
ICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0
LmF1dGhEYXRhKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhE
YXRhLnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1ODBm
MGI0ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0
YS5mbGFncywgNjUpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDc4
KTsKLSAgICAgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9uKQotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgImY4YTAxMWYzOGMwYTRkMTU4
MDA2MTcxMTFmOWVkYzdkIik7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEu
Y3JlZGVudGlhbElELCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkp
OwotICAgICAgICAvLyBDaGVjayBwYWNrZWQgYXR0ZXN0YXRpb24KLSAgICAgICAgYXNzZXJ0X3Ry
dWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7Ci0gICAgICAgIGlmIChpc05v
bmVBdHRlc3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKGF0dGVzdGF0
aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LmFsZywgLTcpOwotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5ndGgsIDEp
OwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBj
b25zdCBvcHRpb25zID0gewogICAgICAgICAgICAgcHVibGljS2V5OiB7CkBAIC02Miw5ICsyNyw5
IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVz
dWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1
bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAg
cHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtODUsOSAr
NTAsOSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFs
UmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3NzLXBs
YXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24g
eyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAg
ICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMTA4
LDkgKzczLDkgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAg
Y2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVu
dGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfSBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTEzMSw5ICs5Niw5IEBACiAgICAgICAgIH07CiAK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwor
ICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAg
ICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHVzZXJWZXJpZmljYXRpb24geyAncHJlZmVycmVkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHVzZXJWZXJpZmljYXRpb24geyAncHJlZmVycmVkJyB9IGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKQEAgLTE1NCw5ICsxMTksOSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNr
Q3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9u
IHsgJ2Rpc2NvdXJhZ2VkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRp
b24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAg
ICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMTc3
LDkgKzE0Miw5IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAg
IGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRl
bnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
ICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0y
MDAsNyArMTY1LDcgQEAKIAogICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlRoaXMgcmVxdWVz
dCBoYXMgYmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsK
LSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tD
dGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSBy
ZXF1ZXN0cy4iKTsKIApAQCAtMjIzLDkgKzE4OCw5IEBACiAgICAgICAgIH07CiAKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAg
ICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0p
OwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0
ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0yNDYsOSArMjExLDkgQEAKICAgICAgICAgfTsKIAog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFs
c2UpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlh
bCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
ZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAg
IHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTI2OSw3
ICsyMzQsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CisgICAgICAgICAgICBjaGVja0N0YXBNYWtl
Q3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0pOwotICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0
aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZjVlODMxMmUwMmYzYmJmOTU4YTI4YjQzNzFkZWRiZWUzMDVmMzdmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBt
aW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsg
J2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbXVsdGlwbGUgdGFncyBpbiBhIG1v
Y2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGQyMmU1NDRkNGFiOTUwOTk1MjU3ZmE2YjllMGU1ZjAyYzg2MTU1ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDEwNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KyAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlk
ZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRl
c3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworCisgICAgcHJvbWlzZV90ZXN0KHQg
PT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2Fs
aG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1h
a2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAg
ICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNh
dG9yQXR0YWNobWVudDogImNyb3NzLXBsYXRmb3JtIiB9LAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Cisg
ICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKKyAg
ICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
YXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbmZj
IGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVS
TC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAg
IHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAg
ICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNj
ZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldElu
Zm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSwgbXVs
dGlwbGVUYWdzOiB0cnVlIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVj
a0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbXVsdGlwbGUgdGFncyBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0
IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAg
aWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFzZTY0
LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJl
Z2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVj
a1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBVMkYgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJm
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggOGZhMWMzYzQ4ZmE5
NWM5YzNiMmIwODg4NjFjYjg4OWUwZmMxY2M2OS4uZjE2ZTUwMGRmYTc2NmIyN2NmNWNjNTdjYjdk
OTRkZDc0MjI4MmE2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApAQCAtNSwzNiArNSw2IEBACiA8c2NyaXB0IHNyYz0i
Li9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMv
Y2Jvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNy
ZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIC8vIENo
ZWNrIHJlc3BvbnNlCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNl
KGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2
NCkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXkn
KTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50aWFs
LnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKLSAg
ICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25z
ZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVuZ2Ui
OiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAgICAg
ICBhc3NlcnRfbm90X2V4aXN0cyhjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMo
KSwgImFwcGlkIik7Ci0KLSAgICAgICAgLy8gQ2hlY2sgYXR0ZXN0YXRpb24KLSAgICAgICAgY29u
c3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShjcmVkZW50aWFsLnJlc3BvbnNlLmF0
dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9uKQotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJub25lIik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10
LCAiZmlkby11MmYiKTsKLSAgICAgICAgLy8gQ2hlY2sgYXV0aERhdGEKLSAgICAgICAgY29uc3Qg
YXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCks
ICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNi
YTgzMWQ5NzYzIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY1KTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOwotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGF1
dGhEYXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRC
YXNlNjQpKTsKLSAgICAgICAgLy8gQ2hlY2sgZmlkby11MmYgYXR0ZXN0YXRpb24KLSAgICAgICAg
YXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7Ci0gICAgICAg
IGlmIChpc05vbmVBdHRlc3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWMubGVuZ3RoLCAx
KTsKLSAgICB9Ci0KICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKQEAgLTU1LDcgKzI1LDcgQEAKICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsK
LSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tV
MmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGlu
IGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODAsNyArNTAsNyBAQAogICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJh
c2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVn
aXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNr
UmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJl
c3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1MmYgYXV0
aGVudGljYXRvci4iKTsKIApAQCAtMTA1LDcgKzc1LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAg
ICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNsdWRlQ3Jl
ZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAyIik7CiAKQEAgLTEyOSw3ICs5
OSw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBj
aGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKICAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0ZXN0IG9mIHVzZXIg
cHJlc2VuY2UgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xNTQsNyArMTI0
LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAg
ICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAg
fSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBh
dHRlc3RhdGlvbiBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTE3OSw3ICsx
NDksNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2Up
OworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBm
YWxzZSk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRv
ci4iKTsKIApAQCAtMjA0LDcgKzE3NCw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3Vs
dChjcmVkZW50aWFsLCBmYWxzZSk7CisgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFs
UmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayB1MmYgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5m
Yy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMDhhMDQ4NDQyYTg0MGUwZDFkOTM0OTc2YTk3MzZhOTk3OTEwMDJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjY0ODc0ZmZmNWQ4MWZl
N2I2MTQ0MzlmNzI2MjlhOTlkMDAyNTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5o
dHRwcy5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBB
dXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIGZhaWx1cmUg
Y2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2Nr
IGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZl
cmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50
aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQg
aW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggMzQyMWM3
Nzg5OTAxOGRhZWUwZmMxMTRhOGNmMWI5YjllZTExNDJhNi4uZDliMjJiNDJhOWQ3NjIwMDIxNDEy
MTBjNDVkNjhjZmE2ZDFiOTUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtOCwyMyArOCw2IEBACiAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VC
YXNlNjRdIH0gfSk7CiAKLSAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQotICAg
IHsKLSAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRD
cmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5
cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4
QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlh
bElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNy
ZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uZ2V0
IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQz
In0nKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5k
bGUsIG51bGwpOwotICAgICAgICBhc3NlcnRfbm90X2V4aXN0cyhjcmVkZW50aWFsLmdldENsaWVu
dEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlkIik7Ci0KLSAgICAgICAgLy8gQ2hlY2sgYXV0aERh
dGEKLSAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJh
eShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhKSk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNjN2ZiOTY3
OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVlMWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1YWQ4Iik7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDgwKTsKLSAgICB9Ci0KICAgICBwcm9taXNlX3Rl
c3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKQEAgLTM0LDcgKzE3LDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrQ3RhcEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7
CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRp
b25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNTAsNyArMzMsNyBAQAog
ICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9u
UmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjQsNyArNDcsNyBAQAogICAgICAgICB9OwogCiAg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7
CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRp
YWwpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgcHJlZmVycmVkIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOwogCkBAIC03OCw3ICs2MSw3IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAg
ICAgIHJldHVybiBjaGVja0N0YXBHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAg
ICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHVzZXJW
ZXJpZmljYXRpb24geyBkaXNjb3VyYWdlZCB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIApAQCAtOTUsNyArNzgsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1
cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaXhlZCBvcHRpb25z
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTA5LDcgKzkyLDcgQEAKIAog
ICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiB2b2lkZWQgYnkg
YSBuZXcgcmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja0N0YXBHZXRBc3Nl
cnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cy4iKTsKIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nl
c3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjY4YjlmZDhlNTZmZDQ2MGFl
YTFjNzA4YWFhYTBiY2U3MGEwZTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbZ2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNh
dG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBVMkYgaW4gYSBt
b2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMjFjOTAwMTg1NTYyNjE5
OWZjNzQ5MWQyZWUwNTRmNjc0MjkyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0
dHBzLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1
dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gc3VjY2VzcyBj
YXNlcyB3aXRoIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVz
b3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICAvLyBEZWZhdWx0IG1vY2sg
Y29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVy
ZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsg
ZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2
NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdlQXBk
dUJhc2U2NF0gfSB9KTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHRp
bWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Cisg
ICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwp
OworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRC
YXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNpb25CYXNl
NjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
U2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBVMkYgaW4gYSBtb2NrIG5mYyBh
dXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggYzg1NzExNGY5NzdmNDliNmUzZjUz
ZTQ0OGI3MTg1YmFhMDFhZDNhZC4uOTViMmQxYjJlMTk0ZWYyZDNlODFjNDg2OWU5NDc1ZmNmMGQ0
M2Q3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYu
aHR0cHMuaHRtbApAQCAtNCwzMSArNCw2IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGNvbnN0IGRlZmF1bHRBcHBJREhhc2ggPSAi
YzI2NzFiNmViOTIzMzE5N2Q1ZjJiMTI4OGE1NWJhNGYwODYwZjk2ZjcxOTliYmEzMmZlNmRhN2Mz
ZjBmMzFlNSI7Ci0KLSAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBpc0FwcElE
ID0gZmFsc2UsIGFwcElESGFzaCA9IGRlZmF1bHRBcHBJREhhc2gpCi0gICAgewotICAgICAgICAv
LyBDaGVjayByZXNwb25kCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBh
cnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJh
c2U2NCkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1r
ZXknKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50
aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNw
b25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVuZ2Ui
OiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwgbnVsbCk7Ci0g
ICAgICAgIGlmICghaXNBcHBJRCkKLSAgICAgICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRl
bnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25S
ZXN1bHRzKCkuYXBwaWQpOwotCi0gICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAgIGNv
bnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5y
ZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSkpOwotICAgICAgICBpZiAoIWlzQXBwSUQpCi0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gp
LCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2Yz
YmE4MzFkOTc2MyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5
dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCBhcHBJREhhc2gpOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhh
dXRoRGF0YS5jb3VudGVyLCA1OSk7Ci0gICAgfQotCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewog
ICAgICAgICBjb25zdCBvcHRpb25zID0gewogICAgICAgICAgICAgcHVibGljS2V5OiB7CkBAIC00
MSw3ICsxNiw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFs
KTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
NTcsNyArMzIsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtb3JlIGFsbG93IGNy
ZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNzMsNyArNDgs
NyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0ZXN0IG9mIHVzZXIg
cHJlc2VuY2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC05MSw3ICs2Niw3
IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAg
ICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAg
ICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZW1wdHkg
ZXh0ZW5zaW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEwOCw3ICs4
Myw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAg
ICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggc2Ft
ZSBzaXRlIEFwcElEIGJ1dCBub3QgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKQEAgLTEyNSw3ICsxMDAsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4gewotICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUpOwor
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWws
IHRydWUpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCBlbXB0eSBBcHBJRCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAg
LTE0Myw3ICsxMTgsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVj
YzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5
Iik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVu
dGlhbCwgdHJ1ZSwgIjdlYWJjNWNjMzI1MWJkYzU5MTE1ZWY4N2I1ZjdlZTc0Y2IwMzc0N2UzOWJh
ODM0MTc0ODU2NWNjMTI5YzA3MTkiKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYW4gQXBwSUQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCkBAIC0xNjAsNyArMTM1LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1
cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwog
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG11bHRpcGxlIGNyZWRl
bnRpYWxzIGFuZCBBcHBJRCBpcyBub3QgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTE3Nyw3ICsxNTIsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJh
c2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWdu
UmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRB
c3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CiAgICAgICAgIH0pOwogICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG11bHRpcGxlIGNyZWRlbnRpYWxzIGFu
ZCBBcHBJRCBpcyB1c2VkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTk0
LDcgKzE2OSw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNh
bkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRl
bnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAg
ICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZG93
bmdyYWRlZCBhdXRoZW50aWNhdG9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApA
QCAtMjExLDcgKzE4Niw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxp
ZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSwgIjdlYWJjNWNjMzI1
MWJkYzU5MTE1ZWY4N2I1ZjdlZTc0Y2IwMzc0N2UzOWJhODM0MTc0ODU2NWNjMTI5YzA3MTkiKTsK
KyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFs
LCB0cnVlLCAiN2VhYmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4MzQx
NzQ4NTY1Y2MxMjljMDcxOSIpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBkb3duZ3JhZGVkIGF1dGhlbnRpY2F0b3IgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5kZXggOTg3ZDA3MjE5ZDRlNDc3MDc0Yzk4ZjQy
YzE1YjE4NTNjNzNhYzYxMi4uMWI5MTNiNGRhZGIwZGQwYWNiYmY5ZmI1Y2FlMDgzMzcwNTcyODk3
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0
aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwu
anMKQEAgLTk5LDYgKzk5LDQwIEBAIGNvbnN0IHRlc3RVMmZTaWduUmVzcG9uc2UgPQogICAgICJm
NFY0TGVFQWhxZUQwZWZmVGpZNTUzSDE5cStqV3ExVGM0V09rQUE9IjsKIGNvbnN0IHRlc3RDdGFw
RXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0ID0gIkdRPT0iOwogY29uc3Qg
dGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0ID0gIklnPT0iOworY29u
c3QgdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQgPSAiVlRKR1gxWXlrQUE9IjsKK2NvbnN0IHRlc3RO
ZmNDdGFwVmVyc2lvbkJhc2U2NCA9ICJSa2xFVDE4eVh6Q1FBQT09IjsKK2NvbnN0IHRlc3RHZXRJ
bmZvUmVzcG9uc2VBcGR1QmFzZTY0ID0KKyAgICAiQUtZQmdtWlZNa1pmVmpKb1JrbEVUMTh5WHpB
Q2dXdG9iV0ZqTFhObFkzSmxkQU5RYlVTNm0vYnNMa201TUF5UCIgKworICAgICI2U0RMY3dTa1lu
SnI5V0oxY1BWa2NHeGhkUFJwWTJ4cFpXNTBVR2x1OUFVWkJMQUdnUUdRQUE9PSI7Citjb25zdCB0
ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NCA9CisgICAgIkFLTUJabkJoWTJ0bFpBSll4RWJN
Zjdsbm5WV3kyNUNTNGNqWjVlSFFLM1dBOExTQkxIY0pZdUhrajFyWVFRQUEiICsKKyAgICAiQUU3
NG9CSHpqQXBORllBR0Z4RWZudHg5QUVBb0NLM082UDVPeVhONlYvZis5bkFnYTBOQTJDZ3A0VjNt
Z1NKNSIgKworICAgICJqT0hMTURybXhwL1MwcmJEK2FpaHJ1MUMwYUFOM0JraU02R055NW5TbERW
cU9nVGdwUUVDQXlZZ0FTRllJRUZiIiArCisgICAgImhlM1JrTnVkNnNneXJhQkdqbGgxcHpUbENa
ZWhRbEwvYjE4SFo2V0dJbGdnSmdmVWQvZW45cDVBSXFNUWJVbmkiICsKKyAgICAibkVlWGRGTGt2
VzAvelY1QnBFampOeEFEbzJOaGJHY21ZM05wWjFoSE1FVUNJUURLZytaQm1FQnRmMGxXcTRSZSIg
KworICAgICJkSDQvaS9MT1lxT1I0dVIyTkFqMnpRbXc5UUlnYlRYYjRodkZiajRUMjdidi9yR3Jj
K3krMHB1b1lPQmtCazlQIiArCisgICAgIm1DZXdXbE5qZURWamdWa0N3akNDQXI0d2dnR21vQU1D
QVFJQ0JIU0cvY0l3RFFZSktvWklodmNOQVFFTEJRQXciICsKKyAgICAiTGpFc01Db0dBMVVFQXhN
aldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFdyIgKworICAg
ICJJQmNOTVRRd09EQXhNREF3TURBd1doZ1BNakExTURBNU1EUXdNREF3TURCYU1HOHhDekFKQmdO
VkJBWVRBbE5GIiArCisgICAgIk1SSXdFQVlEVlFRS0RBbFpkV0pwWTI4Z1FVSXhJakFnQmdOVkJB
c01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjAiICsKKyAgICAiWlhOMFlYUnBiMjR4S0RBbUJnTlZC
QU1NSDFsMVltbGpieUJWTWtZZ1JVVWdVMlZ5YVdGc0lERTVOVFV3TURNNCIgKworICAgICJOREl3
V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNWWGZPdDl5UjlNWFh2L1p6RTh4cE9o
NDY2IiArCisgICAgIjRZRUpWbUZRK3ppTExsOWxKNzlYUUpxbGdhVU5Dc1V2R0VSY0NoTlVpaE5U
eUtUbG1uQk9VanZBVGV2dG8yd3ciICsKKyAgICAiYWpBaUJna3JCZ0VFQVlMRUNnSUVGVEV1TXk0
MkxqRXVOQzR4TGpReE5EZ3lMakV1TVRBVEJnc3JCZ0VFQVlMbCIgKworICAgICJIQUlCQVFRRUF3
SUZJREFoQmdzckJnRUVBWUxsSEFFQkJBUVNCQkQ0b0JIempBcE5GWUFHRnhFZm50eDlNQXdHIiAr
CisgICAgIkExVWRFd0VCL3dRQ01BQXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBREZjU0lEbW1s
SitPR2FKdlduOUNxaHYiICsKKyAgICAiU2V1ZVRvVkZRVlZ2cXRBTE9nQ0tIZHdCK1d4MjltZzJH
cEhpTXNnUXA1eGpCMHliYm5wRzZ4MjEyRnhFU0orRyIgKworICAgICJpblpEMGlwY2hpN0FQd1Bs
aEl2amdIMTZ6Vlg0NGE0ZTRoT3NjNnRMSU9QNzFTYU1zSHVIZ0NjZEgwdmc1ZDJzIiArCisgICAg
ImMwMDZXSmU5VFhPNmZ6VitvZ2pKbllwTktRTG1DWG9BWEUzSkJOd0tHQklPQ3ZmUURQeVdtaWlH
NWJHeFlmUHQiICsKKyAgICAieThaM3BualgrMU1Ebk0yaGhyNDB1bE14bFNORG5YL1pTbkR5TUdJ
Yms4VE9RbWpURjAyVU84YXVQOGszd3Q1RCIgKworICAgICIxclJPSVJVOStGQ1NYNVdRWWk2OFJ1
RHJHTVpCOFA1K2J5b0pxYktRZHhuMkxtRTFvWkF5b2hQQW1MY29QTzZRIiArCisgICAgIkFBPT0i
OworY29uc3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0ID0KKyAgICAiQUtNQm9tSnBa
RmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1b0VpZVl6aHl6QTY1c2FmMHRLMiIg
KworICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5CMVlteHBZ
eTFyWlhrQ1dDVkd6SCs1IiArCisgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xo
NUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKKyAgICAiNC9GMFZCN0RsVVZNMDlJ
SFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKworICAg
ICJRb0oxTDdGZTY0Rzl1QmVRQUE9PSI7CiAKIGNvbnN0IFJFU09VUkNFU19ESVIgPSAiL1dlYktp
dC93ZWJhdXRobi9yZXNvdXJjZXMvIjsKIApAQCAtMjk3LDMgKzMzMSwxMDggQEAgZnVuY3Rpb24g
Y2hlY2tQdWJsaWNLZXkocHVibGljS2V5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHRydWU7CiB9CisKK2Z1bmN0aW9uIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNy
ZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKK3sKKyAgICAvLyBDaGVjayByZXNw
b25zZQorICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwu
aWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFz
c2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5w
YXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRl
c1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5
cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0
dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOworICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRp
YWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgIC8vIENoZWNr
IGF0dGVzdGF0aW9uCisgICAgY29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShj
cmVkZW50aWFsLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBpZiAoaXNOb25lQXR0
ZXN0YXRpb24pCisgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAi
bm9uZSIpOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVj
dC5mbXQsICJwYWNrZWQiKTsKKyAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgIGNvbnN0IGF1dGhE
YXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgIGFz
c2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNjN2Zi
OTY3OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVlMWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1YWQ4
Iik7CisgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgIGFzc2VydF9l
cXVhbHMoYXV0aERhdGEuY291bnRlciwgNzgpOworICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCks
ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAgIGVsc2UKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICJmOGEwMTFm
MzhjMGE0ZDE1ODAwNjE3MTExZjllZGM3ZCIpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0
aERhdGEuY3JlZGVudGlhbElELCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJh
c2U2NCkpOworICAgIC8vIENoZWNrIHBhY2tlZCBhdHRlc3RhdGlvbgorICAgIGFzc2VydF90cnVl
KGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAgIGlmIChpc05vbmVBdHRl
c3RhdGlvbikKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
YXR0U3RtdCwgeyB9KTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3Rh
dGlvbk9iamVjdC5hdHRTdG10LmFsZywgLTcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVz
dGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjLmxlbmd0aCwgMSk7CisgICAgfQorfQorCitmdW5jdGlv
biBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0
aW9uID0gdHJ1ZSkKK3sKKyAgICAvLyBDaGVjayByZXNwb25zZQorICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVz
dFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50
eXBlLCAncHVibGljLWtleScpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJy
YXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElk
QmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlh
bC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJj
aGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScp
OworICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVz
dWx0cygpLCAiYXBwaWQiKTsKKworICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgY29uc3Qg
YXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShjcmVkZW50aWFsLnJlc3BvbnNlLmF0dGVz
dGF0aW9uT2JqZWN0KTsKKyAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9uZSIpOworICAgIGVsc2UKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJmaWRvLXUyZiIpOworICAg
IC8vIENoZWNrIGF1dGhEYXRhCisgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShh
dHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4
U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2
MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVy
LCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlk
KSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhhdXRoRGF0YS5jcmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3Jl
ZGVudGlhbElkQmFzZTY0KSk7CisgICAgLy8gQ2hlY2sgZmlkby11MmYgYXR0ZXN0YXRpb24KKyAg
ICBhc3NlcnRfdHJ1ZShjaGVja1B1YmxpY0tleShhdXRoRGF0YS5wdWJsaWNLZXkpKTsKKyAgICBp
ZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKGF0dGVz
dGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7CisgICAgZWxzZQorICAgICAgICBhc3NlcnRfZXF1
YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjLmxlbmd0aCwgMSk7Cit9CisKK2Z1bmN0
aW9uIGNoZWNrQ3RhcEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKQoreworICAgIC8vIENo
ZWNrIHJlc3BvbmQKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVk
ZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNl
NjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFzc2VydF9lcXVh
bHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04p
LCAneyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4i
OiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRp
YWwucmVzcG9uc2UudXNlckhhbmRsZSwgbnVsbCk7CisgICAgYXNzZXJ0X25vdF9leGlzdHMoY3Jl
ZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisgICAgLy8g
Q2hlY2sgYXV0aERhdGEKKyAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKG5ldyBV
aW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZjYzdm
Yjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhmNWFk
OCIpOworICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOworICAgIGFzc2VydF9l
cXVhbHMoYXV0aERhdGEuY291bnRlciwgODApOworfQorCitmdW5jdGlvbiBjaGVja1UyZkdldEFz
c2VydGlvblJlc3VsdChjcmVkZW50aWFsLCBpc0FwcElEID0gZmFsc2UsIGFwcElESGFzaCA9ICJj
MjY3MWI2ZWI5MjMzMTk3ZDVmMmIxMjg4YTU1YmE0ZjA4NjBmOTZmNzE5OWJiYTMyZmU2ZGE3YzNm
MGYzMWU1IikKK3sKKyAgICAvLyBDaGVjayByZXNwb25kCisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJm
Q3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUs
ICdwdWJsaWMta2V5Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShj
cmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNl
NjQpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJl
c3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5n
ZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUsIG51bGwpOworICAg
IGlmICghaXNBcHBJRCkKKyAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5nZXRD
bGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworICAgIGVsc2UKKyAgICAgICAgYXNz
ZXJ0X3RydWUoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkuYXBwaWQpOwor
CisgICAgLy8gQ2hlY2sgYXV0aERhdGEKKyAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhE
YXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEp
KTsKKyAgICBpZiAoIWlzQXBwSUQpCisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0
cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1
YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNiYTgzMWQ5NzYzIik7CisgICAgZWxzZQorICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCBhcHBJREhh
c2gpOworICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOworICAgIGFzc2VydF9l
cXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376960</attachid>
            <date>2019-08-21 18:12:52 -0700</date>
            <delta_ts>2019-08-22 13:44:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188624-20190821181252.patch</filename>
            <type>text/plain</type>
            <size>155896</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5YTE3ZWQ0NWI5YmM0MDBkZmI4ZGIw
ZjQ0ZDU2NjdhYzE0OTZkYzQuLjViYWIzZTQ3MzY3NzllNDYzMTNlN2UwYzcxN2Y1YWQwZTMzZDE3
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMjEgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRp
Y2F0b3JzIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDoKKyAgICAgICAgQWRkIGEgZmVhdHVyZSBmbGFnIGZvciBOZWFyRmllbGQuCisKIDIwMTktMDgt
MjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gRm9sbG93dXAgdG8gcjI0ODkwMy4gSXQncyBub3QgdmFsaWQgdG8gcmVtb3ZlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNzU2NzA4ZDY1OTc5MDg2OGMyMDgwNTVmZjU0YTY0MTZjZWIwODY4Mi4uYjM5NTQ0YmIw
ZWYyN2Q2YWFmMDE3NTNkMDg5Njg3NzI1ZjFiMWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1m
YWlsdXJlLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLW5mYy5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1u
ZmMuaHR0cHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25z
dGFudHMuaDoKKyAgICAgICAgQWRkcyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9u
LgorCiAyMDE5LTA4LTIwICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBjb21tZW50IGZvbGxvdy11cCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDc1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWVlYjViOTAxOThjYzkx
MzE2YzllOGU2ZDFjNGYzMzZiMGU0YWM5NS4uNTJhYmFiMDc5ZjdlOWMxZmZhNGY3MTVjNmQ0YWQ2
NTlhMjU3NzE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxOS0wOC0yMCAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcG9y
dCBORkMgYXV0aGVudGljYXRvcnMgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM1
NDIxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgTkZDIGF1dGhlbnRpY2F0b3JzIGluY2x1
ZGluZyBib3RoIEZJRE8yIGFuZCBVMkYgb25lcy4gSXQgdXRpbGl6ZXMgYSBwcml2YXRlCisgICAg
ICAgIGZyYW1ld29yayBjYWxsZWQgTmVhckZpZWxkIGluc3RlYWQgb2YgQ29yZU5GQyB0byBiZSBh
YmxlIHRvIHN1cHBseSBhIGN1c3RvbSBVSSBsYXRlciBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAg
VGhlIHBhdGNoIGZvbGxvd3MgYWxtb3N0IHRoZSBzYW1lIGZsb3cgYXMgcHJldmlvdXMgSElEIGFu
ZCBMb2NhbCBhdXRoZW50aWNhdG9yIHN1cHBvcnQuCisgICAgICAgIDEpIERpc2NvdmVyeSBpcyB2
aWEgTmZjU2VydmljZSB3aGljaCB3aWxsIGludm9rZSBORkhhcmR3YXJlTWFuYWdlciB0byBzdGFy
dCBhIGdlbmVyaWMgTkZDIHJlYWRlciBzZXNzaW9uLgorICAgICAgICAyKSBPbmNlIGEgcmVhZGVy
IHNlc3Npb24gaXMgZXN0YWJsaXNoZWQsIGEgTmZjQ29ubmVjdGlvbiBpcyBjcmVhdGVkIHRvIHN0
YXJ0IHRoZSBwb2xsaW5nIGFuZCByZWdpc3RlciB0aGUgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0
ZQorICAgICAgICB0byB3YWl0IGZvciAnZGlkRGV0ZWN0VGFncycuCisgICAgICAgIDMpIFdoZW4g
dGFncyBhcmUgZGV0ZWN0ZWQsIE5mY0Nvbm5lY3Rpb24gd2lsbCBkZXRlcm1pbmUgaWYgaXQgbWVl
dHMgb3VyIHJlcXVyaWVtZW50czogeyB0eXBlLCBjb25uZWN0YWJpbGl0eSwgZmlkbyBhcHBsZXQg
YXZhaWxhYmlsaXR5IH0uCisgICAgICAgIFRoZSBmaXJzdCB0YWcgdGhhdCBtZWV0cyBhbGwgcmVx
dWlyZW1lbnQgd2lsbCB0aGVuIGJlIHJldHVybmVkIGZvciBXZWJBdXRobiBvcGVyYXRpb25zLgor
ICAgICAgICA0KSBUaGUgZmlyc3QgV2ViQXV0aG4gb3BlcmF0aW9uIGlzIHRvIHNlbmQgYXV0aGVu
dGljYXRvckdldEluZm8gY29tbWFuZCB0byBkZXRlcm1pbmUgdGhlIHN1cHBvcnRlZCBwcm90b2Nv
bCwgYW5kIHRoZW4gaW5pdGlhbGl6ZSBjb3JyZXNwb25kaW5nCisgICAgICAgIGF1dGhlbnRpY2F0
b3JzLiBOb3RlZCwgdGhlIHNlbmRpbmcvcmVjZWl2aW5nIG9mIHRoaXMgY29tbWFuZCBpcyBub3cg
YWJzdHJhY3RlZCBpbnRvIEZpZG9TZXJ2aWNlIHdoaWNoIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyBI
aWRTZXJ2aWNlIGFuZCBOZmNTZXJ2aWNlLgorICAgICAgICA1KSBGcm9tIHRoZW4sIHRoZSBhY3R1
YWwgV2ViQXV0aG4gcmVxdWVzdCwgZWl0aGVyIG1ha2VDcmVkZW50aWFsIG9yIGdldEFzc2VydGlv
biB3aWxsIGJlIHNlbnQuCisKKyAgICAgICAgRm9yIHRlc3RpbmcsIHRoaXMgcGF0Y2ggZm9sbG93
cyB0aGUgc2FtZSBmbG93IGFzIHdlbGwuCisgICAgICAgIDEpIE1vY2tOZmNTZXJ2aWNlIG92ZXJy
aWRlcyBOZmNTZXJ2aWNlIHRvIG1vY2sgdGhlIGJlaGF2aW9yIG9mIE5GQyBUYWdzIGRpc2NvdmVy
eS4KKyAgICAgICAgMikgVGhlIHNhbWUgY2xhc3MgYWxzbyBzd2l6emxlcyBtZXRob2RzIGZyb20g
TkZSZWFkZXJTZXNzaW9uIHRvIG1vY2sgdGFnIGNvbm5lY3Rpb24gYW5kIGNvbW11bmljYXRpb24u
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmg6IEFkZGVkLgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFs
Ojpjb2xsZWN0VHJhbnNwb3J0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGVNb2NrKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tOgorICAgICAg
ICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6SGlk
U2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpjb250
aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZp
ZWxkU29mdExpbmsubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24u
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpmaWRvOjpjb21wYXJlVmVyc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246Ok5mY0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZmNDb25uZWN0aW9uOjp+TmZjQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5m
Y0Nvbm5lY3Rpb246OnRyYW5zYWN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVj
dGlvbjo6ZGlkRGV0ZWN0VGFncyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmZjU2VydmljZTo6TmZjU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5mY1NlcnZpY2U6On5OZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TmZjU2Vydmlj
ZTo6ZGlkQ29ubmVjdFRhZyk6CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OnN0YXJ0RGlz
Y292ZXJ5SW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0
YXJ0RGlzY292ZXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKC1bV0tORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZSBpbml0V2l0aENvbm5lY3Rpb246XSk6CisgICAgICAgICgtW1dLTkZSZWFkZXJTZXNz
aW9uRGVsZWdhdGUgcmVhZGVyU2Vzc2lvbjpkaWREZXRlY3RUYWdzOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNl
cnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TmZjU2VydmljZS5tbTogQWRkZWQuCisgICAgICAgICgtW1dLTW9ja05GVGFnIHR5cGVdKToKKyAg
ICAgICAgKC1bV0tNb2NrTkZUYWcgaW5pdFdpdGhORlRhZzpdKToKKyAgICAgICAgKC1bV0tNb2Nr
TkZUYWcgZGVzY3JpcHRpb25dKToKKyAgICAgICAgKC1bV0tNb2NrTkZUYWcgaXNFcXVhbFRvTkZU
YWc6XSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIGluaXRXaXRoVHlwZTpdKToKKyAgICAgICAg
KFdlYktpdDo6TW9ja05mY1NlcnZpY2U6Ok1vY2tOZmNTZXJ2aWNlKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZj
U2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tO
ZmNTZXJ2aWNlOjpkZXRlY3RUYWdzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0
b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBB
dXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcE5mY0RyaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJp
dmVyOjpDdGFwTmZjRHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6dHJh
bnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwTmZjRHJpdmVyOjpyZXNwb25kQXN5bmMgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNE
cml2ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkZp
ZG9TZXJ2aWNlOjpGaWRvU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpn
ZXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6Rmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0ZXJHZXRJ
bmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2Vy
dmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA4LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZpeCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktp
dCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggOTUyZjQzZWFkOTkwYmMxZWFhOTNmNDFhNThmMTM5NjZl
ZDIxNTY4NS4uNGJmZGE1NTkwODU2OGJiOGFkMjgwODRiNTEzNGU4NWE5YTZjMjM3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCkBAIC0xNjM2LDMgKzE2MzYsMTEgQEAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKICNk
ZWZpbmUgSEFWRV9EQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4gMQogI2VuZGlmCisKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisjZGVmaW5lIEhBVkVfTkVBUl9GSUVMRCAxCisj
ZW5kaWYKKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQorI2RlZmluZSBIQVZFX05GX1JFQURFUl9T
RVNTSU9OX1VQREFURV9VSV9BTEVSVF9NRVNTQUdFIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5kZXggMjEx
ZTNjODFmM2YwZGUyZmU1YmNiZmNlNjNlM2U0ZmM4MTUwMmEyMC4uZjI2Y2FlYThmNzIxMzE1NmY2
OTdhNjM4MWZjNjAxNWMwMzQ1ZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC0yMjMsNiArMjIzLDI1IEBAIGNv
bnN0IGNoYXIga1UyZlZlcnNpb25bXSA9ICJVMkZfVjIiOwogY29uc3QgdWludDMyX3Qga0NUQVBI
SURVc2FnZVBhZ2UgPSAweEYxRDA7CiBjb25zdCB1aW50MzJfdCBrQ1RBUEhJRFVzYWdlID0gMHgw
MTsKIAorLy8gQ1RBUE5GQyBBcHBsZXQgc2VsZWN0aW9uIGNvbW1hbmQgYW5kIHJlc3BvbnNlcwor
Ly8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE5MDEzMC9m
aWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxOTAxMzAuaHRt
bCNuZmMtYXBwbGV0LXNlbGVjdGlvbgorY29uc3QgdWludDhfdCBrQ1RBUE5GQ0FwcGxldFNlbGVj
dGlvbkNvbW1hbmRbXSA9IHsKKyAgICAweDAwLCAweEE0LCAweDA0LCAweDAwLCAvLyBDTEEsIElO
UywgUDEsIFAyCisgICAgMHgwOCwgLy8gTAorICAgIDB4QTAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4
NDcsIC8vIFJJRAorICAgIDB4MkYsIDB4MDAsIDB4MDEgLy8gUElYCit9OworCitjb25zdCB1aW50
OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uVTJmW10gPSB7CisgICAgMHg1NSwgMHgzMiwgMHg0
NiwgMHg1RiwgMHg1NiwgMHgzMiwgLy8gVmVyc2lvbgorICAgIDB4OTAsIDB4MDAgLy8gQVBEVSBy
ZXNwb25zZSBjb2RlCit9OworCitjb25zdCB1aW50OF90IGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9u
Q3RhcFtdID0geworICAgIDB4NDYsIDB4NDksIDB4NDQsIDB4NGYsIDB4NWYsIDB4MzIsIDB4NWYs
IDB4MzAsIC8vIFZlcnNpb24KKyAgICAweDkwLCAweDAwIC8vIEFQRFUgcmVzcG9uc2UgY29kZQor
fTsKKwogfSAvLyBuYW1lc3BhY2UgZmlkbwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQ
SS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzI5YTk4ZDVjOGNhNjI0M2U2N2RlODNmNjc2YTAwMDY5MTJjYzI0OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL05lYXJGaWVsZFNQ
SS5oCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCisKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjaW1wb3J0IDxOZWFyRmllbGQvTmVhckZpZWxkLmg+CisKKyNlbHNlCisK
K3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBORkZlYXR1cmUpIHsKKyAgICBORkZlYXR1
cmVSZWFkZXJNb2RlICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKK307CisKK3R5cGVkZWYgTlNf
RU5VTSh1aW50MzJfdCwgTkZUYWdUeXBlKSB7CisgICAgTkZUYWdUeXBlVW5rbm93biAgICA9IDAs
CisgICAgTkZUYWdUeXBlR2VuZXJpYzRBICA9IDMsCit9OworCit0eXBlZGVmIE5TX09QVElPTlMo
dWludDMyX3QsIE5GVGVjaG5vbG9neSkgeworICAgIE5GVGVjaG5vbG9neU5vbmUgICAgICAgICAg
ICAgICAgID0gMCwKK307CisKK3R5cGVkZWYgTlNfRU5VTSh1aW50MzJfdCwgTkZOZGVmQXZhaWxh
YmlsaXR5KSB7CisgICAgTkZOZGVmQXZhaWxhYmlsaXR5VW5rbm93biA9IDAsCit9OworCitAcHJv
dG9jb2wgTkZUYWdBCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZ0IKK0BlbmQKKworQHByb3RvY29s
IE5GVGFnRgorQGVuZAorCitAcHJvdG9jb2wgTkZUYWcgPE5TT2JqZWN0PgorQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBORlRhZ1R5cGUgdHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTkZUZWNobm9sb2d5IHRlY2hub2xvZ3k7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdGFnSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqVUlEOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBhc3NpZ24pIE5GTmRlZkF2YWlsYWJpbGl0eSBuZGVmQXZhaWxhYmlsaXR5OworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIHNpemVfdCBuZGVmTWVzc2FnZVNpemU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGFzc2lnbikgc2l6ZV90IG5kZWZDb250
YWluZXJTaXplOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEg
KkFwcERhdGEgTlNfREVQUkVDQVRFRCgxMF8xMiwgMTBfMTUsIDEwXzAsIDEzXzApOworCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGlkPE5GVGFnQT4gdGFnQTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgaWQ8TkZUYWdCPiB0YWdCOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBpZDxORlRhZ0Y+IHRhZ0Y7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aE5GVGFnOihpZDxORlRhZz4pdGFnOworLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbjsKKy0gKEJP
T0wpaXNFcXVhbFRvTkZUYWc6KGlkPE5GVGFnPil0YWc7CitAZW5kCisKK0BpbnRlcmZhY2UgTkZU
YWcgOiBOU09iamVjdCA8TlNTZWN1cmVDb2RpbmcsIE5GVGFnLCBORlRhZ0EsIE5GVGFnQiwgTkZU
YWdGPgorQGVuZAorCitAcHJvdG9jb2wgTkZTZXNzaW9uIDxOU09iamVjdD4KKy0gKHZvaWQpIGVu
ZFNlc3Npb247CitAZW5kCisKK0BpbnRlcmZhY2UgTkZTZXNzaW9uIDogTlNPYmplY3QgPE5GU2Vz
c2lvbj4KK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlOworCitAaW50
ZXJmYWNlIE5GUmVhZGVyU2Vzc2lvbiA6IE5GU2Vzc2lvbgorQHByb3BlcnR5IChhc3NpZ24pIGlk
PE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPiBkZWxlZ2F0ZTsKKworLSAoQk9PTCkgc3RhcnRQb2xs
aW5nOworLSAoQk9PTCkgc3RvcFBvbGxpbmc7CistIChCT09MKSBjb25uZWN0VGFnOihORlRhZyop
dGFnOworLSAoQk9PTCkgZGlzY29ubmVjdFRhZzsKKy0gKE5TRGF0YSopIHRyYW5zY2VpdmU6KE5T
RGF0YSopY2FwZHU7CistIChOU0Vycm9yICopIHVwZGF0ZVVJQWxlcnRNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2U7CitAZW5kCisKK0Bwcm90b2NvbCBORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA8
TlNPYmplY3Q+CitAb3B0aW9uYWwKKy0gKHZvaWQpIHJlYWRlclNlc3Npb246KE5GUmVhZGVyU2Vz
c2lvbiopdGhlU2Vzc2lvbiBkaWREZXRlY3RUYWdzOihOU0FycmF5PE5GVGFnICo+ICopdGFnczsK
K0BlbmQKKworQGludGVyZmFjZSBORkhhcmR3YXJlTWFuYWdlciA6IE5TT2JqZWN0CisrIChpbnN0
YW5jZXR5cGUpIHNoYXJlZEhhcmR3YXJlTWFuYWdlcjsKKy0gKE5TT2JqZWN0PE5GU2Vzc2lvbj4g
Kikgc3RhcnRSZWFkZXJTZXNzaW9uV2l0aEFjdGlvblNoZWV0VUk6KHZvaWQoXikoTkZSZWFkZXJT
ZXNzaW9uICpzZXNzaW9uLCBOU0Vycm9yICplcnJvcikpdGhlU3RhcnRDYWxsYmFjazsKKy0gKEJP
T0wpYXJlRmVhdHVyZXNTdXBwb3J0ZWQ6KE5GRmVhdHVyZSlmZWF0dXJlTWFzayBvdXRFcnJvcjoo
TlNFcnJvcioqKW91dEVycm9yOworQGVuZAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIEhBVkUoTkVBUl9GSUVMRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IGI0NjZkMmM3NDg5ZTYyZDU3ZjA3ODRjZDk3NmUyMTg1NjQ1MTY0NDQu
LjgxMzc4ODFiYjQxZWU3YTk3ODNiYWQ4NjQ0NTcxZGExZjkxZmQ2MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtNDA4LDYgKzQwOCw4IEBAIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEF1dGhlbnRpY2F0b3IuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
SGlkRHJpdmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0Ry
aXZlci5jcHAKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNw
cAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAK
IAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDMwZjQ4OGFiNTgwODkxZTk5MzU0NTJk
NmI2MTM4ZTAzY2JiODAyY2UuLmJkOTk1ZTk1NmY4ZWY2YTNmOGIxMjFhZTBiZWI5YmI0ZmNmYzJl
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ5Niw5ICs0OTYsMTQgQEAgVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRp
Y2F0b3IubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24ubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0K
K1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5tbSBA
bm8tdW5pZnkKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9u
Lm1tCitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQorVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUu
bW0KIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlv
bi5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsU2VydmljZS5t
bQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KIAog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcAppbmRleCA4ZmFhNzZmM2E0OGFjOGJlOTNmN2JmMzc4MGNjNDQzNGM2MDY5NTZm
Li5hZjg0YTkxMzcwZmY4ZTA3OTdkNGY2MTRhZTgyY2EzMGQzMmY4NDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKQEAgLTY3OCw2ICs2NzgsMzAgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAg
Y29uZmlndXJhdGlvbi5oaWQgPSBXVEZNb3ZlKGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8g
bmZjUmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIk5mYyIpKS5nZXQoKSkpKSB7CisgICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjIG5mYzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2Vi
S2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJv
ciIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7CisgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIp
CisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgICAgIGlmIChlcnJvciA9PSAi
bm8tdGFncyIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok5vVGFnczsKKyAgICAgICAgaWYgKGVy
cm9yID09ICJ3cm9uZy10YWctdHlwZSIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6
Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Oldyb25nVGFn
VHlwZTsKKyAgICAgICAgaWYgKGVycm9yID09ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAgICAg
ICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
Ok5mYzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnM7CisgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNp
b3VzLXBheWxvYWQiKQorICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpNYWxpY2lvdXNQYXlsb2FkOwor
CisgICAgICAgIGlmIChhdXRvIHBheWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG5mY1JlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAg
bmZjLnBheWxvYWRCYXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJp
bmdWZWN0b3IoKTsKKworICAgICAgICBpZiAoYXV0byBtdWx0aXBsZVRhZ3MgPSBzdGF0aWNfY2Fz
dDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkuZ2V0KCkpKSkK
KyAgICAgICAgICAgIG5mYy5tdWx0aXBsZVRhZ3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShtdWx0aXBs
ZVRhZ3MpOworCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOworICAg
IH0KKwogICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJh
dGlvbikpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5k
ZXggMmMwODQ0NTc4NTdkNDEwOWM4NDMxMTU5MTgzMGUzNGIyYTI1YjZkZi4uMGQ3YjY2MTNmZjZh
ZTZkNmE4NTkxYjZkYzA4M2EzMWNlYWQ3MjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcApAQCAtMzgsMTUgKzM4LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
bmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWwgewogCiAjaWYgUExBVEZPUk0o
TUFDKQotY29uc3Qgc2l6ZV90IG1heFRyYW5zcG9ydE51bWJlciA9IDI7Citjb25zdCBzaXplX3Qg
bWF4VHJhbnNwb3J0TnVtYmVyID0gMzsKICNlbHNlCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0
TnVtYmVyID0gMTsKK2NvbnN0IHNpemVfdCBtYXhUcmFuc3BvcnROdW1iZXIgPSAyOwogI2VuZGlm
CiAKIC8vIFN1Z2dlc3RlZCBieSBXZWJBdXRoTiBzcGVjIGFzIG9mIDcgQXVndXN0IDIwMTguCiBj
b25zdCB1bnNpZ25lZCBtYXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAKLS8vIEZJWE1FKDE4ODYy
NCwgMTg4NjI1KTogU3VwcG9ydCBORkMgYW5kIEJMRSBhdXRoZW50aWNhdG9ycy4KKy8vIEZJWE1F
KDE4ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhlbnRpY2F0b3JzLgogc3RhdGljIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlv
bkNyaXRlcmlhPiYgYXV0aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6VHJhbnNwb3J0U2V0IHJlc3VsdDsKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3Qg
T3B0aW9uYWw8UHVibGkKICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpVc2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5h
ZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTY5LDcgKzcxLDExIEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6
VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQoQXV0aGVu
dGljYXRvclRyYW5zcG9ydDo6VXNiKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChB
dXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworI2Vsc2UKKyAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSByZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CiAjZW5kaWYKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGljIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3Qg
VmVjdG9yPFB1YmxpY0sKICAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNh
dG9yVHJhbnNwb3J0OjpVc2IpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdCA9IHJlc3VsdC5h
ZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTEwMCw4ICsxMDgsOSBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6
OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAg
ICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJh
bnNwb3J0OjpVc2IpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgorICAgICAg
ICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJlc3VsdC5jb250YWlu
cyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkgJiYgYWxsb3dDcmVkZW50aWFsLnRy
YW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpKQogICAg
ICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCk7CkBA
IC0xMDksNiArMTE4LDggQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRT
ZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0sKICAgICAgICAgaWYgKCFy
ZXN1bHQuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSAmJiBhbGxvd0NyZWRl
bnRpYWwudHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpKQog
ICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogI2Vu
ZGlmCisgICAgICAgIGlmICghcmVzdWx0LmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6
Ok5mYykgJiYgYWxsb3dDcmVkZW50aWFsLnRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRv
clRyYW5zcG9ydDo6TmZjKSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRy
YW5zcG9ydDo6TmZjKTsKICAgICAgICAgaWYgKHJlc3VsdC5zaXplKCkgPj0gbWF4VHJhbnNwb3J0
TnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yVHJh
bnNwb3J0U2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKaW5kZXggZjQ1NjU3Yjk1OTcw
OTgwZjRjMWY0NWVhMzE4MGMzZTc3MGY1ODA3My4uMTE1MmQzMWQ0YTQ1YzMyNzM0Y2RiYTkzMmFl
MGUzOGE5NmUwMmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxvY2FsU2VydmljZS5o
IgogI2luY2x1ZGUgIk1vY2tIaWRTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiTW9ja0xvY2FsU2Vydmlj
ZS5oIgorI2luY2x1ZGUgIk1vY2tOZmNTZXJ2aWNlLmgiCisjaW5jbHVkZSAiTmZjU2VydmljZS5o
IgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUs
NiArNDcsOCBAQCBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGUoVwogICAgIGNhc2UgV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydDo6VXNiOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxI
aWRTZXJ2aWNlPihvYnNlcnZlcik7CiAjZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6Ok5mYzoKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TmZjU2Vy
dmljZT4ob2JzZXJ2ZXIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbFNlcnZpY2U+KG9ic2VydmVy
KTsKQEAgLTYwLDYgKzY0LDggQEAgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlPiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6Y3JlYXRlTW8KICAgICBjYXNlIFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYjoKICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8TW9ja0hpZFNlcnZpY2U+KG9ic2VydmVyLCBjb25maWd1cmF0aW9uKTsKICNlbmRp
ZgorICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjOgorICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2NrTmZjU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3Vy
YXRpb24pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2NrTG9jYWxTZXJ2aWNlPihvYnNlcnZlciwgY29u
ZmlndXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmgKaW5kZXggN2QyZDM1ZjI0N2RlZDAy
ZTA2ZjRkNmIxNWQzYTlkNzU0MWVkMmFjZi4uZThlYzIzY2JiMjEwMjFmNTY2ZGQ0ZDgxODczZjk0
YmUwMGMwYWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaApAQCAtMjcsMTcgKzI3LDE2IEBA
CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbmNsdWRlICJB
dXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgorI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgi
CiAjaW5jbHVkZSA8SU9LaXQvaGlkL0lPSElETWFuYWdlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBDdGFwSGlkRHJpdmVyOwogY2xhc3MgSGlkQ29ubmVjdGlvbjsKIAotY2xhc3Mg
SGlkU2VydmljZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitjbGFz
cyBIaWRTZXJ2aWNlIDogcHVibGljIEZpZG9TZXJ2aWNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBIaWRTZXJ2aWNlKE9ic2VydmVyJik7CiAgICAgfkhpZFNlcnZpY2UoKTsKQEAgLTUxLDExICs1
MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnREaXNjb3Zlcnko
KTsKICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBjcmVhdGVIaWRDb25uZWN0
aW9uKElPSElERGV2aWNlUmVmKSBjb25zdDsKIAotICAgIHZvaWQgY29udGludWVBZGREZXZpY2VB
ZnRlckdldEluZm8oQ3RhcEhpZERyaXZlciogZGV2aWNlUmVmLCBWZWN0b3I8dWludDhfdD4mJiBp
bmZvKTsKLQogICAgIFJldGFpblB0cjxJT0hJRE1hbmFnZXJSZWY+IG1fbWFuYWdlcjsKLSAgICAv
LyBLZWVwaW5nIGRyaXZlcnMgYWxpdmUgd2hlbiB0aGV5IGFyZSBpbml0aWFsaXppbmcgYXV0aGVu
dGljYXRvcnMuCi0gICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4+IG1f
ZHJpdmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UubW0KaW5kZXggYWJkMGU3ZTcyOTQ3OTEyOGNiNmFmZmY3ZjIxODEyNjNlNGRhOTgzNS4uMTI3
ODA2ZmFkNDgxYWQyYjZmZmIyN2U3ODM4YjBjNjg5ODQwOTYyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRT
ZXJ2aWNlLm1tCkBAIC0yOCwxNSArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYg
UExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJDdGFwQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCAi
Q3RhcEhpZERyaXZlci5oIgogI2ltcG9ydCAiSGlkQ29ubmVjdGlvbi5oIgotI2ltcG9ydCAiVTJm
QXV0aGVudGljYXRvci5oIgotI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVy
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmlkb0hpZE1lc3Nh
Z2UuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIGZpZG87CkBAIC01Niw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRldmljZVJl
bW92ZWRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBJT1JldHVybiwgdm9pZCosIElPSElERGV2aWNl
UmVmCiB9CiAKIEhpZFNlcnZpY2U6OkhpZFNlcnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAg
IDogQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uob2JzZXJ2ZXIpCisgICAgOiBGaWRvU2Vy
dmljZShvYnNlcnZlcikKIHsKICAgICBtX21hbmFnZXIgPSBhZG9wdENGKElPSElETWFuYWdlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKICAgICBO
U0RpY3Rpb25hcnkgKm1hdGNoaW5nRGljdGlvbmFyeSA9IEB7CkBAIC05MiwzMiArODUsNyBAQCBV
bmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJ
T0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9I
SUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFw
SGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBhdXRo
ZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3QoZW5j
b2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50
aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJp
dmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewotICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8o
cHRyLCBXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0gICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X2RyaXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250aW51
ZUFkZERldmljZUFmdGVyR2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90
PiYmIHJlc3BvbnNlKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBkcml2
ZXIgPSBtX2RyaXZlcnMudGFrZShwdHIpOwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigp
IHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbmZv
ID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYmIGlu
Zm8tPnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52ZXJz
aW9ucygpLmVuZCgpKSB7Ci0gICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChD
dGFwQXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5mbykp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNl
IGEgY3RhcCBnZXQgaW5mbyByZXNwb25zZS4iKTsKLSAgICBkcml2ZXItPnNldFByb3RvY29sKFBy
b3RvY29sVmVyc2lvbjo6a1UyZik7Ci0gICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVk
KFUyZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJbmZv
KFdURjo6bWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmlj
ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZp
ZWxkU29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTA1ZmFjMjJiOWQ0MDVmNTMyODk3NzhhZTcwMTVh
MGI4MGU0YjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsuaApAQCAtMCwwICsxLDQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisj
aW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoV2ViS2l0LCBOZWFyRmllbGQpOworCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJLaXQsIE5GVGFnKTsKK1NPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFdlYktpdCwgTkZTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFdlYktpdCwgTkZSZWFkZXJTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdl
YktpdCwgTkZIYXJkd2FyZU1hbmFnZXIpOworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05lYXJGaWVsZFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1NDQy
MzM5NDRiMDJmYTU1ZWZkZTZjZjRhNzQ0MjlkMGU1YWM5OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNv
ZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKworI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhO
KQorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJG
aWVsZCk7CisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBO
RlRhZyk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZT
ZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBO
RlJlYWRlclNlc3Npb24pOworCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfT1BUSU9OQUwoV2ViS2l0LCBOZWFyRmllbGQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsK
KyNlbHNlCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZI
YXJkd2FyZU1hbmFnZXIpOworI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmZjQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiOWQ5NTc3ZTIwNWFhYjdk
YjdhM2FiMWU1NTliOTdkYzNlOTI0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLmgKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikgJiYgSEFWRShORUFSX0ZJRUxEKQorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworT0JKQ19DTEFTUyBORlJlYWRlclNlc3Npb247
CitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdh
dGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZmNTZXJ2aWNlOworCitjbGFzcyBO
ZmNDb25uZWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5mY0Nvbm5lY3Rpb24+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZmND
b25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBOZmNDb25uZWN0aW9uKFJldGFpblB0cjxORlJlYWRl
clNlc3Npb24+JiYsIE5mY1NlcnZpY2UmKTsKKyAgICB+TmZjQ29ubmVjdGlvbigpOworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Owor
CisgICAgLy8gRm9yIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUKKyAgICB2b2lkIGRpZERldGVj
dFRhZ3MoTlNBcnJheSAqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TkZSZWFk
ZXJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgUmV0YWluUHRyPFdLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGU+IG1fZGVsZWdhdGU7CisgICAgV2Vha1B0cjxOZmNTZXJ2aWNlPiBtX3NlcnZpY2U7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
ICYmIEhBVkUoTkVBUl9GSUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdlODJhMzY4MmM3ODY0NGQwODcyMGNlYjVkNWU1OTJhY2I4N2IwM2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9OZmNDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVVEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCisKKyNpbXBvcnQgIk5mY1NlcnZpY2UuaCIKKyNp
bXBvcnQgIldLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlk
b0NvbnN0YW50cy5oPgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIGZpZG87CisKK25hbWVzcGFjZSB7CitpbmxpbmUgYm9v
bCBjb21wYXJlVmVyc2lvbihOU0RhdGEgKmRhdGEsIGNvbnN0IHVpbnQ4X3QgdmVyc2lvbltdLCBz
aXplX3QgdmVyc2lvblNpemUpCit7CisgICAgaWYgKGRhdGEubGVuZ3RoICE9IHZlcnNpb25TaXpl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICFtZW1jbXAoZGF0YS5ieXRlcywg
dmVyc2lvbiwgdmVyc2lvblNpemUpOworfQorfSAvLyBuYW1lc3BhY2UKKworTmZjQ29ubmVjdGlv
bjo6TmZjQ29ubmVjdGlvbihSZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiYmIHNlc3Npb24sIE5m
Y1NlcnZpY2UmIHNlcnZpY2UpCisgICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAg
ICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoQ29ubmVjdGlvbjoqdGhpc10pKQorICAgICwgbV9zZXJ2aWNlKG1ha2VXZWFrUHRy
KHNlcnZpY2UpKQoreworICAgIFttX3Nlc3Npb24gc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQo
KV07CisgICAgLy8gRklYTUUoMjAwOTMzKQorI2lmIEhBVkUoTkZfUkVBREVSX1NFU1NJT05fVVBE
QVRFX1VJX0FMRVJUX01FU1NBR0UpCisgICAgW21fc2Vzc2lvbiB1cGRhdGVVSUFsZXJ0TWVzc2Fn
ZTpAIkhvbGQgdGhlIGtleSBhZ2FpbnN0IHRoZSB0b3Agb2YgeW91ciBkZXZpY2UuIl07CisjZW5k
aWYKKyAgICBbbV9zZXNzaW9uIHN0YXJ0UG9sbGluZ107Cit9CisKK05mY0Nvbm5lY3Rpb246On5O
ZmNDb25uZWN0aW9uKCkKK3sKKyAgICBbbV9zZXNzaW9uIGRpc2Nvbm5lY3RUYWddOworICAgIFtt
X3Nlc3Npb24gc3RvcFBvbGxpbmddOworICAgIFttX3Nlc3Npb24gZW5kU2Vzc2lvbl07Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBOZmNDb25uZWN0aW9uOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKSBjb25zdAoreworICAgIGF1dG8gcmVzcG9uc2VEYXRhID0gW21fc2Vzc2lvbiB0cmFu
c2NlaXZlOltOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldXTsKKworICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZTsKKyAgICByZXNwb25zZS5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzcG9uc2VEYXRhLmJ5dGVzKSwg
cmVzcG9uc2VEYXRhLmxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCit2b2lkIE5m
Y0Nvbm5lY3Rpb246OmRpZERldGVjdFRhZ3MoTlNBcnJheSAqdGFncykgY29uc3QKK3sKKyAgICAv
LyBGSVhNRSgyMDA5MzIpCisgICAgZm9yIChORlRhZyAqdGFnIGluIHRhZ3MpIHsKKyAgICAgICAg
aWYgKHRhZy50eXBlICE9IE5GVGFnVHlwZUdlbmVyaWM0QSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoIVttX3Nlc3Npb24gY29ubmVjdFRhZzp0YWddKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgLy8gQ29uZmlybSB0aGUgRklETyBhcHBsZXQgaXMgYXZhbGlh
YmxlIGJlZm9yZSByZXR1cm4uCisgICAgICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9z
cGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1w
cm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWFwcGxldC1zZWxlY3Rpb24KKyAgICAg
ICAgYXV0byB2ZXJzaW9uRGF0YSA9IFttX3Nlc3Npb24gdHJhbnNjZWl2ZTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6a0NUQVBORkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kIGxlbmd0aDpzaXplb2Yoa0NU
QVBORkNBcHBsZXRTZWxlY3Rpb25Db21tYW5kKV1dOworICAgICAgICBpZiAoIXZlcnNpb25EYXRh
IHx8ICghY29tcGFyZVZlcnNpb24odmVyc2lvbkRhdGEsIGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9u
VTJmLCBzaXplb2Yoa0NUQVBORkNBcHBsZXRTZWxlY3Rpb25VMmYpKSAmJiAhY29tcGFyZVZlcnNp
b24odmVyc2lvbkRhdGEsIGtDVEFQTkZDQXBwbGV0U2VsZWN0aW9uQ3RhcCwgc2l6ZW9mKGtDVEFQ
TkZDQXBwbGV0U2VsZWN0aW9uQ3RhcCkpKSkgeworICAgICAgICAgICAgW21fc2Vzc2lvbiBkaXNj
b25uZWN0VGFnXTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFtX3NlcnZpY2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2VydmljZS0+
ZGlkQ29ubmVjdFRhZygpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgSEFWRShORUFSX0ZJ
RUxEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTmZjU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZjEyOWE1ZjM0ODZmY2E4
NDA0NmRiNDAzNjQ1MDMxZjBlN2JjOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2luY2x1ZGUgIkZpZG9TZXJ2aWNlLmgiCisKK09CSkNfQ0xBU1MgTkZSZWFkZXJTZXNz
aW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ3RhcE5mY0RyaXZlcjsKKworY2xh
c3MgTmZjU2VydmljZSA6IHB1YmxpYyBGaWRvU2VydmljZSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgTmZjU2VydmljZShPYnNlcnZlciYpOworICAgIH5OZmNTZXJ2aWNlKCk7CisKKyAgICAvLyBG
b3IgTmZjQ29ubmVjdGlvbi4KKyAgICB2b2lkIGRpZENvbm5lY3RUYWcoKTsKKworI2lmIEhBVkUo
TkVBUl9GSUVMRCkKK3Byb3RlY3RlZDoKKyAgICAvLyBPbmx5IG9uZSByZWFkZXIgc2Vzc2lvbiBp
cyBhbGxvd2VkIHBlciB0aW1lLgorICAgIC8vIEtlZXAgdGhlIHJlYWRlciBzZXNzaW9uIGFsaXZl
IGhlcmUgd2hlbiBpdCB0cmllcyB0byBjb25uZWN0IHRvIGEgdGFnLgorICAgIHN0ZDo6dW5pcXVl
X3B0cjxDdGFwTmZjRHJpdmVyPiBtX2RyaXZlcjsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZv
aWQgc3RhcnREaXNjb3ZlcnlJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgY29udGludWVBZGRE
ZXZpY2VBZnRlckdldEluZm8oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpOworCisgICAgLy8g
T3ZlcnJpZGVkIGJ5IE1vY2tOZmNTZXJ2aWNlLgorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0
YXJ0RGlzY292ZXJ5KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZThkNTAzNzU5ZDQ1OTNlMTgyMjUwMDYxMWQ2YjBjMjdkNzQ4YjBmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2Vy
dmljZS5tbQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJOZmNTZXJ2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1w
b3J0ICJDdGFwTmZjRHJpdmVyLmgiCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQg
Ik5mY0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKworI2ltcG9ydCAiTmVhckZp
ZWxkU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05mY1NlcnZpY2U6Ok5mY1Nl
cnZpY2UoT2JzZXJ2ZXImIG9ic2VydmVyKQorICAgIDogRmlkb1NlcnZpY2Uob2JzZXJ2ZXIpCit7
Cit9CisKK05mY1NlcnZpY2U6On5OZmNTZXJ2aWNlKCkKK3sKK30KKwordm9pZCBOZmNTZXJ2aWNl
OjpkaWRDb25uZWN0VGFnKCkKK3sKKyNpZiBIQVZFKE5FQVJfRklFTEQpCisgICAgZ2V0SW5mbyhX
VEZNb3ZlKG1fZHJpdmVyKSk7CisjZW5kaWYKK30KKwordm9pZCBOZmNTZXJ2aWNlOjpzdGFydERp
c2NvdmVyeUludGVybmFsKCkKK3sKKyAgICBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCk7Cit9CisK
K3ZvaWQgTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCit7CisjaWYgSEFWRShO
RUFSX0ZJRUxEKQorICAgIGlmICghW1tnZXRORkhhcmR3YXJlTWFuYWdlckNsYXNzKCkgc2hhcmVk
SGFyZHdhcmVNYW5hZ2VyXSBhcmVGZWF0dXJlc1N1cHBvcnRlZDpORkZlYXR1cmVSZWFkZXJNb2Rl
IG91dEVycm9yOm5pbF0pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdpbGwgYmUgZXhlY3V0
ZWQgaW4gYSBkaWZmZXJlbnQgdGhyZWFkLgorICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlQmxvY2tQ
dHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoTkZSZWFkZXJTZXNzaW9u
ICpzZXNzaW9uLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIExPR19F
UlJPUigiQ291bGRuJ3Qgc3RhcnQgYSBORkMgcmVhZGVyIHNlc3Npb246ICVAIiwgZXJyb3IpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmV0YWluUHRyPE5GUmVh
ZGVyU2Vzc2lvbj4gcmV0YWluU2Vzc2lvbiA9IHNlc3Npb247CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHRoaXMsIHNlc3Npb24gPSByZXRhaW5TZXNzaW9uXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAg
ICBbc2Vzc2lvbiBlbmRTZXNzaW9uXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIEN0YXBOZmNEcml2ZXIgYW5kIE5mY0Nvbm5lY3Rpb24g
d2lsbCB0YWtlIGNhcmUgb2YgcG9sbGluZyB0YWdzIGFuZCBjb25uZWN0aW5nIHRvIHRoZW0uCisg
ICAgICAgICAgICBtX2RyaXZlciA9IFdURjo6bWFrZVVuaXF1ZTxDdGFwTmZjRHJpdmVyPihtYWtl
VW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+KFdURk1vdmUoc2Vzc2lvbiksICp0aGlzKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworICAgIFtbZ2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygpIHNoYXJl
ZEhhcmR3YXJlTWFuYWdlcl0gc3RhcnRSZWFkZXJTZXNzaW9uV2l0aEFjdGlvblNoZWV0VUk6Y2Fs
bGJhY2suZ2V0KCldOworI2VuZGlmIC8vIEhBVkUoTkVBUl9GSUVMRCkKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRl
clNlc3Npb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExZGJh
ZDk2Y2Y2MGE5YjczZTUwMGIxODIyOTAwM2Y1OTdkMmY4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgSEFWRShORUFSX0ZJRUxEKQorCisjaW1w
b3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgTmZjQ29ubmVjdGlvbjsKK30KKworQGludGVyZmFjZSBXS05GUmVh
ZGVyU2Vzc2lvbkRlbGVnYXRlIDogTlNPYmplY3QgPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPgor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5lY3Rp
b24mKWNvbm5lY3Rpb247CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYm
IEhBVkUoTkVBUl9GSUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vz
c2lvbkRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZDAyYzk4MzY0Y2E4YWI3NzQwODAxYzEzNmU5
MWM4NGMzY2ExYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldL
TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIEhB
VkUoTkVBUl9GSUVMRCkKKworI2ltcG9ydCAiTmZjQ29ubmVjdGlvbi5oIgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KKworI2ltcG9ydCAiTmVhckZpZWxkU29mdExpbmsuaCIKKworQGltcGxlbWVu
dGF0aW9uIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgeworICAgIFdlYWtQdHI8V2ViS2l0OjpO
ZmNDb25uZWN0aW9uPiBfY29ubmVjdGlvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29ubmVjdGlvbjooV2ViS2l0OjpOZmNDb25uZWN0aW9uJiljb25uZWN0aW9uCit7CisgICAgaWYg
KChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgX2Nvbm5lY3Rpb24gPSBtYWtlV2Vha1B0
cihjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLy8gRXhlY3V0ZWQgaW4gYSBk
aWZmZXJlbnQgdGhyZWFkLgorLSAodm9pZClyZWFkZXJTZXNzaW9uOihORlJlYWRlclNlc3Npb24q
KXRoZVNlc3Npb24gZGlkRGV0ZWN0VGFnczooTlNBcnJheTxORlRhZyAqPiAqKXRhZ3MKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFJldGFpblB0cjxOU0FycmF5PiBy
ZXRhaW5UYWdzID0gdGFnczsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rp
b24gPSBfY29ubmVjdGlvbiwgdGFncyA9IHJldGFpblRhZ3NdIHsKKyAgICAgICAgaWYgKCFjb25u
ZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb25uZWN0aW9uLT5kaWREZXRl
Y3RUYWdzKHRhZ3MuZ2V0KCkpOworICAgIH0pOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVVEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNTZXJ2
aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTMyY2RlNGQ2YjY2ZGFjMzFhY2M2Mjk2YzVlOTk4MjZhMjZiMzMw
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk5mY1NlcnZpY2Uu
aCIKKworT0JKQ19DTEFTUyBOU0RhdGE7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKKworY2xhc3MgTW9ja05mY1NlcnZp
Y2UgZmluYWwgOiBwdWJsaWMgTmZjU2VydmljZSB7CitwdWJsaWM6CisgICAgTW9ja05mY1NlcnZp
Y2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7
CisKKyAgICBOU0RhdGEqIHRyYW5zY2VpdmUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRm
b3JtU3RhcnREaXNjb3ZlcnkoKSBmaW5hbDsKKworICAgIHZvaWQgZGV0ZWN0VGFncygpIGNvbnN0
OworCisgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRp
b247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tOZmNTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2Y3MTAw
MjBlMTUwMDU1NDZlZDUxNzY4ZWY0M2IzMGEyZTBmZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2Vydmlj
ZS5tbQpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiTW9ja05mY1NlcnZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisjaW1w
b3J0ICJDdGFwTmZjRHJpdmVyLmgiCisjaW1wb3J0ICJOZWFyRmllbGRTUEkuaCIKKyNpbXBvcnQg
Ik5mY0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgorCisjaW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCisjaWYgSEFW
RShORUFSX0ZJRUxEKQorCitAaW50ZXJmYWNlIFdLTW9ja05GVGFnIDogTlNPYmplY3QgPE5GVGFn
PgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihORlRhZ1R5cGUpdHlwZTsKKworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV0tNb2NrTkZUYWcgeworICAgIE5GVGFnVHlwZSBfdHlwZTsK
K30KKworQHN5bnRoZXNpemUgdGVjaG5vbG9neTsKK0BzeW50aGVzaXplIHRhZ0lEOworQHN5bnRo
ZXNpemUgQXBwRGF0YTsKK0BzeW50aGVzaXplIFVJRDsKK0BzeW50aGVzaXplIG5kZWZBdmFpbGFi
aWxpdHk7CitAc3ludGhlc2l6ZSBuZGVmTWVzc2FnZVNpemU7CitAc3ludGhlc2l6ZSBuZGVmQ29u
dGFpbmVyU2l6ZTsKK0BzeW50aGVzaXplIHRhZ0E7CitAc3ludGhlc2l6ZSB0YWdCOworQHN5bnRo
ZXNpemUgdGFnRjsKKworLSAoTkZUYWdUeXBlKXR5cGUKK3sKKyAgICByZXR1cm4gX3R5cGU7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5GVGFnOihpZDxORlRhZz4pdGFnCit7CisgICAg
aWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgX3R5cGUgPSB0YWcudHlwZTsKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNTdHJpbmcqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0
dXJuIG5pbDsKK30KKworLSAoQk9PTClpc0VxdWFsVG9ORlRhZzooaWQ8TkZUYWc+KXRhZworewor
ICAgIHJldHVybiBOTzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooTkZUYWdU
eXBlKXR5cGUKK3sKKyAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBfdHlw
ZSA9IHR5cGU7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEhBVkUo
TkVBUl9GSUVMRCkKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsK
K3VzaW5nIE1vY2sgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM7CisK
KyNpZiBIQVZFKE5FQVJfRklFTEQpCisKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBpZDxORlJlYWRl
clNlc3Npb25EZWxlZ2F0ZT4gZ2xvYmFsTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CitzdGF0aWMg
TW9ja05mY1NlcnZpY2UqIGdsb2JhbE5mY1NlcnZpY2U7CisKK3N0YXRpYyB2b2lkIE5GUmVhZGVy
U2Vzc2lvblNldERlbGVnYXRlKGlkLCBTRUwsIGlkPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlPiBk
ZWxlZ2F0ZSkKK3sKKyAgICBnbG9iYWxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworfQorCitzdGF0aWMgQk9PTCBORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbChpZCwgU0VM
LCBORlRhZyAqKQoreworICAgIHJldHVybiBOTzsKK30KKworc3RhdGljIEJPT0wgTkZSZWFkZXJT
ZXNzaW9uQ29ubmVjdFRhZyhpZCwgU0VMLCBORlRhZyAqKQoreworICAgIHJldHVybiBZRVM7Cit9
CisKK3N0YXRpYyBOU0RhdGEqIE5GUmVhZGVyU2Vzc2lvblRyYW5zY2VpdmUoaWQsIFNFTCwgTlNE
YXRhICopCit7CisgICAgaWYgKCFnbG9iYWxOZmNTZXJ2aWNlKQorICAgICAgICByZXR1cm4gbmls
OworICAgIHJldHVybiBnbG9iYWxOZmNTZXJ2aWNlLT50cmFuc2NlaXZlKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlCisKKyNlbmRpZiAvLyBIQVZFKE5FQVJfRklFTEQpCisKK01vY2tOZmNTZXJ2aWNl
OjpNb2NrTmZjU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAgOiBOZmNTZXJ2aWNlKG9i
c2VydmVyKQorICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCit7Cit9CisKK05T
RGF0YSogTW9ja05mY1NlcnZpY2U6OnRyYW5zY2VpdmUoKQoreworICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIGF1dG8gcmVzdWx0ID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2Rl
ZFN0cmluZzptX2NvbmZpZ3VyYXRpb24ubmZjLT5wYXlsb2FkQmFzZTY0WzBdIG9wdGlvbnM6TlNE
YXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc107CisgICAgbV9jb25maWd1
cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NC5yZW1vdmUoMCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCit7Cisj
aWYgSEFWRShORUFSX0ZJRUxEKQorICAgIGlmICghIW1fY29uZmlndXJhdGlvbi5uZmMpIHsKKyAg
ICAgICAgZ2xvYmFsTmZjU2VydmljZSA9IHRoaXM7CisKKyAgICAgICAgTWV0aG9kIG1ldGhvZFRv
U3dpenpsZTEgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNlc3Npb25DbGFz
cygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSk7CisgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1l
bnRhdGlvbihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5GUmVhZGVyU2Vzc2lvblNldERlbGVnYXRl
KTsKKworICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxlMiA9IGNsYXNzX2dldEluc3RhbmNl
TWV0aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBzZWxlY3Rvcihjb25uZWN0VGFnOikp
OworICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6
Ok5vQ29ubmVjdGlvbnMpCisgICAgICAgICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0
aG9kVG9Td2l6emxlMiwgKElNUClORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3
aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWcpOworCisgICAgICAgIE1ldGhv
ZCBtZXRob2RUb1N3aXp6bGUzID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoZ2V0TkZSZWFkZXJT
ZXNzaW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHRyYW5zY2VpdmU6KSk7CisgICAgICAgIG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUzLCAoSU1QKU5GUmVhZGVyU2Vzc2lvblRy
YW5zY2VpdmUpOworCisgICAgICAgIGF1dG8gcmVhZGVyU2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9j
TkZSZWFkZXJTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CisgICAgICAgIG1fZHJpdmVyID0gV1RG
OjptYWtlVW5pcXVlPEN0YXBOZmNEcml2ZXI+KG1ha2VVbmlxdWVSZWY8TmZjQ29ubmVjdGlvbj4o
cmVhZGVyU2Vzc2lvbi5nZXQoKSwgKnRoaXMpKTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5kZXRlY3RUYWdzKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIExPR19FUlJPUigiTm8gbmZjIGF1dGhlbnRpY2F0b3JzIGlzIGF2YWlsYWJsZS4iKTsKKyNl
bmRpZiAvLyBIQVZFKE5FQVJfRklFTEQpCit9CisKK3ZvaWQgTW9ja05mY1NlcnZpY2U6OmRldGVj
dFRhZ3MoKSBjb25zdAoreworI2lmIEhBVkUoTkVBUl9GSUVMRCkKKyAgICBpZiAobV9jb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Ok5vVGFncykKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbY29uZmlndXJhdGlvbiA9IG1f
Y29uZmlndXJhdGlvbl0geworICAgICAgICBhdXRvIHRhZ3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubmZjLT5lcnJv
ciA9PSBNb2NrOjpFcnJvcjo6V3JvbmdUYWdUeXBlIHx8IGNvbmZpZ3VyYXRpb24ubmZjLT5tdWx0
aXBsZVRhZ3MpCisgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6W1tXS01vY2tORlRhZyBhbGxv
Y10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZVVua25vd25dXTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgW3RhZ3MgYWRkT2JqZWN0OltbV0tNb2NrTkZUYWcgYWxsb2NdIGluaXRXaXRoVHlwZTpO
RlRhZ1R5cGVHZW5lcmljNEFdXTsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5uZmMtPm11
bHRpcGxlVGFncykKKyAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dLTW9ja05GVGFnIGFs
bG9jXSBpbml0V2l0aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAgICAgICAgW2dsb2Jh
bE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIHJlYWRlclNlc3Npb246bmlsIGRpZERldGVjdFRhZ3M6
dGFncy5nZXQoKV07CisgICAgfSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgY2FsbGJhY2su
Z2V0KCkpOworI2VuZGlmIC8vIEhBVkUoTkVBUl9GSUVMRCkKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCBm
N2MzOTY5Njk1OTQxOGFiOTUwZDY3ZjQ0MzZlY2ZlM2EzY2JmZDFjLi5mNDBhN2I3YmQ4YmUxYjdk
MGIzNDI4NWJkNjY2Yzg3ZDBkY2Q3OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtNzIsOSArNzIsMjQg
QEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBi
b29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CiAgICAgfTsKIAorICAgIHN0cnVjdCBOZmMgewor
ICAgICAgICBlbnVtIGNsYXNzIEVycm9yIDogdWludDhfdCB7CisgICAgICAgICAgICBTdWNjZXNz
LAorICAgICAgICAgICAgTm9UYWdzLAorICAgICAgICAgICAgV3JvbmdUYWdUeXBlLAorICAgICAg
ICAgICAgTm9Db25uZWN0aW9ucywKKyAgICAgICAgICAgIE1hbGljaW91c1BheWxvYWQKKyAgICAg
ICAgfTsKKworICAgICAgICBFcnJvciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07CisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVsdGlwbGVUYWdz
IHsgZmFsc2UgfTsKKyAgICB9OworCiAgICAgYm9vbCBzaWxlbnRGYWlsdXJlIHsgZmFsc2UgfTsK
ICAgICBPcHRpb25hbDxMb2NhbD4gbG9jYWw7CiAgICAgT3B0aW9uYWw8SGlkPiBoaWQ7CisgICAg
T3B0aW9uYWw8TmZjPiBuZmM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1
dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggYTAxNTVlZDFiZjYyMGY4MGE4YzRl
ODg2NjU1MWRjNDg2MzE0MGM2ZS4uMGY5OTMzMzQ5OGIyYzczMDVjMzMxYTE1OGYyMWE0MWRhNDkw
OWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdGFwQXV0aGVudGljYXRv
ci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSAiQ3RhcEhp
ZERyaXZlci5oIgpAQCAtMTE1LDQgKzExNSw0IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnRy
eURvd25ncmFkZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggMzFlODg4ODc1YTU2ZmVm
OGUwOTA4MThhMTg2YzU3MTMzNTAzY2YzYi4uYTE4ZGYwNDk0YTk3N2U5OTA1ZDRmZTNkZTYwODI4
NmNlNDc3YjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBM
QVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5o
PgpAQCAtNTgsNCArNTgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAot
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmNjYTNiMjgwYjg4ODk3MjNkYTBhMzZkNzMwMTMxMjA5MDZhNTEwYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cE5mY0RyaXZlci5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDdGFwTmZjRHJpdmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FwZHVDb21tYW5k
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBhcGR1OwordXNp
bmcgbmFtZXNwYWNlIGZpZG87CisKK0N0YXBOZmNEcml2ZXI6OkN0YXBOZmNEcml2ZXIoVW5pcXVl
UmVmPE5mY0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQoreworfQorCisvLyBGSVhNRSgyMDA5MzQpOiBTdXBwb3J0IE5GQ0NU
QVBfR0VUUkVTUE9OU0UKK3ZvaWQgQ3RhcE5mY0RyaXZlcjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIC8vIEZvciBD
VEFQMiwgY29tbWFuZHMgZm9sbG93OgorICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9z
cGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1w
cm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWNvbW1hbmQtZnJhbWluZworICAgIGlm
IChwcm90b2NvbCgpID09IFByb3RvY29sVmVyc2lvbjo6a0N0YXApIHsKKyAgICAgICAgQXBkdUNv
bW1hbmQgY29tbWFuZDsKKyAgICAgICAgY29tbWFuZC5zZXRDbGEoMHg4MCk7CisgICAgICAgIGNv
bW1hbmQuc2V0SW5zKDB4MTApOworICAgICAgICBjb21tYW5kLnNldERhdGEoV1RGTW92ZShkYXRh
KSk7CisgICAgICAgIGNvbW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoQXBkdUNvbW1hbmQ6OmtBcGR1
TWF4UmVzcG9uc2VMZW5ndGgpOworCisgICAgICAgIGF1dG8gYXBkdVJlc3BvbnNlID0gQXBkdVJl
c3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShtX2Nvbm5lY3Rpb24tPnRyYW5zYWN0KGNvbW1hbmQu
Z2V0RW5jb2RlZENvbW1hbmQoKSkpOworICAgICAgICBpZiAoIWFwZHVSZXNwb25zZSkgeworICAg
ICAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCB7IH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChhcGR1UmVzcG9uc2UtPnN0YXR1cygp
ID09IEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19JTlNfTk9UX1NVUFBPUlRFRCkgeworICAgICAg
ICAgICAgLy8gUmV0dXJuIGtDdGFwMUVyckludmFsaWRDb21tYW5kIGluc3RlYWQgb2YgYW4gZW1w
dHkgcmVzcG9uc2UgdG8gc2lnbmFsIEZpZG9TZXJ2aWNlIHRvIGNyZWF0ZSBhIFUyRiBhdXRoZW50
aWNhdG9yCisgICAgICAgICAgICAvLyBmb3IgdGhlIGdldEluZm8gc3RhZ2UuCisgICAgICAgICAg
ICByZXNwb25kQXN5bmMoV1RGTW92ZShjYWxsYmFjayksIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4o
Q3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAxRXJySW52YWxpZENvbW1hbmQpIH0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChhcGR1UmVzcG9uc2UtPnN0
YXR1cygpICE9IEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUikgeworICAgICAgICAg
ICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJhY2spLCB7IH0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBTb21laG93IGVsaW1pbmF0ZSB0aGUg
bmVlZCBmb3IgdGhlIGNvcHk/CisgICAgICAgIHJlc3BvbmRBc3luYyhXVEZNb3ZlKGNhbGxiYWNr
KSwgVmVjdG9yPHVpbnQ4X3Q+KGFwZHVSZXNwb25zZS0+ZGF0YSgpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBGb3IgVTJGLCBVMmZBdXRoZW50aWNhdG9yIHdvdWxkIGhhbmRs
ZSB0aGUgQVBEVSBlbmNvZGluZy4KKyAgICAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3Bl
Y3MvZmlkby11MmYtdjEuMi1wcy0yMDE3MDQxMS9maWRvLXUyZi1uZmMtcHJvdG9jb2wtdjEuMi1w
cy0yMDE3MDQxMS5odG1sI2ZyYW1pbmcKKyAgICBjYWxsYmFjayhtX2Nvbm5lY3Rpb24tPnRyYW5z
YWN0KFdURk1vdmUoZGF0YSkpKTsKK30KKworLy8gUmV0dXJuIHRoZSByZXNwb25zZSBhc3luYyB0
byBtYXRjaCB0aGUgSElEIGJlaGF2aW91ciwgc3VjaCB0aGF0IG5mYyBjb3VsZCBmaXQgaW50byB0
aGUgY3VycmVudCBpbmZyYS4KK3ZvaWQgQ3RhcE5mY0RyaXZlcjo6cmVzcG9uZEFzeW5jKFJlc3Bv
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaywgVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIGNvbnN0
Cit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXNwb25zZSkpOworICAgIH0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIEhBVkUoTkVBUl9G
SUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZkMTI5ZTc0ZTQ4
MTEwZWI3YzhkMGE1OWNkZjI0NDc0ZmEzMDYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pICYmIEhBVkUoTkVBUl9GSUVMRCkKKworI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIK
KyNpbmNsdWRlICJOZmNDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIHRoZSBD
VEFQIE5GQyBwcm90b2NvbDoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRv
LXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12
Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjCitjbGFzcyBDdGFwTmZjRHJpdmVyIDogcHVibGljIEN0
YXBEcml2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEN0YXBOZmNEcml2ZXIoVW5pcXVlUmVm
PE5mY0Nvbm5lY3Rpb24+JiYpOworCisgICAgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQg
cmVzcG9uZEFzeW5jKFJlc3BvbnNlQ2FsbGJhY2smJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9u
c2UpIGNvbnN0OworCisgICAgVW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikgJiYgSEFWRShORUFSX0ZJRUxEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNzBhMDU4MGE3ZmIzZTA4ZTMwMmM3NmI5YTZjMDYwOTI3ODUxZTRmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9G
aWRvU2VydmljZS5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGaWRvU2VydmljZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikKKworI2luY2x1ZGUgIkN0YXBBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSAiQ3RhcERyaXZl
ci5oIgorI2luY2x1ZGUgIlUyZkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rl
dmljZVJlcXVlc3RDb252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisK
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworRmlkb1NlcnZp
Y2U6OkZpZG9TZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKKyAgICA6IEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnRTZXJ2aWNlKG9ic2VydmVyKQoreworfQorCit2b2lkIEZpZG9TZXJ2aWNlOjpnZXRJ
bmZvKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPiYmIGRyaXZlcikKK3sKKyAgICAvLyBHZXQg
YXV0aGVudGljYXRvciBpbmZvIGZyb20gdGhlIGRldmljZS4KKyAgICBkcml2ZXItPnRyYW5zYWN0
KGVuY29kZUVtcHR5QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0
aGVudGljYXRvckdldEluZm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHB0ciA9
IGRyaXZlci5nZXQoKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKKyAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlQWZ0ZXJHZXRJbmZvKHB0ciwg
V1RGTW92ZShyZXNwb25zZSkpOworICAgIH0pOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kcml2
ZXJzLmFkZChXVEZNb3ZlKGRyaXZlcikpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgRmlkb1NlcnZpY2U6OmNvbnRpbnVlQWZ0
ZXJHZXRJbmZvKEN0YXBEcml2ZXIqIHB0ciwgVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpCit7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IGRyaXZlciA9IG1fZHJpdmVycy50YWtl
KHB0cik7CisgICAgaWYgKCFkcml2ZXIgfHwgIW9ic2VydmVyKCkgfHwgcmVzcG9uc2UuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGluZm8gPSByZWFkQ1RBUEdldEluZm9S
ZXNwb25zZShyZXNwb25zZSk7CisgICAgaWYgKGluZm8gJiYgaW5mby0+dmVyc2lvbnMoKS5maW5k
KFByb3RvY29sVmVyc2lvbjo6a0N0YXApICE9IGluZm8tPnZlcnNpb25zKCkuZW5kKCkpIHsKKyAg
ICAgICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKEN0YXBBdXRoZW50aWNhdG9yOjpj
cmVhdGUoV1RGTW92ZShkcml2ZXIpLCBXVEZNb3ZlKCppbmZvKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgYSBjdGFwIGdldCBpbmZvIHJl
c3BvbnNlLiIpOworICAgIGRyaXZlci0+c2V0UHJvdG9jb2woUHJvdG9jb2xWZXJzaW9uOjprVTJm
KTsKKyAgICBvYnNlcnZlcigpLT5hdXRoZW50aWNhdG9yQWRkZWQoVTJmQXV0aGVudGljYXRvcjo6
Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmU2M2U4Zjg3YjI4MzAyYTBiNThiOGMwN2Y1ODcyMTI0NjBjNmQ4MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Rmlkb1NlcnZpY2UuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW5jbHVkZSAiQXV0aGVudGljYXRvclRyYW5z
cG9ydFNlcnZpY2UuaCIKKyNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEZpZG9TZXJ2aWNlIDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBGaWRvU2VydmljZShPYnNlcnZlciYpOwor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBnZXRJbmZvKHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVy
PiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJHZXRJbmZvKEN0YXBEcml2
ZXIqIHB0ciwgVmVjdG9yPHVpbnQ4X3Q+JiYgaW5mbyk7CisKKyAgICAvLyBLZWVwaW5nIGRyaXZl
cnMgYWxpdmUgd2hlbiB0aGV5IGFyZSBnZXR0aW5nIGluZm8gZnJvbSBkZXZpY2VzLgorICAgIEhh
c2hTZXQ8c3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+PiBtX2RyaXZlcnM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1
dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAppbmRleCBhNTg1NjcyZmQyYzljMzFjZWVjNDM2
MTZmYzcwNTc4NTU3NWFhNTc3Li40ZDEyYTk2NWQ3ZjAxOWEzYTUzYjlmZDI2ZWM2Y2EzZmUyNjRi
MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVMmZBdXRoZW50aWNhdG9yLmgi
CiAKLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKIAogI2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fw
ZHVSZXNwb25zZS5oPgpAQCAtMjM4LDQgKzIzOCw0IEBAIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6
Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBh
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikg
JiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhl
bnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vVTJmQXV0aGVudGljYXRvci5oCmluZGV4IDlhNDc3MzY4NmY2MDdjMGJhNDBkY2NjN2Y1ZGY4
MTEwNWM1NTU5OWMuLmQ5MDU1Y2QwNTkwMTQxNWFhZDUzZDIxOWVhMTNmOWNlZjQ2N2E5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
VTJmQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc5LDQgKzc5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDMxYjdkODMwZDMwN2ZhZDg1YzI2ZDU4
YzBlZjZhNzJiMjM1ODkzMmYuLjI4MzAzOGQzNGVlMzg3NGRjNDYzOTk2MDFjYjA5NDliNzY3Y2Fm
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
aCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJVc2VyRGF0YS5oIgorI2ltcG9ydCAi
VmVyc2lvbkNoZWNrcy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmgi
CiAjaW1wb3J0ICJWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDRhMThjMzRiZmUyYTlhYWI5MmVh
ZTA2Yjg3MmU0OWJhYTk0ODY3OS4uZWViMDA2NjAxNzNjNDk3Y2QxYTJlNTUwNzhiOTE4ZjgxZjFh
ZmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDM1LDYgKzEwMzUsMTAgQEAKIAkJNTNCQTQ3RDExREMyRUY1RTAwNERGNEFEIC8q
IE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzOUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tC
bG9iLmggKi87IH07CiAJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNv
bXBsZXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzQ0ZCQkM3MjIyNEQxQjAwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLzsg
fTsKIAkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MEFCOEYyMjBBRTNC
RDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggKi87IH07CisJCTU3MERBQUFFMjMwMjZG
NUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFBQzIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5o
ICovOyB9OworCQk1NzBEQUFDMjIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzAyMzAz
NzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJNTcwREFBQzYyMzAzN0Y3
RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAv
KiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87IH07CisJCTU3MERBQUNBMjMwMzg1RkQw
MEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZl
ci5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVU
b1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dpbmRv
d09ic2VydmVyLmggKi87IH07CiAJCTU3NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovOyB9OwogCQk1NzU5
N0VCRDIxODE4NDkwMDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk3RUJCMjE4MTg0OEYwMDM3Rjky
NCAvKiBDdGFwQXV0aGVudGljYXRvci5oICovOyB9OwpAQCAtMTA0Myw2ICsxMDQ3LDExIEBACiAJ
CTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OERDMjk3
MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCAqLzsgfTsK
IAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QUM4RjRFMjE3RkVFRDkwMDU1
NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi87IH07CiAJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3
OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I0QjQ1RTIwQjUwNEFC
MDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5o
ICovOyB9OworCQk1N0I4MjY0MTIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MDIzMDRF
QjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmggKi87IH07CisJCTU3QjgyNjQ0MjMwNEYxNDAw
MEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NDIyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVs
ZFNvZnRMaW5rLmggKi87IH07CisJCTU3QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmll
bGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3QjgyNjQzMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSAqLzsg
fTsKKwkJNTdCODI2NDgyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0NjIzMDUwQzUxMDBC
NzJFQjAgLyogRmlkb1NlcnZpY2UuaCAqLzsgfTsKKwkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIw
IC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAq
LzsgfTsKIAkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
QkJFQTZDMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggKi87
IH07CiAJCTU3RENFRDZFMjE0MkVFNUUwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTU3RENFRDZGMjE0MkVF
NjMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkEyMTQyRUFF
MjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VzLmggKi87IH07
CkBAIC0zNDczLDYgKzM0ODIsMTUgQEAKIAkJNTcwQUI5MDAyMEIyNTE3NDAwQjhCRTg3IC8qIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTcwQUI5MDMyMEIyNTQxQzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZWNLZXlQcm94eVN0
b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBCNzNDRjIzMDIzNkREMDBG
QUVDNTMgLyogQ3RhcERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwRHJpdmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUFDMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNT
ZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5mY1NlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTcwREFBQUQyMzAyNkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2UubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBOZmNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyogTmVhckZpZWxkLmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gTmVhckZpZWxkLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL05lYXJGaWVsZC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBT
REtST09UOyB9OworCQk1NzBEQUFDMDIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZmNDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3MERBQUMxMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmZjQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTcwREFBQzQyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFDNTIzMDM3RjdFMDBFOEZDMDQgLyogV0tO
RlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTkZSZWFk
ZXJTZXNzaW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERB
QUM4MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN0
YXBOZmNEcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzkyMzAz
ODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Rh
cE5mY0RyaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkZENDQxMjIy
NjVDRTIwMEExRUNDMyAvKiBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3NTA3NUE3MjBBQjc2MzYwMDY5M0VBOSAvKiBXZWJDcmVkZW50aWFs
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2Fs
QXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBMb2NhbEF1dGhlbnRp
Y2F0aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtMzQ5
Nyw2ICszNTE1LDEzIEBACiAJCTU3QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSGlkQ29ubmVjdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNEI0NUQyMEI1MDRBQjAwRDRBRDc5IC8qIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3QjRCNDVFMjBCNTA0QUIwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1
dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJG
aWVsZFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZWFyRmllbGRTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDIyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRM
aW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5lYXJGaWVsZFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3QjgyNjQzMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0
TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5lYXJGaWVsZFNvZnRMaW5rLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0NjIzMDUwQzUxMDBCNzJFQjAgLyogRmlk
b1NlcnZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlkb1NlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDcyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpZG9TZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tOZmNTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3QjgyNjRCMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1vY2tOZmNTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1N0RDRUQ2QjIx
NDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC02MTkzLDYgKzYyMTgsNyBA
QAogCQkJCUExRkI2ODI2MUY2RTUxQzEwMEM0M0Y5RiAvKiBDcmFzaFJlcG9ydGVyQ2xpZW50U1BJ
LmggKi8sCiAJCQkJNTdEQ0VEQUEyMTRCOUI0MzAwMTZCODQ3IC8qIERldmljZUlkZW50aXR5U1BJ
LmggKi8sCiAJCQkJMkRBQURBOEUyMjk4QzIxMDAwRTM2QjBDIC8qIERldmljZU1hbmFnZW1lbnRT
UEkuaCAqLywKKwkJCQk1N0I4MjY0MDIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmgg
Ki8sCiAJCQkJMzc1NEQ1NDQxQjNBMjlGRDAwM0E0QzdGIC8qIE5TSW52b2NhdGlvblNQSS5oICov
LAogCQkJCTM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAvKiBvYmpjU1BJLmggKi8sCiAJCQkJMEU5
N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oICovLApAQCAtNjk1OSw2
ICs2OTg1LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTc1
MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICov
LAorCQkJCTU3MERBQUIwMjMwMjczRDIwMEU4RkMwNCAvKiBOZWFyRmllbGQuZnJhbWV3b3JrICov
LAogCQkJKTsKIAkJCW5hbWUgPSBGcmFtZXdvcmtzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTY5NzEsNiArNjk5OCwxMCBAQAogCQkJCTU3MEI3M0NGMjMwMjM2REQwMEZBRUM1MyAv
KiBDdGFwRHJpdmVyLmggKi8sCiAJCQkJNTc1OTdFQzAyMTgxOEJFMjAwMzdGOTI0IC8qIEN0YXBI
aWREcml2ZXIuY3BwICovLAogCQkJCTU3NTk3RUI3MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlk
RHJpdmVyLmggKi8sCisJCQkJNTcwREFBQzkyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuY3BwICovLAorCQkJCTU3MERBQUM4MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVy
LmggKi8sCisJCQkJNTdCODI2NDcyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmNwcCAq
LywKKwkJCQk1N0I4MjY0NjIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCAqLywKIAkJ
CQk1N0VCMkUzOTIxRTE5ODNFMDBCODlDREYgLyogVTJmQXV0aGVudGljYXRvci5jcHAgKi8sCiAJ
CQkJNTdFQjJFMzgyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRpY2F0b3IuaCAqLywKIAkJ
CSk7CkBAIC03MDMyLDYgKzcwNjMsMTQgQEAKIAkJCQk1N0RDRURBODIxNEE1NjhCMDAxNkI4NDcg
LyogTG9jYWxDb25uZWN0aW9uLm1tICovLAogCQkJCTU3RENFRDlBMjE0OEIwODMwMDE2Qjg0NyAv
KiBMb2NhbFNlcnZpY2UuaCAqLywKIAkJCQk1N0RDRURBMDIxNDhGQTBGMDAxNkI4NDcgLyogTG9j
YWxTZXJ2aWNlLm1tICovLAorCQkJCTU3QjgyNjQyMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmll
bGRTb2Z0TGluay5oICovLAorCQkJCTU3QjgyNjQzMjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmll
bGRTb2Z0TGluay5tbSAqLywKKwkJCQk1NzBEQUFDMDIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29u
bmVjdGlvbi5oICovLAorCQkJCTU3MERBQUMxMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0
aW9uLm1tICovLAorCQkJCTU3MERBQUFDMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLmgg
Ki8sCisJCQkJNTcwREFBQUQyMzAyNkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2UubW0gKi8sCisJ
CQkJNTcwREFBQzQyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUu
aCAqLywKKwkJCQk1NzBEQUFDNTIzMDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNzA0OSw2ICs3MDg4LDggQEAKIAkJCQk1N0RDRURDNjIxNEYxODMwMDAx
NkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1N0RDRURDMTIxNEYxMTRD
MDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovLAogCQkJCTU3RENFREMyMjE0RjExNEMw
MDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLm1tICovLAorCQkJCTU3QjgyNjRBMjMwNjAzQzEw
MEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oICovLAorCQkJCTU3QjgyNjRCMjMwNjAzQzEwMEI3
MkVCMCAvKiBNb2NrTmZjU2VydmljZS5tbSAqLywKIAkJCQk1N0RDRURCRTIxNENBMDFCMDAxNkI4
NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBNb2NrOwpAQCAtOTM1NSw2ICs5Mzk2LDcgQEAKIAkJCQlBMUZCNjgyNzFGNkU1MUMx
MDBDNDNGOUYgLyogQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTcwREFBQ0EyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NUY5MTcxMUM1OTY3NkUwMDI5RTkyRCAvKiBEYXRh
RGV0ZWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTYxMEY0
MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTM4Niw2ICs5NDI4
LDcgQEAKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZl
bnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0I4MjY0ODIzMDUwQzUxMDBCNzJF
QjAgLyogRmlkb1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQjk2NjFBMThFMjVBRTEw
MENFMUY4OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFGNDEyNjRG
RDcxMDAzRTQ0RDQgLyogRmluZENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0
QTU5MThCODExNzQwMDdCRENCNiAvKiBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk0NzQsNiArOTUxNyw3IEBACiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZC
ODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdE
Q0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1Nl
cnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREJGMjE0RjBEQ0YwMDE2Qjg0NyAvKiBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDUwMzY2QjFCQ0RFMTc5MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTk0ODEsNiArOTUyNSw4IEBACiAJCQkJMUFEQ0I4NkIxODk4MzFCMzAwMjJF
RTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4
MDIyQjM1MTU4MDA4RDBFOEIgLyogTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQkMzREY2MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3QjgyNjQ0MjMwNEYxNDAwMEI3MkVCMCAvKiBO
ZWFyRmllbGRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NDEyMzA0RUIzRTAw
QjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RkJBMkExMUU2
ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTZGQkQyODExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNEE5QzU2MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVs
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTI2LDYgKzk1NzIsOCBAQAogCQkJCTVDMjBDQkEwMUJC
MUVDRDgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTMy
MTU5NTUxREJBRTcyOTAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxNzkxNUI5MjI1NzA0NkYwMEQ2Rjk3RSAvKiBOZXR3b3JrU29ja2V0Q2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcwREFBQzIyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUFFMjMwMjZGNUMwMEU4RkMwNCAv
KiBOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM1NjE0ODk5QzA5MDA4MTBE
NzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxMzEyNjFGMTQ4RkY4MkMwMEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzUyMTQ4OTk4MTkwMDgxMEQ3MSAv
KiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDE1NCw2ICsxMDIwMiw3IEBACiAJCQkJMUExQjBFQjgxOEE0MjRDRDAwMzg0ODFB
IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QTEzMjEyMTkxRDU5MjQwMDlDMTQ4OSAvKiBXS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTJEM0E2NURGMUE3QzNBN0QwMENBQzYzNyAvKiBXS05hdmlnYXRp
b25SZXNwb25zZVJlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcwREFBQzYyMzAzN0Y3RjAwRThG
QzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
OEJFMTc5MTQ3NDNFNkYwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzE4QkUxNzExNDc0M0RCMTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNzQxNDhENTlDQTAwODEwRDcxIC8qIFdLTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTExMzgsNiArMTEx
ODcsNyBAQAogCQkJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlUmVjZWl2ZXJN
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODIyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1l
c3NhZ2VTZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0EyMTJCNkE2MTAwRjQ5
M0ZEIC8qIE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0I4MjY0NTIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0
MzIxMkNGOUYwMDAxMjhBRkQgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MTM0NDQyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzk2MjEyQjZBREEwMEY0OTNGRCAvKiBOZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNjY3Yzg2YjJjNDU3MGUyMGU0N2ZjYzU0NTM0ZTM3
ZDBhNzUyOTVmLi5hNDRjOTg0ZGU2NTYyMjgyNGQwYjRiZDMxODg2YmI4ZDBmMjgzYzAwIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTktMDgtMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3JzIGZvciBpT1MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODYyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAgU2V0dXAgTkZDIG1vY2sgdGVzdGlu
ZyBjb25maWd1cmF0aW9uLgorCiAyMDE5LTA4LTIwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEFkZCBUb29sVGlwcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggZmExYmMxZGRiYjcxNmY3YjM3YmQwNzc3ZGEwMDE2ZGJlMmViYjA0Yy4uMDlk
YjUxZmQ4MTYyMWE4NWIwNmU4ZjgzMzAzNDBkYjU3ODdmMDhhMCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNzE2
LDYgKzI3MTYsNzEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKEpTVmFsdWVSZWYgY29uZmlndXJhdGlvblYKICAgICAgICAgY29uZmlndXJh
dGlvblZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3SGlkS2V5cy5k
YXRhKCksIHJhd0hpZFZhbHVlcy5kYXRhKCksIHJhd0hpZEtleXMuc2l6ZSgpKSkpOwogICAgIH0K
IAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBuZmNQcm9wZXJ0eU5hbWUoQWRvcHQsIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJuZmMiKSk7CisgICAgSlNWYWx1ZVJlZiBuZmNW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uZmlndXJhdGlvbiwgbmZjUHJv
cGVydHlOYW1lLmdldCgpLCAwKTsKKyAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0
LCBuZmNWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbmZjVmFsdWUpKSB7CisgICAg
ICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIG5mY1ZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgSlNPYmplY3RSZWYgbmZjID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIG5mY1ZhbHVlLCAwKTsKKworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZXJy
b3JQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlcnJv
ciIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBlcnJvclZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBuZmMsIGVycm9yUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgaWYg
KCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgZXJyb3JWYWx1ZSkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4gbmZjS2V5czsK
KyAgICAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IG5mY1ZhbHVlczsKKyAgICAg
ICAgbmZjS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
RXJyb3IiKSkpOworICAgICAgICBuZmNWYWx1ZXMuYXBwZW5kKHRvV0soYWRvcHQoSlNWYWx1ZVRv
U3RyaW5nQ29weShjb250ZXh0LCBlcnJvclZhbHVlLCAwKSkuZ2V0KCkpKTsKKworICAgICAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZShBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBheWxvYWRCYXNlNjQiKSk7CisgICAgICAg
IEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCBuZmMsIHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBp
ZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpICYmICFK
U1ZhbHVlSXNOdWxsKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpIHsKKyAgICAgICAgICAg
IGlmICghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHBheWxvYWRCYXNl
NjQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0aFByb3BlcnR5ID0gYWRvcHQoSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWYgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBwYXlsb2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAg
ICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFs
dWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBwYXlsb2Fk
QmFzZTY0cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgICAgICAgICBh
dXRvIHBheWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVmFsdWVUb051
bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZEJhc2U2NExlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVj
dEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBpLCBudWxscHRyKTsK
KyAgICAgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBwYXlsb2FkQmFz
ZTY0VmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBXS0FycmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0cy5nZXQoKSwgdG9XSyhhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKS5n
ZXQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkpOworICAg
ICAgICAgICAgbmZjVmFsdWVzLmFwcGVuZChwYXlsb2FkQmFzZTY0cyk7CisgICAgICAgIH0KKwor
ICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbXVsdGlwbGVUYWdzUHJvcGVydHlOYW1l
KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibXVsdGlwbGVUYWdzIikpOwor
ICAgICAgICBKU1ZhbHVlUmVmIG11bHRpcGxlVGFnc1ZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBuZmMsIG11bHRpcGxlVGFnc1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAg
ICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKSAm
JiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkpIHsKKyAgICAgICAg
ICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCBtdWx0aXBsZVRhZ3NWYWx1ZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBtdWx0aXBsZVRhZ3MgPSBK
U1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIG11bHRpcGxlVGFnc1ZhbHVlKTsKKyAgICAgICAgICAg
IG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk11
bHRpcGxlVGFncyIpKSk7CisgICAgICAgICAgICBuZmNWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tC
b29sZWFuQ3JlYXRlKG11bHRpcGxlVGFncykpLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAg
IFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3TmZjS2V5czsKKyAgICAgICAgVmVjdG9yPFdLVHlwZVJl
Zj4gcmF3TmZjVmFsdWVzOworICAgICAgICByYXdOZmNLZXlzLnJlc2l6ZShuZmNLZXlzLnNpemUo
KSk7CisgICAgICAgIHJhd05mY1ZhbHVlcy5yZXNpemUobmZjVmFsdWVzLnNpemUoKSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmZjS2V5cy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgcmF3TmZjS2V5c1tpXSA9IG5mY0tleXNbaV0uZ2V0KCk7CisgICAgICAgICAgICByYXdO
ZmNWYWx1ZXNbaV0gPSBuZmNWYWx1ZXNbaV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBj
b25maWd1cmF0aW9uS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiTmZjIikpKTsKKyAgICAgICAgY29uZmlndXJhdGlvblZhbHVlcy5hcHBlbmQoYWRvcHRX
SyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3TmZjS2V5cy5kYXRhKCksIHJhd05mY1ZhbHVlcy5kYXRh
KCksIHJhd05mY0tleXMuc2l6ZSgpKSkpOworICAgIH0KKwogICAgIFZlY3RvcjxXS1N0cmluZ1Jl
Zj4gcmF3Q29uZmlndXJhdGlvbktleXM7CiAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3Q29uZmln
dXJhdGlvblZhbHVlczsKICAgICByYXdDb25maWd1cmF0aW9uS2V5cy5yZXNpemUoY29uZmlndXJh
dGlvbktleXMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNjlhNGViMzYxZjdjYjQ5YmNkMWM4NjFmMmZhYjM2
MGJjMjNhMjg5Li41ZjYyMDY2YmUyZjQ2YjljZjA0OTY4ZDFhNTQxYzY1ZGNmNDQxOTdjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDgtMjAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRpY2F0b3Jz
IGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9j
dGFwLW5mYy1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0
dHBzLmh0bWw6CisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlICJsb2NhbCIga2V5d29y
ZCB3aXRoICJoaWQiLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtbmZjLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNraXAgTkZDIHRl
c3RzIGZvciBzaW11bGF0b3JzLgorCiAyMDE5LTA4LTIwICBSdXNzZWxsIEVwc3RlaW4gIDxyZXBz
dGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRpbmcgRXhwZWN0YXRpb25zIGZvciBNdWx0
aXBsZSBOZXdseSBQYXNzaW5nIFRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZDA1YjNjZGMyMzcwMjQ3ZTZlYzgwOGFhYzQ1NDA1MDY4NzM3ZWY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMt
ZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgQ1RBUCBO
RkMgd2l0aCBlbXB0eSBhcGR1IHJlc3BvbnNlIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4g
CitQQVNTIENUQVAgTkZDIHdpdGggd3JvbmcgZGF0YSBlcnJvciBpbiBhIG1vY2sgbmZjIGF1dGhl
bnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9j
dGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYjFiOGFlNDY4ODdm
NWZiYTViMTMzYjg4MmY0ZTY0OWQ4YWQyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBD
VEFQIE5GQyBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAg
IGNvbnN0IGRlZmF1bHRPcHRpb25zID0geworICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgIHJwOiB7CisgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
NyB9XSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgIH0KKyAgICB9OworCisgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgIiJdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShkZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJD
VEFQIE5GQyB3aXRoIGVtcHR5IGFwZHUgcmVzcG9uc2UgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNh
dG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQi
LCBwYXlsb2FkQmFzZTY0Olt0ZXN0TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShk
ZWZhdWx0T3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJDVEFQIE5G
QyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MjUwOThhZjcz
NTIwMWExYTc4NzI2MWUwMDliMWViZWVlZmM3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIG5mYyBhdXRo
ZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBu
byB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdGFnIHR5cGUgaW4gYSBtb2NrIG5mYyBhdXRo
ZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBu
byBjb25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG51bGwgdmVyc2lvbiBpbiBhIG1vY2sgbmZj
IGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIHdyb25nIHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ4MjQ4NTczM2M1YWYzNzIzODMyMWI2ZjI0YjIyMDM0ZGZlZDRiNzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNDAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0aCBhIG1vY2sgbmZj
IGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3Rz
IG5lZWQgdG8gb3ZlcnJpZGUgaXQgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
LgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAibm8tdGFncyIg
fSB9KTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91
dDogMTAsCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50
aWNhdG9yQXR0YWNobWVudDogInBsYXRmb3JtIiB9CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1l
b3V0IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGlt
ZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IG5vIHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAg
ICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogIndyb25nLXRhZy10eXBlIiB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBlIGluIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
ICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2Np
aVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6
IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVk
UGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJuby1jb25uZWN0aW9ucyIg
fSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBu
byBjb25uZWN0aW9ucyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQi
LAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
bmZjOiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbIF0gfSB9
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBudWxs
IHZlcnNpb24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAg
ICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzog
eyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVz
c2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggd3JvbmcgdmVyc2lvbiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0
b3IuIik7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzMTJkZTkz
MGU0ZGI2NjAxMjczNzdmOTY4Y2VhY2Y4MGU1MWFkZmE2Li44MDcyNTFmODY5NWRiODEyY2U0Njc0
NzUyOWFmNDE4MDdiNzNhYWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwxMiAr
MSwxMiBAQAogCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWlu
aW11bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsg
J2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkg
eyBmYWxzZSB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJl
ZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7ICdkaXNjb3VyYWdlZCcg
fSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWlu
aW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdj
cm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlcXVpcmVSZXNpZGVudEtleSB7IGZh
bHNlIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcgfSBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBtaXhlZCBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiBQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdHdvIGNvbnNlY3V0aXZl
IHJlcXVlc3RzLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBu
b25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBu
b25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWhpZC5odHRwcy5odG1sCmluZGV4IGExNDdlZjM3ZDUzOTNkZWI5Njk4NjVmNDBiMWVlYzc1ZTk1
YzdhNWIuLmY1Mjk2ODc0OGIyMGQxYmJlMGI5ZjM2YzRiODRmMGI0ZThhY2ZmNDkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWwKQEAgLTksNDEgKzksNiBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAKLSAgICBmdW5j
dGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCi0g
ICAgewotICAgICAgICAvLyBDaGVjayByZXNwb25zZQotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RI
aWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFs
LnR5cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVp
bnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVu
dGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5n
KGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4u
Y3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9z
dDo5NDQzIn0nKTsKLSAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGll
bnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwotCi0gICAgICAgIC8vIENoZWNrIGF0dGVz
dGF0aW9uCi0gICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3Jl
ZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAgIGlmIChpc05vbmVB
dHRlc3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
Zm10LCAibm9uZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0
dGVzdGF0aW9uT2JqZWN0LmZtdCwgInBhY2tlZCIpOwotICAgICAgICAvLyBDaGVjayBhdXRoRGF0
YQotICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2Jq
ZWN0LmF1dGhEYXRhKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1
dGhEYXRhLnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1
ODBmMGI0ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRo
RGF0YS5mbGFncywgNjUpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIs
IDc4KTsKLSAgICAgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9uKQotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgImY4YTAxMWYzOGMwYTRk
MTU4MDA2MTcxMTFmOWVkYzdkIik7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERh
dGEuY3JlZGVudGlhbElELCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2
NCkpOwotICAgICAgICAvLyBDaGVjayBwYWNrZWQgYXR0ZXN0YXRpb24KLSAgICAgICAgYXNzZXJ0
X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7Ci0gICAgICAgIGlmIChp
c05vbmVBdHRlc3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKGF0dGVz
dGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LmFsZywgLTcpOwotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5ndGgs
IDEpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAg
ICBjb25zdCBvcHRpb25zID0gewogICAgICAgICAgICAgcHVibGljS2V5OiB7CkBAIC02Miw5ICsy
Nyw5IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNr
UmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxS
ZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAg
ICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtODUs
OSArNTAsOSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50
aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3Nz
LXBsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rp
b24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAt
MTA4LDkgKzczLDkgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3Jl
ZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50S2V5IHsgZmFsc2Ug
fSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9IGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsK
ICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTEzMSw5ICs5Niw5IEBACiAgICAgICAgIH07
CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyku
dGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwp
OworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7
CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIHVzZXJWZXJpZmljYXRpb24geyAncHJlZmVycmVkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIHVzZXJWZXJpZmljYXRpb24geyAncHJlZmVycmVkJyB9IGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKQEAgLTE1NCw5ICsxMTksOSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNo
ZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0
aW9uIHsgJ2Rpc2NvdXJhZ2VkJyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwor
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmlj
YXRpb24geyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwog
CiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAt
MTc3LDkgKzE0Miw5IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAg
ICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNy
ZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwotICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBA
IC0yMDAsNyArMTY1LDcgQEAKIAogICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlRoaXMgcmVx
dWVzdCBoYXMgYmVlbiB2b2lkZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hl
Y2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHR3byBjb25zZWN1dGl2
ZSByZXF1ZXN0cy4iKTsKIApAQCAtMjIzLDkgKzE4OCw5IEBACiAgICAgICAgIH07CiAKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAg
ICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAg
IH0pOwotICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUg
YXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0yNDYsOSArMjExLDkgQEAKICAgICAgICAgfTsK
IAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwg
ZmFsc2UpOworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVu
dGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIAog
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKQEAgLTI2
OSw3ICsyMzQsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAg
ICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CisgICAgICAgICAgICBjaGVja0N0YXBN
YWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0pOwotICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVz
dGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZjVlODMxMmUwMmYzYmJmOTU4YTI4YjQzNzFkZWRiZWUzMDVmMzdm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw2IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9u
IHsgJ2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbXVsdGlwbGUgdGFncyBpbiBh
IG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIFUyRiBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGQyMmU1NDRkNGFiOTUwOTk1MjU3ZmE2YjllMGU1ZjAyYzg2MTU1ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDEwNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayBuZmMg
YXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKyAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVy
cmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQs
IHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworCisgICAgcHJvbWlzZV90ZXN0
KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxv
Y2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrQ3Rh
cE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4g
YSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4gewor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlk
OiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50
aWNhdG9yQXR0YWNobWVudDogImNyb3NzLXBsYXRmb3JtIiB9LAorICAgICAgICAgICAgICAgIHRp
bWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sg
bmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
ICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRp
c3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwK
KyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJz
dWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJhc2U2NCwgdGVzdEdl
dEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RDcmVhdGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSwg
bXVsdGlwbGVUYWdzOiB0cnVlIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBj
aGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbXVsdGlwbGUgdGFn
cyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxo
b3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAg
ICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAor
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNVMmZWZXJzaW9uQmFz
ZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBj
aGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBVMkYgaW4gYSBtb2Nr
IG5mYyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
dTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggOGZhMWMzYzQ4
ZmE5NWM5YzNiMmIwODg4NjFjYjg4OWUwZmMxY2M2OS4uZjE2ZTUwMGRmYTc2NmIyN2NmNWNjNTdj
YjdkOTRkZDc0MjI4MmE2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApAQCAtNSwzNiArNSw2IEBACiA8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvY2Jvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIC8v
IENoZWNrIHJlc3BvbnNlCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBh
cnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJh
c2U2NCkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1r
ZXknKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50
aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNw
b25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVu
Z2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAg
ICAgICBhc3NlcnRfbm90X2V4aXN0cyhjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3Vs
dHMoKSwgImFwcGlkIik7Ci0KLSAgICAgICAgLy8gQ2hlY2sgYXR0ZXN0YXRpb24KLSAgICAgICAg
Y29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShjcmVkZW50aWFsLnJlc3BvbnNl
LmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9uKQotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJub25lIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
Zm10LCAiZmlkby11MmYiKTsKLSAgICAgICAgLy8gQ2hlY2sgYXV0aERhdGEKLSAgICAgICAgY29u
c3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFz
aCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVj
ZjNiYTgzMWQ5NzYzIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY1
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOwotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGF1dGhEYXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFs
SWRCYXNlNjQpKTsKLSAgICAgICAgLy8gQ2hlY2sgZmlkby11MmYgYXR0ZXN0YXRpb24KLSAgICAg
ICAgYXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7Ci0gICAg
ICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWMubGVuZ3Ro
LCAxKTsKLSAgICB9Ci0KICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKQEAgLTU1LDcgKzI1LDcgQEAKICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hl
Y2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CiAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25z
IGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4iKTsKIApAQCAtODAsNyArNTAsNyBAQAogICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
UmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlh
bFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1MmYg
YXV0aGVudGljYXRvci4iKTsKIApAQCAtMTA1LDcgKzc1LDcgQEAKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAg
ICAgICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNsdWRl
Q3JlZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAyIik7CiAKQEAgLTEyOSw3
ICs5OSw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVk
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAg
ICBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0ZXN0IG9mIHVz
ZXIgcHJlc2VuY2UgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xNTQsNyAr
MTI0LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAg
ICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAg
ICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9u
ZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTE3OSw3
ICsxNDksNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFs
c2UpOworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFs
LCBmYWxzZSk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayB1MmYgYXV0aGVudGlj
YXRvci4iKTsKIApAQCAtMjA0LDcgKzE3NCw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lz
dGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jl
c3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CisgICAgICAgICAgICBjaGVja1UyZk1ha2VDcmVkZW50
aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEg
bW9jayB1MmYgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMDhhMDQ4NDQyYTg0MGUwZDFkOTM0OTc2YTk3MzZhOTk3OTEwMDJiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGlu
IGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjY0ODc0ZmZmNWQ4
MWZlN2I2MTQ0MzlmNzI2MjlhOTlkMDAyNTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5m
Yy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldl
YiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIGZhaWx1
cmUgY2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
L3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBt
b2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRp
ZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZj
OiB7IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYi
KSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVk
ZW50aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVk
ZW50aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVk
ZW50aWFsSWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQg
b3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVv
dXQgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggMzQy
MWM3Nzg5OTAxOGRhZWUwZmMxMTRhOGNmMWI5YjllZTExNDJhNi4uZDliMjJiNDJhOWQ3NjIwMDIx
NDEyMTBjNDVkNjhjZmE2ZDFiOTUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtOCwyMyArOCw2IEBACiAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3Nh
Z2VCYXNlNjRdIH0gfSk7CiAKLSAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQot
ICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RI
aWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFs
LnR5cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVp
bnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVu
dGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5n
KGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4u
Z2V0IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5
NDQzIn0nKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJI
YW5kbGUsIG51bGwpOwotICAgICAgICBhc3NlcnRfbm90X2V4aXN0cyhjcmVkZW50aWFsLmdldENs
aWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlkIik7Ci0KLSAgICAgICAgLy8gQ2hlY2sgYXV0
aERhdGEKLSAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhB
cnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhKSk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNjN2Zi
OTY3OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVlMWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1YWQ4
Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDgwKTsKLSAgICB9Ci0KICAgICBwcm9taXNl
X3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CiAgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKQEAgLTM0LDcgKzE3LDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrQ3RhcEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAg
fSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBv
cHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNTAsNyArMzMsNyBA
QAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0
aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNjQsNyArNDcsNyBAQAogICAgICAgICB9Owog
CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4o
Y3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlh
bCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRl
bnRpYWwpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgcHJlZmVycmVkIH0gaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiIpOwogCkBAIC03OCw3ICs2MSw3IEBACiAgICAgICAgIH07CiAKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja0N0YXBHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAg
ICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHVz
ZXJWZXJpZmljYXRpb24geyBkaXNjb3VyYWdlZCB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKIApAQCAtOTUsNyArNzgsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaXhlZCBvcHRp
b25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTA5LDcgKzkyLDcgQEAK
IAogICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiB2b2lkZWQg
YnkgYSBuZXcgcmVxdWVzdC4iKTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja0N0YXBHZXRB
c3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cy4iKTsK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjY4YjlmZDhlNTZmZDQ2
MGFlYTFjNzA4YWFhYTBiY2U3MGEwZTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50
aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBVMkYgaW4g
YSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMjFjOTAwMTg1NTYy
NjE5OWZjNzQ5MWQyZWUwNTRmNjc0MjkyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZj
Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2Vi
IEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gc3VjY2Vz
cyBjYXNlcyB3aXRoIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4v
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICAvLyBEZWZhdWx0IG1v
Y2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlm
ZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBuZmM6
IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3ROZmNDdGFwVmVyc2lvbkJh
c2U2NCwgdGVzdEdldEluZm9SZXNwb25zZUFwZHVCYXNlNjQsIHRlc3RBc3NlcnRpb25NZXNzYWdl
QXBkdUJhc2U2NF0gfSB9KTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAg
IHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRp
YWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisg
ICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwu
cGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFs
SWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5m
YzogeyBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdE5mY1UyZlZlcnNpb25C
YXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJu
IGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBVMkYgaW4gYSBtb2NrIG5m
YyBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggYzg1NzExNGY5NzdmNDliNmUz
ZjUzZTQ0OGI3MTg1YmFhMDFhZDNhZC4uOTViMmQxYjJlMTk0ZWYyZDNlODFjNDg2OWU5NDc1ZmNm
MGQ0M2Q3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11
MmYuaHR0cHMuaHRtbApAQCAtNCwzMSArNCw2IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGNvbnN0IGRlZmF1bHRBcHBJREhhc2gg
PSAiYzI2NzFiNmViOTIzMzE5N2Q1ZjJiMTI4OGE1NWJhNGYwODYwZjk2ZjcxOTliYmEzMmZlNmRh
N2MzZjBmMzFlNSI7Ci0KLSAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBpc0Fw
cElEID0gZmFsc2UsIGFwcElESGFzaCA9IGRlZmF1bHRBcHBJREhhc2gpCi0gICAgewotICAgICAg
ICAvLyBDaGVjayByZXNwb25kCi0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJM
LnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJ
ZEJhc2U2NCkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1Ymxp
Yy1rZXknKTsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVk
ZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQp
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5y
ZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVu
Z2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwgbnVsbCk7
Ci0gICAgICAgIGlmICghaXNBcHBJRCkKLSAgICAgICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNy
ZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNp
b25SZXN1bHRzKCkuYXBwaWQpOwotCi0gICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAg
IGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlh
bC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSkpOwotICAgICAgICBpZiAoIWlzQXBwSUQpCi0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhh
c2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1
Y2YzYmE4MzFkOTc2MyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCBhcHBJREhhc2gpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhhdXRoRGF0YS5jb3VudGVyLCA1OSk7Ci0gICAgfQotCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4g
ewogICAgICAgICBjb25zdCBvcHRpb25zID0gewogICAgICAgICAgICAgcHVibGljS2V5OiB7CkBA
IC00MSw3ICsxNiw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50
aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApA
QCAtNTcsNyArMzIsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3Mi
LCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtb3JlIGFsbG93
IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNzMsNyAr
NDgsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJl
c3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9
KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0ZXN0IG9mIHVz
ZXIgcHJlc2VuY2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC05MSw3ICs2
Niw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAg
ICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZW1w
dHkgZXh0ZW5zaW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEwOCw3
ICs4Myw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsK
ICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
c2FtZSBzaXRlIEFwcElEIGJ1dCBub3QgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTEyNSw3ICsxMDAsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewotICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUp
OworICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRp
YWwsIHRydWUpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBlbXB0eSBBcHBJRCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
QEAgLTE0Myw3ICsxMTgsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nl
c3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
ewotICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFi
YzVjYzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMw
NzE5Iik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3Jl
ZGVudGlhbCwgdHJ1ZSwgIjdlYWJjNWNjMzI1MWJkYzU5MTE1ZWY4N2I1ZjdlZTc0Y2IwMzc0N2Uz
OWJhODM0MTc0ODU2NWNjMTI5YzA3MTkiKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYW4gQXBwSUQgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOwogCkBAIC0xNjAsNyArMTM1LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0p
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG11bHRpcGxlIGNy
ZWRlbnRpYWxzIGFuZCBBcHBJRCBpcyBub3QgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CiAKQEAgLTE3Nyw3ICsxNTIsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZT
aWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hl
Y2tSZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZH
ZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSk7CiAgICAgICAgIH0pOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG11bHRpcGxlIGNyZWRlbnRpYWxz
IGFuZCBBcHBJRCBpcyB1c2VkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAt
MTk0LDcgKzE2OSw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENy
ZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsK
ICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
ZG93bmdyYWRlZCBhdXRoZW50aWNhdG9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsK
IApAQCAtMjExLDcgKzE4Niw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3Vj
Y2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52
YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSwgIjdlYWJjNWNj
MzI1MWJkYzU5MTE1ZWY4N2I1ZjdlZTc0Y2IwMzc0N2UzOWJhODM0MTc0ODU2NWNjMTI5YzA3MTki
KTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50
aWFsLCB0cnVlLCAiN2VhYmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4
MzQxNzQ4NTY1Y2MxMjljMDcxOSIpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBkb3duZ3JhZGVkIGF1dGhlbnRpY2F0b3IgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5kZXggOTg3ZDA3MjE5ZDRlNDc3MDc0Yzk4
ZjQyYzE1YjE4NTNjNzNhYzYxMi4uMWI5MTNiNGRhZGIwZGQwYWNiYmY5ZmI1Y2FlMDgzMzcwNTcy
ODk3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2Vz
L3V0aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0
aWwuanMKQEAgLTk5LDYgKzk5LDQwIEBAIGNvbnN0IHRlc3RVMmZTaWduUmVzcG9uc2UgPQogICAg
ICJmNFY0TGVFQWhxZUQwZWZmVGpZNTUzSDE5cStqV3ExVGM0V09rQUE9IjsKIGNvbnN0IHRlc3RD
dGFwRXJyQ3JlZGVudGlhbEV4Y2x1ZGVkT25seVJlc3BvbnNlQmFzZTY0ID0gIkdRPT0iOwogY29u
c3QgdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0ID0gIklnPT0iOwor
Y29uc3QgdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQgPSAiVlRKR1gxWXlrQUE9IjsKK2NvbnN0IHRl
c3ROZmNDdGFwVmVyc2lvbkJhc2U2NCA9ICJSa2xFVDE4eVh6Q1FBQT09IjsKK2NvbnN0IHRlc3RH
ZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0ID0KKyAgICAiQUtZQmdtWlZNa1pmVmpKb1JrbEVUMTh5
WHpBQ2dXdG9iV0ZqTFhObFkzSmxkQU5RYlVTNm0vYnNMa201TUF5UCIgKworICAgICI2U0RMY3dT
a1luSnI5V0oxY1BWa2NHeGhkUFJwWTJ4cFpXNTBVR2x1OUFVWkJMQUdnUUdRQUE9PSI7Citjb25z
dCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NCA9CisgICAgIkFLTUJabkJoWTJ0bFpBSll4
RWJNZjdsbm5WV3kyNUNTNGNqWjVlSFFLM1dBOExTQkxIY0pZdUhrajFyWVFRQUEiICsKKyAgICAi
QUU3NG9CSHpqQXBORllBR0Z4RWZudHg5QUVBb0NLM082UDVPeVhONlYvZis5bkFnYTBOQTJDZ3A0
VjNtZ1NKNSIgKworICAgICJqT0hMTURybXhwL1MwcmJEK2FpaHJ1MUMwYUFOM0JraU02R055NW5T
bERWcU9nVGdwUUVDQXlZZ0FTRllJRUZiIiArCisgICAgImhlM1JrTnVkNnNneXJhQkdqbGgxcHpU
bENaZWhRbEwvYjE4SFo2V0dJbGdnSmdmVWQvZW45cDVBSXFNUWJVbmkiICsKKyAgICAibkVlWGRG
TGt2VzAvelY1QnBFampOeEFEbzJOaGJHY21ZM05wWjFoSE1FVUNJUURLZytaQm1FQnRmMGxXcTRS
ZSIgKworICAgICJkSDQvaS9MT1lxT1I0dVIyTkFqMnpRbXc5UUlnYlRYYjRodkZiajRUMjdidi9y
R3JjK3krMHB1b1lPQmtCazlQIiArCisgICAgIm1DZXdXbE5qZURWamdWa0N3akNDQXI0d2dnR21v
QU1DQVFJQ0JIU0cvY0l3RFFZSktvWklodmNOQVFFTEJRQXciICsKKyAgICAiTGpFc01Db0dBMVVF
QXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFdyIgKwor
ICAgICJJQmNOTVRRd09EQXhNREF3TURBd1doZ1BNakExTURBNU1EUXdNREF3TURCYU1HOHhDekFK
QmdOVkJBWVRBbE5GIiArCisgICAgIk1SSXdFQVlEVlFRS0RBbFpkV0pwWTI4Z1FVSXhJakFnQmdO
VkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjAiICsKKyAgICAiWlhOMFlYUnBiMjR4S0RBbUJn
TlZCQU1NSDFsMVltbGpieUJWTWtZZ1JVVWdVMlZ5YVdGc0lERTVOVFV3TURNNCIgKworICAgICJO
REl3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNWWGZPdDl5UjlNWFh2L1p6RTh4
cE9oNDY2IiArCisgICAgIjRZRUpWbUZRK3ppTExsOWxKNzlYUUpxbGdhVU5Dc1V2R0VSY0NoTlVp
aE5UeUtUbG1uQk9VanZBVGV2dG8yd3ciICsKKyAgICAiYWpBaUJna3JCZ0VFQVlMRUNnSUVGVEV1
TXk0MkxqRXVOQzR4TGpReE5EZ3lMakV1TVRBVEJnc3JCZ0VFQVlMbCIgKworICAgICJIQUlCQVFR
RUF3SUZJREFoQmdzckJnRUVBWUxsSEFFQkJBUVNCQkQ0b0JIempBcE5GWUFHRnhFZm50eDlNQXdH
IiArCisgICAgIkExVWRFd0VCL3dRQ01BQXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBREZjU0lE
bW1sSitPR2FKdlduOUNxaHYiICsKKyAgICAiU2V1ZVRvVkZRVlZ2cXRBTE9nQ0tIZHdCK1d4Mjlt
ZzJHcEhpTXNnUXA1eGpCMHliYm5wRzZ4MjEyRnhFU0orRyIgKworICAgICJpblpEMGlwY2hpN0FQ
d1BsaEl2amdIMTZ6Vlg0NGE0ZTRoT3NjNnRMSU9QNzFTYU1zSHVIZ0NjZEgwdmc1ZDJzIiArCisg
ICAgImMwMDZXSmU5VFhPNmZ6VitvZ2pKbllwTktRTG1DWG9BWEUzSkJOd0tHQklPQ3ZmUURQeVdt
aWlHNWJHeFlmUHQiICsKKyAgICAieThaM3BualgrMU1Ebk0yaGhyNDB1bE14bFNORG5YL1pTbkR5
TUdJYms4VE9RbWpURjAyVU84YXVQOGszd3Q1RCIgKworICAgICIxclJPSVJVOStGQ1NYNVdRWWk2
OFJ1RHJHTVpCOFA1K2J5b0pxYktRZHhuMkxtRTFvWkF5b2hQQW1MY29QTzZRIiArCisgICAgIkFB
PT0iOworY29uc3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0ID0KKyAgICAiQUtNQm9t
SnBaRmhBS0FpdHp1aitUc2x6ZWxmMy92WndJR3REUU5nb0tlRmQ1b0VpZVl6aHl6QTY1c2FmMHRL
MiIgKworICAgICJ3L21vb2E3dFF0R2dEZHdaSWpPaGpjdVowcFExYWpvRTRHUjBlWEJsYW5CMVlt
eHBZeTFyWlhrQ1dDVkd6SCs1IiArCisgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDND
V0xoNUk5YTJBRUFBQUJRQTFoSE1FVUNJUUNTRlR1dUJXZ0IiICsKKyAgICAiNC9GMFZCN0RsVVZN
MDlJSFBteGUxTXpIVXdSb0NSWmJDQUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKwor
ICAgICJRb0oxTDdGZTY0Rzl1QmVRQUE9PSI7CiAKIGNvbnN0IFJFU09VUkNFU19ESVIgPSAiL1dl
YktpdC93ZWJhdXRobi9yZXNvdXJjZXMvIjsKIApAQCAtMjk3LDMgKzMzMSwxMDggQEAgZnVuY3Rp
b24gY2hlY2tQdWJsaWNLZXkocHVibGljS2V5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CisKK2Z1bmN0aW9uIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0
KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKK3sKKyAgICAvLyBDaGVjayBy
ZXNwb25zZQorICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRp
YWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAg
IGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVS
TC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhi
eXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7
InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6
Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOworICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRl
bnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgIC8vIENo
ZWNrIGF0dGVzdGF0aW9uCisgICAgY29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29k
ZShjcmVkZW50aWFsLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBpZiAoaXNOb25l
QXR0ZXN0YXRpb24pCisgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10
LCAibm9uZSIpOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9i
amVjdC5mbXQsICJwYWNrZWQiKTsKKyAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgIGNvbnN0IGF1
dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAg
IGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNj
N2ZiOTY3OWQ1NWIyZGI5MDkyZTFjOGQ5ZTVlMWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1
YWQ4Iik7CisgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNzgpOworICAgIGlmIChpc05vbmVBdHRlc3RhdGlv
bikKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3Vp
ZCksICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAgIGVsc2UKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICJmOGEw
MTFmMzhjMGE0ZDE1ODAwNjE3MTExZjllZGM3ZCIpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
YXV0aERhdGEuY3JlZGVudGlhbElELCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJ
ZEJhc2U2NCkpOworICAgIC8vIENoZWNrIHBhY2tlZCBhdHRlc3RhdGlvbgorICAgIGFzc2VydF90
cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAgIGlmIChpc05vbmVB
dHRlc3RhdGlvbikKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoYXR0ZXN0YXRpb25PYmpl
Y3QuYXR0U3RtdCwgeyB9KTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRl
c3RhdGlvbk9iamVjdC5hdHRTdG10LmFsZywgLTcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0
dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjLmxlbmd0aCwgMSk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjaGVja1UyZk1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVz
dGF0aW9uID0gdHJ1ZSkKK3sKKyAgICAvLyBDaGVjayByZXNwb25zZQorICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2Uo
dGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlh
bC50eXBlLCAncHVibGljLWtleScpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4
QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlh
bElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVu
dGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUi
LCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMi
fScpOworICAgIGFzc2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9u
UmVzdWx0cygpLCAiYXBwaWQiKTsKKworICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgY29u
c3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShjcmVkZW50aWFsLnJlc3BvbnNlLmF0
dGVzdGF0aW9uT2JqZWN0KTsKKyAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgIGFz
c2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9uZSIpOworICAgIGVsc2UKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJmaWRvLXUyZiIpOwor
ICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0
YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1Rv
SGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0
NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3Vu
dGVyLCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFn
dWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhdXRoRGF0YS5jcmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJm
Q3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgLy8gQ2hlY2sgZmlkby11MmYgYXR0ZXN0YXRpb24K
KyAgICBhc3NlcnRfdHJ1ZShjaGVja1B1YmxpY0tleShhdXRoRGF0YS5wdWJsaWNLZXkpKTsKKyAg
ICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKGF0
dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7CisgICAgZWxzZQorICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjLmxlbmd0aCwgMSk7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrQ3RhcEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKQoreworICAgIC8v
IENoZWNrIHJlc3BvbmQKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShj
cmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQp
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBC
YXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFzc2VydF9l
cXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpT
T04pLCAneyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmln
aW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNyZWRl
bnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSwgbnVsbCk7CisgICAgYXNzZXJ0X25vdF9leGlzdHMo
Y3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisgICAg
Ly8gQ2hlY2sgYXV0aERhdGEKKyAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKG5l
dyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDZj
YzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1ZTFkMDJiNzU4MGYwYjQ4MTJjNzcwOTYyZTFlNDhm
NWFkOCIpOworICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgODApOworfQorCitmdW5jdGlvbiBjaGVja1UyZkdl
dEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsLCBpc0FwcElEID0gZmFsc2UsIGFwcElESGFzaCA9
ICJjMjY3MWI2ZWI5MjMzMTk3ZDVmMmIxMjg4YTU1YmE0ZjA4NjBmOTZmNzE5OWJiYTMyZmU2ZGE3
YzNmMGYzMWU1IikKK3sKKyAgICAvLyBDaGVjayByZXNwb25kCisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0
VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5
cGUsICdwdWJsaWMta2V5Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJh
eShjcmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRC
YXNlNjQpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFs
LnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxs
ZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUsIG51bGwpOwor
ICAgIGlmICghaXNBcHBJRCkKKyAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5n
ZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworICAgIGVsc2UKKyAgICAgICAg
YXNzZXJ0X3RydWUoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkuYXBwaWQp
OworCisgICAgLy8gQ2hlY2sgYXV0aERhdGEKKyAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1
dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRh
dGEpKTsKKyAgICBpZiAoIWlzQXBwSUQpCisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hl
eFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2
NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNiYTgzMWQ5NzYzIik7CisgICAgZWxzZQorICAgICAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCBhcHBJ
REhhc2gpOworICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTc0
OTc3YTI1ZmNmMWZkOWU1NzdlMzNmODVmYTVhZmQwNGJhZmNhMi4uY2E4NmY0NjE0MmVlNWU4OWQ4
YjE1YjZjYWE3MTU4NGE1ZWVjODcwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04OSwzICs4OSwxMCBA
QCB3ZWJraXQub3JnL2IvMTgyODQ5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhy
L2V2ZW50LXVwbG9hZC1wcm9ncmVzcy1jcgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9JbmRleGVkREIva2V5cGF0aC1zcGVjaWFsLWlkZW50aWZpZXJzLmh0bSBbIFNsb3cgXQogCiB3
ZWJraXQub3JnL2IvMTcyMDAxIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9zeW5jLWxheWVyLXBv
c2l0aW9ucy1hZnRlci1zY3JvbGwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCisKKyMgTmVhckZpZWxk
LmZyYW1ld29yayBkb2Vzbid0IHByZXNlbnQgaW4gdGhlIHNpbXVsYXRvciwgYW5kIHRoZXJlZm9y
ZSBza2lwIGFsbCBXZWJBdXRobiBORkMgdGVzdHMKK2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZj
LWZhaWx1cmUuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCitodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBd
Cg==
</data>
<flag name="review"
          id="392745"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="392828"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377048</attachid>
            <date>2019-08-22 14:45:09 -0700</date>
            <delta_ts>2022-01-19 05:17:59 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-188624-20190822144508.patch</filename>
            <type>text/plain</type>
            <size>168452</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5YTE3ZWQ0NWI5YmM0MDBkZmI4ZGIw
ZjQ0ZDU2NjdhYzE0OTZkYzQuLjQwNGQ3ZTQ3Y2I1ZjU3MzFkOTljYjliZjU5NmJlYzM4Mjk0Mzhl
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMjEgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQgTkZDIGF1dGhlbnRp
Y2F0b3JzIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNTQyMTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoK
KyAgICAgICAgQWRkIGEgZmVhdHVyZSBmbGFnIGZvciBOZWFyRmllbGQuCisKIDIwMTktMDgtMjAg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
Rm9sbG93dXAgdG8gcjI0ODkwMy4gSXQncyBub3QgdmFsaWQgdG8gcmVtb3ZlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNzU2NzA4ZDY1OTc5MDg2OGMyMDgwNTVmZjU0YTY0MTZjZWIwODY4Mi4uZTc2NzQ0NDhlNWM5
MzdiOGE0YmQyYjI4ZDMzMGQxNjg3MjE4NGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJl
Lmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5m
Yy5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0
cHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5o
OgorICAgICAgICBBZGRzIGEgbmV3IG1ldGhvZCB0byBzdXBwb3J0IG1vdmluZyBtX2RhdGEuCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKyAgICAgICAg
QWRkcyBjb25zdGFudHMgZm9yIE5GQyBhcHBsZXQgc2VsZWN0aW9uLgorCiAyMDE5LTA4LTIwICBK
dXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBj
b21tZW50IGZvbGxvdy11cCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDc1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWVlYjViOTAxOThjYzkxMzE2YzllOGU2ZDFjNGYzMzZi
MGU0YWM5NS4uZDYzYmM5NWM2M2QzYjU4MzlmOGIzMmZjYzA4ZjVhOTlkNTIxMDM2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5OCBAQAorMjAxOS0wOC0yMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcG9ydCBORkMgYXV0aGVudGljYXRv
cnMgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg4NjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM1NDIxND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
c3VwcG9ydCBmb3IgTkZDIGF1dGhlbnRpY2F0b3JzIGluY2x1ZGluZyBib3RoIEZJRE8yIGFuZCBV
MkYgb25lcy4gSXQgdXRpbGl6ZXMgYSBwcml2YXRlCisgICAgICAgIGZyYW1ld29yayBjYWxsZWQg
TmVhckZpZWxkIGluc3RlYWQgb2YgQ29yZU5GQyB0byBiZSBhYmxlIHRvIHN1cHBseSBhIGN1c3Rv
bSBVSSBsYXRlciBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgVGhlIHBhdGNoIGZvbGxvd3MgYWxt
b3N0IHRoZSBzYW1lIGZsb3cgYXMgcHJldmlvdXMgSElEIGFuZCBMb2NhbCBhdXRoZW50aWNhdG9y
IHN1cHBvcnQuCisgICAgICAgIDEpIERpc2NvdmVyeSBpcyB2aWEgTmZjU2VydmljZSB3aGljaCB3
aWxsIGludm9rZSBORkhhcmR3YXJlTWFuYWdlciB0byBzdGFydCBhIGdlbmVyaWMgTkZDIHJlYWRl
ciBzZXNzaW9uLgorICAgICAgICAyKSBPbmNlIGEgcmVhZGVyIHNlc3Npb24gaXMgZXN0YWJsaXNo
ZWQsIGEgTmZjQ29ubmVjdGlvbiBpcyBjcmVhdGVkIHRvIHN0YXJ0IHRoZSBwb2xsaW5nIGFuZCBy
ZWdpc3RlciB0aGUgV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZQorICAgICAgICB0byB3YWl0IGZv
ciAnZGlkRGV0ZWN0VGFncycuCisgICAgICAgIDMpIFdoZW4gdGFncyBhcmUgZGV0ZWN0ZWQsIE5m
Y0Nvbm5lY3Rpb24gd2lsbCBkZXRlcm1pbmUgaWYgaXQgbWVldHMgb3VyIHJlcXVyaWVtZW50czog
eyB0eXBlLCBjb25uZWN0YWJpbGl0eSwgZmlkbyBhcHBsZXQgYXZhaWxhYmlsaXR5IH0uCisgICAg
ICAgIFRoZSBmaXJzdCB0YWcgdGhhdCBtZWV0cyBhbGwgcmVxdWlyZW1lbnQgd2lsbCB0aGVuIGJl
IHJldHVybmVkIGZvciBXZWJBdXRobiBvcGVyYXRpb25zLgorICAgICAgICA0KSBUaGUgZmlyc3Qg
V2ViQXV0aG4gb3BlcmF0aW9uIGlzIHRvIHNlbmQgYXV0aGVudGljYXRvckdldEluZm8gY29tbWFu
ZCB0byBkZXRlcm1pbmUgdGhlIHN1cHBvcnRlZCBwcm90b2NvbCwgYW5kIHRoZW4gaW5pdGlhbGl6
ZSBjb3JyZXNwb25kaW5nCisgICAgICAgIGF1dGhlbnRpY2F0b3JzLiBOb3RlZCwgdGhlIHNlbmRp
bmcvcmVjZWl2aW5nIG9mIHRoaXMgY29tbWFuZCBpcyBub3cgYWJzdHJhY3RlZCBpbnRvIEZpZG9T
ZXJ2aWNlIHdoaWNoIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyBIaWRTZXJ2aWNlIGFuZCBOZmNTZXJ2
aWNlLgorICAgICAgICA1KSBGcm9tIHRoZW4sIHRoZSBhY3R1YWwgV2ViQXV0aG4gcmVxdWVzdCwg
ZWl0aGVyIG1ha2VDcmVkZW50aWFsIG9yIGdldEFzc2VydGlvbiB3aWxsIGJlIHNlbnQuCisKKyAg
ICAgICAgRm9yIHRlc3RpbmcsIHRoaXMgcGF0Y2ggZm9sbG93cyB0aGUgc2FtZSBmbG93IGFzIHdl
bGwuCisgICAgICAgIDEpIE1vY2tOZmNTZXJ2aWNlIG92ZXJyaWRlcyBOZmNTZXJ2aWNlIHRvIG1v
Y2sgdGhlIGJlaGF2aW9yIG9mIE5GQyBUYWdzIGRpc2NvdmVyeS4KKyAgICAgICAgMikgVGhlIHNh
bWUgY2xhc3MgYWxzbyBzd2l6emxlcyBtZXRob2RzIGZyb20gTkZSZWFkZXJTZXNzaW9uIHRvIG1v
Y2sgdGFnIGNvbm5lY3Rpb24gYW5kIGNvbW11bmljYXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9zcGkvQ29jb2EvTmVhckZpZWxkU1BJLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlckludGVybmFsOjpjb2xsZWN0VHJhbnNwb3J0cyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFu
c3BvcnRTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclRyYW5zcG9y
dFNlcnZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnRTZXJ2aWNlOjpjcmVhdGVNb2NrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNl
OjpIaWRTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQp
OgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpjb250aW51ZUFkZERldmljZUFmdGVyR2V0
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05lYXJGaWVsZFNvZnRMaW5rLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsubW06IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TmZjQ29ubmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpmaWRvOjpjb21wYXJlVmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5l
Y3Rpb246Ok5mY0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp+
TmZjQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OnRyYW5zYWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmZjQ29ubmVjdGlvbjo6ZGlkRGV0ZWN0VGFncyBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1Nl
cnZpY2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmZj
U2VydmljZTo6TmZjU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6On5OZmNT
ZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6TmZjU2VydmljZTo6ZGlkQ29ubmVjdFRhZyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5mY1NlcnZpY2U6OnN0YXJ0RGlzY292ZXJ5SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViS2l0OjpOZmNTZXJ2aWNlOjpwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25E
ZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW06IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UuaC4KKyAgICAgICAgKC1bV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZSBpbml0V2l0aENvbm5l
Y3Rpb246XSk6CisgICAgICAgICgtW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgcmVhZGVyU2Vz
c2lvbjpkaWREZXRlY3RUYWdzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hp
ZENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6
cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFja0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6
TW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tI
aWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25u
ZWN0aW9uOjpzaG91bGRDb250aW51ZUZlZWRSZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLmgu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZp
Y2UubW06IEFkZGVkLgorICAgICAgICAoLVtXS01vY2tORlRhZyB0eXBlXSk6CisgICAgICAgICgt
W1dLTW9ja05GVGFnIGluaXRXaXRoTkZUYWc6XSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIGRl
c2NyaXB0aW9uXSk6CisgICAgICAgICgtW1dLTW9ja05GVGFnIGlzRXF1YWxUb05GVGFnOl0pOgor
ICAgICAgICAoLVtXS01vY2tORlRhZyBpbml0V2l0aFR5cGU6XSk6CisgICAgICAgIChXZWJLaXQ6
Ok1vY2tOZmNTZXJ2aWNlOjpNb2NrTmZjU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tO
ZmNTZXJ2aWNlOjp0cmFuc2NlaXZlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja05mY1NlcnZpY2U6
OnBsYXRmb3JtU3RhcnREaXNjb3ZlcnkpOgorICAgICAgICAoV2ViS2l0OjpNb2NrTmZjU2Vydmlj
ZTo6ZGV0ZWN0VGFncyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGlj
YXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBO
ZmNEcml2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6Q3Rh
cE5mY0RyaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBOZmNEcml2ZXI6OnRyYW5zYWN0KToK
KyAgICAgICAgKFdlYktpdDo6Q3RhcE5mY0RyaXZlcjo6cmVzcG9uZEFzeW5jIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0hpZFNlcnZpY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9GaWRvU2VydmljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpGaWRvU2Vydmlj
ZTo6Rmlkb1NlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpGaWRvU2VydmljZTo6Z2V0SW5mbyk6
CisgICAgICAgIChXZWJLaXQ6OkZpZG9TZXJ2aWNlOjpjb250aW51ZUFmdGVyR2V0SW5mbyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvSGlkU2VydmljZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOS0wOC0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbRlRXXSBGaXggc2Nyb2xsaW5nIGluIG1vZGVybiBXZWJLaXQgdmlld3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDk1MmY0M2VhZDk5MGJjMWVhYTkzZjQxYTU4ZjEzOTY2ZWQyMTU2ODUu
LjRiZmRhNTU5MDg1NjhiYjhhZDI4MDg0YjUxMzRlODVhOWE2YzIzNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtMTYzNiwzICsxNjM2LDExIEBACiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApCiAjZGVmaW5lIEhB
VkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFlfU0lNVUxBVE9SKQorI2RlZmluZSBIQVZFX05FQVJfRklFTEQgMQorI2VuZGlmCisK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEzMDAwMCkKKyNkZWZpbmUgSEFWRV9ORl9SRUFERVJfU0VTU0lPTl9V
UERBVEVfVUlfQUxFUlRfTUVTU0FHRSAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuaAppbmRleCBhNjJkMzEzYzQ3Yzli
YmU5YTlhZWFmNDI0MmJiOTA1ZDA5ODU1YjVkLi42MzU1Yjg0Yjk1ZWQ1OTkxZTBiY2Q5Y2Y2ZjA1
NDU4MTU5MzhkYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2FwZHUvQXBkdVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9hcGR1L0FwZHVSZXNwb25zZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBWZWN0
b3I8dWludDhfdD4gZ2V0RW5jb2RlZFJlc3BvbnNlKCkgY29uc3Q7CiAKICAgICBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBWZWN0b3I8
dWludDhfdD4mIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KICAgICBTdGF0dXMgc3RhdHVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVN0YXR1czsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKaW5k
ZXggMjExZTNjODFmM2YwZGUyZmU1YmNiZmNlNjNlM2U0ZmM4MTUwMmEyMC4uNjVkZDhjZGU3OWVm
NTJlN2I2MDAyMGI2OGM0NWZhNDk5MmQyZDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCkBAIC0yMjAsOCArMjIwLDMx
IEBAIGNvbnN0IGNoYXIga1UyZlZlcnNpb25bXSA9ICJVMkZfVjIiOwogCiAvLyBDVEFQSElEIFVz
YWdlIFBhZ2UgYW5kIFVzYWdlCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlk
by12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wt
djIuMC1wcy0yMDE3MDkyNy5odG1sI2hpZC1yZXBvcnQtZGVzY3JpcHRvci1hbmQtZGV2aWNlLWRp
c2NvdmVyeQotY29uc3QgdWludDMyX3Qga0NUQVBISURVc2FnZVBhZ2UgPSAweEYxRDA7Ci1jb25z
dCB1aW50MzJfdCBrQ1RBUEhJRFVzYWdlID0gMHgwMTsKK2NvbnN0IHVpbnQzMl90IGtDdGFwSGlk
VXNhZ2VQYWdlID0gMHhGMUQwOworY29uc3QgdWludDMyX3Qga0N0YXBIaWRVc2FnZSA9IDB4MDE7
CisKKy8vIENUQVBORkMgQXBwbGV0IHNlbGVjdGlvbiBjb21tYW5kIGFuZCByZXNwb25zZXMKKy8v
IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlk
by1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwj
bmZjLWFwcGxldC1zZWxlY3Rpb24KK2NvbnN0IHVpbnQ4X3Qga0N0YXBOZmNBcHBsZXRTZWxlY3Rp
b25Db21tYW5kW10gPSB7CisgICAgMHgwMCwgMHhBNCwgMHgwNCwgMHgwMCwgLy8gQ0xBLCBJTlMs
IFAxLCBQMgorICAgIDB4MDgsIC8vIEwKKyAgICAweEEwLCAweDAwLCAweDAwLCAweDA2LCAweDQ3
LCAvLyBSSUQKKyAgICAweDJGLCAweDAwLCAweDAxIC8vIFBJWAorfTsKKworY29uc3QgdWludDhf
dCBrQ3RhcE5mY0FwcGxldFNlbGVjdGlvblUyZltdID0geworICAgIDB4NTUsIDB4MzIsIDB4NDYs
IDB4NUYsIDB4NTYsIDB4MzIsIC8vIFZlcnNpb24KKyAgICAweDkwLCAweDAwIC8vIEFQRFUgcmVz
cG9uc2UgY29kZQorfTsKKworY29uc3QgdWludDhfdCBrQ3RhcE5mY0FwcGxldFNlbGVjdGlvbkN0
YXBbXSA9IHsKKyAgICAweDQ2LCAweDQ5LCAweDQ0LCAweDRmLCAweDVmLCAweDMyLCAweDVmLCAw
eDMwLCAvLyBWZXJzaW9uCisgICAgMHg5MCwgMHgwMCAvLyBBUERVIHJlc3BvbnNlIGNvZGUKK307
CisKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAx
MzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMw
Lmh0bWwjbmZjLWNvbW1hbmQtZnJhbWluZworY29uc3QgdWludDhfdCBrQ3RhcE5mY0FwZHVDbGEg
PSAweDgwOworY29uc3QgdWludDhfdCBrQ3RhcE5mY0FwZHVJbnMgPSAweDEwOwogCiB9IC8vIG5h
bWVzcGFjZSBmaWRvCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL05lYXJGaWVsZFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvTmVh
ckZpZWxkU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRjYjU2MmUxZTBhZGIzMzMyMTNhOTFhYjk5MWNhY2Mz
YzMyYzYwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL05lYXJGaWVsZFNQSS5oCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCisKKyNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxOZWFyRmllbGQvTmVhckZpZWxk
Lmg+CisKKyNlbHNlCisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBORkZlYXR1cmUp
IHsKKyAgICBORkZlYXR1cmVSZWFkZXJNb2RlICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKK307
CisKK3R5cGVkZWYgTlNfRU5VTSh1aW50MzJfdCwgTkZUYWdUeXBlKSB7CisgICAgTkZUYWdUeXBl
VW5rbm93biAgICA9IDAsCisgICAgTkZUYWdUeXBlR2VuZXJpYzRBICA9IDMsCit9OworCit0eXBl
ZGVmIE5TX09QVElPTlModWludDMyX3QsIE5GVGVjaG5vbG9neSkgeworICAgIE5GVGVjaG5vbG9n
eU5vbmUgICAgICAgICAgICAgICAgID0gMCwKK307CisKK3R5cGVkZWYgTlNfRU5VTSh1aW50MzJf
dCwgTkZOZGVmQXZhaWxhYmlsaXR5KSB7CisgICAgTkZOZGVmQXZhaWxhYmlsaXR5VW5rbm93biA9
IDAsCit9OworCitAcHJvdG9jb2wgTkZUYWdBCitAZW5kCisKK0Bwcm90b2NvbCBORlRhZ0IKK0Bl
bmQKKworQHByb3RvY29sIE5GVGFnRgorQGVuZAorCitAcHJvdG9jb2wgTkZUYWcgPE5TT2JqZWN0
PgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBORlRhZ1R5cGUgdHlwZTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTkZUZWNobm9sb2d5IHRlY2hub2xvZ3k7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdGFnSUQ7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqVUlEOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIE5GTmRlZkF2YWlsYWJpbGl0eSBuZGVmQXZhaWxh
YmlsaXR5OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIHNpemVfdCBu
ZGVmTWVzc2FnZVNpemU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGFzc2lnbikg
c2l6ZV90IG5kZWZDb250YWluZXJTaXplOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU0RhdGEgKkFwcERhdGEgTlNfREVQUkVDQVRFRCgxMF8xMiwgMTBfMTUsIDEwXzAs
IDEzXzApOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGlkPE5GVGFnQT4gdGFn
QTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaWQ8TkZUYWdCPiB0YWdCOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBpZDxORlRhZ0Y+IHRhZ0Y7CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aE5GVGFnOihpZDxORlRhZz4pdGFnOworLSAoTlNTdHJpbmcgKilkZXNj
cmlwdGlvbjsKKy0gKEJPT0wpaXNFcXVhbFRvTkZUYWc6KGlkPE5GVGFnPil0YWc7CitAZW5kCisK
K0BpbnRlcmZhY2UgTkZUYWcgOiBOU09iamVjdCA8TlNTZWN1cmVDb2RpbmcsIE5GVGFnLCBORlRh
Z0EsIE5GVGFnQiwgTkZUYWdGPgorQGVuZAorCitAcHJvdG9jb2wgTkZTZXNzaW9uIDxOU09iamVj
dD4KKy0gKHZvaWQpZW5kU2Vzc2lvbjsKK0BlbmQKKworQGludGVyZmFjZSBORlNlc3Npb24gOiBO
U09iamVjdCA8TkZTZXNzaW9uPgorQGVuZAorCitAcHJvdG9jb2wgTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGU7CisKK0BpbnRlcmZhY2UgTkZSZWFkZXJTZXNzaW9uIDogTkZTZXNzaW9uCitAcHJvcGVy
dHkgKGFzc2lnbikgaWQ8TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOworCistIChC
T09MKXN0YXJ0UG9sbGluZzsKKy0gKEJPT0wpc3RvcFBvbGxpbmc7CistIChCT09MKWNvbm5lY3RU
YWc6KE5GVGFnKil0YWc7CistIChCT09MKWRpc2Nvbm5lY3RUYWc7CistIChOU0RhdGEqKXRyYW5z
Y2VpdmU6KE5TRGF0YSopY2FwZHU7CistIChOU0Vycm9yICopdXBkYXRlVUlBbGVydE1lc3NhZ2U6
KE5TU3RyaW5nICopbWVzc2FnZTsKK0BlbmQKKworQHByb3RvY29sIE5GUmVhZGVyU2Vzc2lvbkRl
bGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorLSAodm9pZClyZWFkZXJTZXNzaW9uOihORlJl
YWRlclNlc3Npb24qKXRoZVNlc3Npb24gZGlkRGV0ZWN0VGFnczooTlNBcnJheTxORlRhZyAqPiAq
KXRhZ3M7CitAZW5kCisKK0BpbnRlcmZhY2UgTkZIYXJkd2FyZU1hbmFnZXIgOiBOU09iamVjdAor
KyAoaW5zdGFuY2V0eXBlKXNoYXJlZEhhcmR3YXJlTWFuYWdlcjsKKy0gKE5TT2JqZWN0PE5GU2Vz
c2lvbj4gKilzdGFydFJlYWRlclNlc3Npb25XaXRoQWN0aW9uU2hlZXRVSToodm9pZCheKShORlJl
YWRlclNlc3Npb24gKnNlc3Npb24sIE5TRXJyb3IgKmVycm9yKSl0aGVTdGFydENhbGxiYWNrOwor
LSAoQk9PTClhcmVGZWF0dXJlc1N1cHBvcnRlZDooTkZGZWF0dXJlKWZlYXR1cmVNYXNrIG91dEVy
cm9yOihOU0Vycm9yKiopb3V0RXJyb3I7CitAZW5kCisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgSEFWRShORUFSX0ZJ
RUxEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggYjQ2NmQyYzc0ODllNjJkNTdmMDc4NGNkOTc2ZTIxODU2NDUx
NjQ0NC4uODEzNzg4MWJiNDFlZTdhOTc4M2JhZDg2NDQ1NzFkYTFmOTFmZDYyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC00MDgsNiArNDA4LDggQEAgVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAogCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwQXV0aGVudGljYXRvci5jcHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWREcml2ZXIuY3BwCitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
TmZjRHJpdmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZp
Y2UuY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9y
LmNwcAogCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzBmNDg4YWI1ODA4OTFlOTkz
NTQ1MmQ2YjYxMzhlMDNjYmI4MDJjZS4uYmQ5OTVlOTU2ZjhlZjZhM2Y4YjEyMWFlMGJlYjliYjRm
Y2ZjMmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDk2LDkgKzQ5NiwxNCBAQCBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5r
Lm1tIEBuby11bmlmeQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2Vydmlj
ZS5tbQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5r
Lm1tIEBuby11bmlmeQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5l
Y3Rpb24ubW0KK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNTZXJ2aWNlLm1t
CitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxl
Z2F0ZS5tbQogCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxTZXJ2
aWNlLm1tCitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5t
bQogCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCmluZGV4IDhmYWE3NmYzYTQ4YWM4YmU5M2Y3YmYzNzgwY2M0NDM0YzYw
Njk1NmYuLmM5OTA0MTYyZmNkYTYxMWEzMzY5MzFlZjViMTIxYmEwMDAzNDE5ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcApAQCAtNjMyLDI5ICs2MzIsMjkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAg
ICAgICAgYXV0byBzdGFnZSA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU3RhZ2UiKSkuZ2V0KCkpKSktPnN0cmluZygpOwogICAgICAgICBp
ZiAoc3RhZ2UgPT0gImluZm8iKQogICAgICAgICAgICAgaGlkLnN0YWdlID0gV2ViS2l0OjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpJbmZvOwotICAgICAg
ICBpZiAoc3RhZ2UgPT0gInJlcXVlc3QiKQorICAgICAgICBlbHNlIGlmIChzdGFnZSA9PSAicmVx
dWVzdCIpCiAgICAgICAgICAgICBoaWQuc3RhZ2UgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6U3RhZ2U6OlJlcXVlc3Q7CiAKICAgICAgICAgYXV0byBz
dWJTdGFnZSA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiU3ViU3RhZ2UiKSkuZ2V0KCkpKSktPnN0cmluZygpOwogICAgICAgICBpZiAoc3Vi
U3RhZ2UgPT0gImluaXQiKQogICAgICAgICAgICAgaGlkLnN1YlN0YWdlID0gV2ViS2l0OjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0OwotICAg
ICAgICBpZiAoc3ViU3RhZ2UgPT0gIm1zZyIpCisgICAgICAgIGVsc2UgaWYgKHN1YlN0YWdlID09
ICJtc2ciKQogICAgICAgICAgICAgaGlkLnN1YlN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpNc2c7CiAKICAgICAgICAgYXV0
byBlcnJvciA9IFdlYktpdDo6dG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiRXJyb3IiKSkuZ2V0KCkpKSktPnN0cmluZygpOwogICAgICAgICBpZiAoZXJyb3Ig
PT0gInN1Y2Nlc3MiKQogICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpTdWNjZXNzOwotICAgICAgICBp
ZiAoZXJyb3IgPT0gImRhdGEtbm90LXNlbnQiKQorICAgICAgICBlbHNlIGlmIChlcnJvciA9PSAi
ZGF0YS1ub3Qtc2VudCIpCiAgICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OkRhdGFOb3RTZW50OwotICAg
ICAgICBpZiAoZXJyb3IgPT0gImVtcHR5LXJlcG9ydCIpCisgICAgICAgIGVsc2UgaWYgKGVycm9y
ID09ICJlbXB0eS1yZXBvcnQiKQogICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpFbXB0eVJlcG9ydDsK
LSAgICAgICAgaWYgKGVycm9yID09ICJ3cm9uZy1jaGFubmVsLWlkIikKKyAgICAgICAgZWxzZSBp
ZiAoZXJyb3IgPT0gIndyb25nLWNoYW5uZWwtaWQiKQogICAgICAgICAgICAgaGlkLmVycm9yID0g
V2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpX
cm9uZ0NoYW5uZWxJZDsKLSAgICAgICAgaWYgKGVycm9yID09ICJtYWxpY2lvdXMtcGF5bG9hZCIp
CisgICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJtYWxpY2lvdXMtcGF5bG9hZCIpCiAgICAgICAg
ICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZDo6RXJyb3I6Ok1hbGljaW91c1BheWxvYWQ7Ci0gICAgICAgIGlmIChlcnJvciA9PSAi
dW5zdXBwb3J0ZWQtb3B0aW9ucyIpCisgICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJ1bnN1cHBv
cnRlZC1vcHRpb25zIikKICAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6VW5zdXBwb3J0ZWRPcHRpb25z
OwotICAgICAgICBpZiAoZXJyb3IgPT0gIndyb25nLW5vbmNlIikKKyAgICAgICAgZWxzZSBpZiAo
ZXJyb3IgPT0gIndyb25nLW5vbmNlIikKICAgICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3JvbmdOb25j
ZTsKIAogICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJh
eVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKQEAgLTY3OCw2
ICs2NzgsMzAgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29uZmlndXJhdGlv
bi5oaWQgPSBXVEZNb3ZlKGhpZCk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gbmZjUmVmID0gc3Rh
dGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZp
Z3VyYXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIp
KS5nZXQoKSkpKSB7CisgICAgICAgIFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TmZjIG5mYzsKKworICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwo
c3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVm
LCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkp
KS0+c3RyaW5nKCk7CisgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCisgICAgICAgICAg
ICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
Ok5mYzo6RXJyb3I6OlN1Y2Nlc3M7CisgICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJuby10YWdz
IikKKyAgICAgICAgICAgIG5mYy5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6TmZjOjpFcnJvcjo6Tm9UYWdzOworICAgICAgICBlbHNlIGlmIChlcnJv
ciA9PSAid3JvbmctdGFnLXR5cGUiKQorICAgICAgICAgICAgbmZjLmVycm9yID0gV2ViS2l0OjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmM6OkVycm9yOjpXcm9uZ1RhZ1R5
cGU7CisgICAgICAgIGVsc2UgaWYgKGVycm9yID09ICJuby1jb25uZWN0aW9ucyIpCisgICAgICAg
ICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246Ok5mYzo6RXJyb3I6Ok5vQ29ubmVjdGlvbnM7CisgICAgICAgIGVsc2UgaWYgKGVycm9yID09
ICJtYWxpY2lvdXMtcGF5bG9hZCIpCisgICAgICAgICAgICBuZmMuZXJyb3IgPSBXZWJLaXQ6Ok1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mYzo6RXJyb3I6Ok1hbGljaW91c1Bh
eWxvYWQ7CisKKyAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdL
QXJyYXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobmZjUmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCisgICAg
ICAgICAgICBuZmMucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQp
LT50b1N0cmluZ1ZlY3RvcigpOworCisgICAgICAgIGlmIChhdXRvIG11bHRpcGxlVGFncyA9IHN0
YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShuZmNSZWYs
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk11bHRpcGxlVGFncyIpKS5n
ZXQoKSkpKQorICAgICAgICAgICAgbmZjLm11bHRpcGxlVGFncyA9IFdLQm9vbGVhbkdldFZhbHVl
KG11bHRpcGxlVGFncyk7CisKKyAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3ZlKG5m
Yyk7CisgICAgfQorCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmNwcAppbmRleCAyYzA4NDQ1Nzg1N2Q0MTA5Yzg0MzExNTkxODMwZTM0YjJhMjViNmRmLi5iMjBj
MmI4YmFjZThhYjUxYThiOWNiZWE4ZGVkNGFkNzlhOWZiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRvck1hbmFnZXIuY3BwCkBAIC0zOCwxNSArMzgsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBuYW1lc3BhY2UgQXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbCB7CiAKICNpZiBQ
TEFURk9STShNQUMpCi1jb25zdCBzaXplX3QgbWF4VHJhbnNwb3J0TnVtYmVyID0gMjsKK2NvbnN0
IHNpemVfdCBtYXhUcmFuc3BvcnROdW1iZXIgPSAzOwogI2Vsc2UKLWNvbnN0IHNpemVfdCBtYXhU
cmFuc3BvcnROdW1iZXIgPSAxOworY29uc3Qgc2l6ZV90IG1heFRyYW5zcG9ydE51bWJlciA9IDI7
CiAjZW5kaWYKIAogLy8gU3VnZ2VzdGVkIGJ5IFdlYkF1dGhOIHNwZWMgYXMgb2YgNyBBdWd1c3Qg
MjAxOC4KIGNvbnN0IHVuc2lnbmVkIG1heFRpbWVPdXRWYWx1ZSA9IDEyMDAwMDsKIAotLy8gRklY
TUUoMTg4NjI0LCAxODg2MjUpOiBTdXBwb3J0IE5GQyBhbmQgQkxFIGF1dGhlbnRpY2F0b3JzLgor
Ly8gRklYTUUoMTg4NjI1KTogU3VwcG9ydCBCTEUgYXV0aGVudGljYXRvcnMuCiBzdGF0aWMgQXV0
aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBP
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9y
U2VsZWN0aW9uQ3JpdGVyaWE+JiBhdXRoZW50aWNhdG9yU2VsZWN0aW9uKQogewogICAgIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgcmVzdWx0OwpAQCAtNTcsNiArNTcsOCBAQCBz
dGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0
cyhjb25zdCBPcHRpb25hbDxQdWJsaQogICAgICAgICBhZGRSZXN1bHQgPSByZXN1bHQuYWRkKEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYik7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAjZW5kaWYKKyAgICAgICAgYWRkUmVzdWx0ID0g
cmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIApAQCAtNjYsOCArNjgsMTAgQEAgc3RhdGljIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVi
bGkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKGF1dGhlbnRpY2F0b3JT
ZWxlY3Rpb24tPmF1dGhlbnRpY2F0b3JBdHRhY2htZW50ID09IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKSB7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpOZmMpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBy
ZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYik7CisgICAgICAgIGFkZFJlc3Vs
dCA9IHJlc3VsdC5hZGQoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICNlbmRpZgogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTIsNiArOTYsOCBAQCBzdGF0aWMgQXV0aGVudGljYXRv
ck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVi
bGljSwogICAgICAgICBhZGRSZXN1bHQgPSByZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ6OlVzYik7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAjZW5kaWYKKyAgICAgICAgYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpOZmMpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApA
QCAtMTAwLDggKzEwNiw5IEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0
U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IFZlY3RvcjxQdWJsaWNLCiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKTsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgICAgICByZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVz
Yik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogI2VuZGlmCisgICAgICAgICAgICByZXN1
bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIGlmICghcmVzdWx0LmNvbnRhaW5zKEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKSAmJiBhbGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0cy5j
b250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkpCiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKTsKQEAgLTEwOSw2ICsx
MTYsOCBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0
VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogICAgICAgICBpZiAoIXJlc3VsdC5jb250
YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpICYmIGFsbG93Q3JlZGVudGlhbC50cmFu
c3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikpCiAgICAgICAgICAg
ICByZXN1bHQuYWRkKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYik7CiAjZW5kaWYKKyAgICAg
ICAgaWYgKCFyZXN1bHQuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSAmJiBh
bGxvd0NyZWRlbnRpYWwudHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0
OjpOZmMpKQorICAgICAgICAgICAgcmVzdWx0LmFkZChBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpO
ZmMpOwogICAgICAgICBpZiAocmVzdWx0LnNpemUoKSA+PSBtYXhUcmFuc3BvcnROdW1iZXIpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmNwcAppbmRleCBmNDU2NTdiOTU5NzA5ODBmNGMxZjQ1
ZWEzMTgwYzNlNzcwZjU4MDczLi4xMTUyZDMxZDRhNDVjMzI3MzRjZGJhOTMyYWUwZTM4YTk2ZTAy
YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2Uu
Y3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiTG9jYWxTZXJ2aWNlLmgiCiAjaW5jbHVk
ZSAiTW9ja0hpZFNlcnZpY2UuaCIKICNpbmNsdWRlICJNb2NrTG9jYWxTZXJ2aWNlLmgiCisjaW5j
bHVkZSAiTW9ja05mY1NlcnZpY2UuaCIKKyNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NSw2ICs0Nyw4IEBA
IFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvclRy
YW5zcG9ydFNlcnZpY2U6OmNyZWF0ZShXCiAgICAgY2FzZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2I6CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPEhpZFNlcnZpY2U+
KG9ic2VydmVyKTsKICNlbmRpZgorICAgIGNhc2UgV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5z
cG9ydDo6TmZjOgorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxOZmNTZXJ2aWNlPihvYnNl
cnZlcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPExvY2FsU2VydmljZT4ob2JzZXJ2ZXIpOwpAQCAtNjAs
NiArNjQsOCBAQCBVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+IEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGVNbwogICAgIGNhc2UgV2ViQ29yZTo6QXV0
aGVudGljYXRvclRyYW5zcG9ydDo6VXNiOgogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxN
b2NrSGlkU2VydmljZT4ob2JzZXJ2ZXIsIGNvbmZpZ3VyYXRpb24pOwogI2VuZGlmCisgICAgY2Fz
ZSBXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmM6CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlUmVmPE1vY2tOZmNTZXJ2aWNlPihvYnNlcnZlciwgY29uZmlndXJhdGlvbik7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPE1vY2tMb2NhbFNlcnZpY2U+KG9ic2VydmVyLCBjb25maWd1cmF0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0hpZFNlcnZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UuaAppbmRleCA3ZDJkMzVmMjQ3ZGVkMDJlMDZmNGQ2YjE1
ZDNhOWQ3NTQxZWQyYWNmLi5lOGVjMjNjYmIyMTAyMWY1NjZkZDRkODE4NzNmOTRiZTAwYzBhZDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRTZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5oCkBAIC0yNywxNyArMjcsMTYgQEAKIAogI2lmIEVO
QUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JUcmFuc3BvcnRTZXJ2aWNlLmgiCisjaW5jbHVkZSAiRmlkb1NlcnZpY2UuaCIKICNpbmNsdWRl
IDxJT0tpdC9oaWQvSU9ISURNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IEN0YXBIaWREcml2ZXI7CiBjbGFzcyBIaWRDb25uZWN0aW9uOwogCi1jbGFzcyBIaWRTZXJ2aWNl
IDogcHVibGljIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlIHsKK2NsYXNzIEhpZFNlcnZp
Y2UgOiBwdWJsaWMgRmlkb1NlcnZpY2UgewogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZFNlcnZp
Y2UoT2JzZXJ2ZXImKTsKICAgICB+SGlkU2VydmljZSgpOwpAQCAtNTEsMTEgKzUwLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TdGFydERpc2NvdmVyeSgpOwogICAgIHZp
cnR1YWwgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IGNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISURE
ZXZpY2VSZWYpIGNvbnN0OwogCi0gICAgdm9pZCBjb250aW51ZUFkZERldmljZUFmdGVyR2V0SW5m
byhDdGFwSGlkRHJpdmVyKiBkZXZpY2VSZWYsIFZlY3Rvcjx1aW50OF90PiYmIGluZm8pOwotCiAg
ICAgUmV0YWluUHRyPElPSElETWFuYWdlclJlZj4gbV9tYW5hZ2VyOwotICAgIC8vIEtlZXBpbmcg
ZHJpdmVycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluaXRpYWxpemluZyBhdXRoZW50aWNhdG9ycy4K
LSAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPj4gbV9kcml2ZXJzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQppbmRl
eCBhYmQwZTdlNzI5NDc5MTI4Y2I2YWZmZjdmMjE4MTI2M2U0ZGE5ODM1Li5lNjkzMGY5NzZiZmQx
NjQ0YmUzNmVkOWY4ZTk4ZjE2ZTk0NjU1YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0K
QEAgLTI4LDE1ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCiAKLSNpbXBvcnQgIkN0YXBBdXRoZW50aWNhdG9yLmgiCiAjaW1wb3J0ICJDdGFwSGlkRHJp
dmVyLmgiCiAjaW1wb3J0ICJIaWRDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJVMmZBdXRoZW50aWNh
dG9yLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
Rmlkb0NvbnN0YW50cy5oPgotI2ltcG9ydCA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgotI2lt
cG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgZmlkbzsKQEAgLTU2LDEyICs0OSwxMiBAQCBzdGF0aWMgdm9pZCBkZXZpY2VSZW1vdmVkQ2Fs
bGJhY2sodm9pZCogY29udGV4dCwgSU9SZXR1cm4sIHZvaWQqLCBJT0hJRERldmljZVJlZgogfQog
CiBIaWRTZXJ2aWNlOjpIaWRTZXJ2aWNlKE9ic2VydmVyJiBvYnNlcnZlcikKLSAgICA6IEF1dGhl
bnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlKG9ic2VydmVyKQorICAgIDogRmlkb1NlcnZpY2Uob2Jz
ZXJ2ZXIpCiB7CiAgICAgbV9tYW5hZ2VyID0gYWRvcHRDRihJT0hJRE1hbmFnZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga0lPSElET3B0aW9uc1R5cGVOb25lKSk7CiAgICAgTlNEaWN0aW9u
YXJ5ICptYXRjaGluZ0RpY3Rpb25hcnkgPSBAewotICAgICAgICBAa0lPSElEUHJpbWFyeVVzYWdl
UGFnZUtleTogYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDprQ1RBUEhJRFVzYWdlUGFn
ZV0pLmdldCgpLAotICAgICAgICBAa0lPSElEUHJpbWFyeVVzYWdlS2V5OiBhZG9wdE5TKFtOU051
bWJlciBudW1iZXJXaXRoSW50OmtDVEFQSElEVXNhZ2VdKS5nZXQoKQorICAgICAgICBAa0lPSElE
UHJpbWFyeVVzYWdlUGFnZUtleTogYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDprQ3Rh
cEhpZFVzYWdlUGFnZV0pLmdldCgpLAorICAgICAgICBAa0lPSElEUHJpbWFyeVVzYWdlS2V5OiBh
ZG9wdE5TKFtOU051bWJlciBudW1iZXJXaXRoSW50OmtDdGFwSGlkVXNhZ2VdKS5nZXQoKQogICAg
IH07CiAgICAgSU9ISURNYW5hZ2VyU2V0RGV2aWNlTWF0Y2hpbmcobV9tYW5hZ2VyLmdldCgpLCAo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKW1hdGNoaW5nRGljdGlvbmFyeSk7CiAgICAgSU9ISURN
YW5hZ2VyUmVnaXN0ZXJEZXZpY2VNYXRjaGluZ0NhbGxiYWNrKG1fbWFuYWdlci5nZXQoKSwgZGV2
aWNlQWRkZWRDYWxsYmFjaywgdGhpcyk7CkBAIC05MiwzMiArODUsNyBAQCBVbmlxdWVSZWY8SGlk
Q29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJl
ZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYg
ZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihj
cmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwotICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGlu
Zm8gZnJvbSB0aGUgZGV2aWNlLgotICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRo
ZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5m
byksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShW
ZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB3ZWFrVGhpcy0+Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8ocHRyLCBXVEZNb3Zl
KHJlc3BvbnNlKSk7Ci0gICAgfSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2RyaXZlcnMuYWRk
KFdURk1vdmUoZHJpdmVyKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBIaWRTZXJ2aWNlOjpjb250aW51ZUFkZERldmljZUFm
dGVyR2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNl
KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBkcml2ZXIgPSBtX2RyaXZl
cnMudGFrZShwdHIpOwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNl
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpbmZvID0gcmVhZENUQVBH
ZXRJbmZvUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIGlmIChpbmZvICYmIGluZm8tPnZlcnNpb25z
KCkuZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52ZXJzaW9ucygpLmVuZCgp
KSB7Ci0gICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChDdGFwQXV0aGVudGlj
YXRvcjo6Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5mbykpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBnZXQg
aW5mbyByZXNwb25zZS4iKTsKLSAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVyc2lv
bjo6a1UyZik7Ci0gICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkF1dGhlbnRp
Y2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICBnZXRJbmZvKFdURjo6bWFrZVVu
aXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZWFyRmllbGRTb2Z0TGluay5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZTA1ZmFjMjJiOWQ0MDVmNTMyODk3NzhhZTcwMTVhMGI4MGU0YjM3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTmVhckZpZWxkU29mdExpbmsuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCisjaW1wb3J0ICJOZWFy
RmllbGRTUEkuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJB
TUVXT1JLX0ZPUl9IRUFERVIoV2ViS2l0LCBOZWFyRmllbGQpOworCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihXZWJLaXQsIE5GVGFnKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdl
YktpdCwgTkZTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZS
ZWFkZXJTZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgTkZIYXJk
d2FyZU1hbmFnZXIpOworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVs
ZFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTmVhckZpZWxkU29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1NDQyMzM5NDRiMDJmYTU1
ZWZkZTZjZjRhNzQ0MjlkMGU1YWM5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05lYXJGaWVsZFNvZnRMaW5rLm1tCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorCitTT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCk7CisKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlRhZyk7CitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZTZXNzaW9uKTsKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgTmVhckZpZWxkLCBORlJlYWRlclNlc3Np
b24pOworCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUwoV2ViS2l0LCBOZWFyRmllbGQsIE5GSGFyZHdhcmVNYW5hZ2VyKTsKKyNlbHNlCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIE5lYXJGaWVsZCwgTkZIYXJkd2FyZU1hbmFn
ZXIpOworI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TmZjQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiOWQ5NTc3ZTIwNWFhYjdkYjdhM2FiMWU1NTli
OTdkYzNlOTI0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgSEFW
RShORUFSX0ZJRUxEKQorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KKworT0JKQ19DTEFTUyBORlJlYWRlclNlc3Npb247CitPQkpDX0NMQVNT
IE5TQXJyYXk7CitPQkpDX0NMQVNTIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZmNTZXJ2aWNlOworCitjbGFzcyBOZmNDb25uZWN0aW9u
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5mY0Nvbm5lY3Rpb24+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZmNDb25uZWN0aW9uKTsK
K3B1YmxpYzoKKyAgICBOZmNDb25uZWN0aW9uKFJldGFpblB0cjxORlJlYWRlclNlc3Npb24+JiYs
IE5mY1NlcnZpY2UmKTsKKyAgICB+TmZjQ29ubmVjdGlvbigpOworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0OworCisgICAgLy8gRm9y
IFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUKKyAgICB2b2lkIGRpZERldGVjdFRhZ3MoTlNBcnJh
eSAqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiBt
X3Nlc3Npb247CisgICAgUmV0YWluUHRyPFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+IG1fZGVs
ZWdhdGU7CisgICAgV2Vha1B0cjxOZmNTZXJ2aWNlPiBtX3NlcnZpY2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIEhBVkUoTkVB
Ul9GSUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzMTk4
NWU3ZjhiYmQ1Yzg5OTA5MGM2ODJlZWEzM2ExNjZjOTE5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0
aW9uLm1tCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBI
QVZFKE5FQVJfRklFTEQpCisKKyNpbXBvcnQgIk5mY1NlcnZpY2UuaCIKKyNpbXBvcnQgIldLTkZS
ZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5o
PgorI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIGZpZG87CisKK25hbWVzcGFjZSB7CitpbmxpbmUgYm9vbCBjb21wYXJlVmVy
c2lvbihOU0RhdGEgKmRhdGEsIGNvbnN0IHVpbnQ4X3QgdmVyc2lvbltdLCBzaXplX3QgdmVyc2lv
blNpemUpCit7CisgICAgaWYgKGRhdGEubGVuZ3RoICE9IHZlcnNpb25TaXplKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICFtZW1jbXAoZGF0YS5ieXRlcywgdmVyc2lvbiwgdmVy
c2lvblNpemUpOworfQorfSAvLyBuYW1lc3BhY2UKKworTmZjQ29ubmVjdGlvbjo6TmZjQ29ubmVj
dGlvbihSZXRhaW5QdHI8TkZSZWFkZXJTZXNzaW9uPiYmIHNlc3Npb24sIE5mY1NlcnZpY2UmIHNl
cnZpY2UpCisgICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fZGVsZWdh
dGUoYWRvcHROUyhbW1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29u
bmVjdGlvbjoqdGhpc10pKQorICAgICwgbV9zZXJ2aWNlKG1ha2VXZWFrUHRyKHNlcnZpY2UpKQor
eworICAgIFttX3Nlc3Npb24gc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07CisgICAgLy8g
RklYTUUoMjAwOTMzKQorI2lmIEhBVkUoTkZfUkVBREVSX1NFU1NJT05fVVBEQVRFX1VJX0FMRVJU
X01FU1NBR0UpCisgICAgW21fc2Vzc2lvbiB1cGRhdGVVSUFsZXJ0TWVzc2FnZTpAIkhvbGQgdGhl
IGtleSBhZ2FpbnN0IHRoZSB0b3Agb2YgeW91ciBkZXZpY2UuIl07CisjZW5kaWYKKyAgICBbbV9z
ZXNzaW9uIHN0YXJ0UG9sbGluZ107Cit9CisKK05mY0Nvbm5lY3Rpb246On5OZmNDb25uZWN0aW9u
KCkKK3sKKyAgICBbbV9zZXNzaW9uIGRpc2Nvbm5lY3RUYWddOworICAgIFttX3Nlc3Npb24gc3Rv
cFBvbGxpbmddOworICAgIFttX3Nlc3Npb24gZW5kU2Vzc2lvbl07Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBOZmNDb25uZWN0aW9uOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25z
dAoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZTsKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgYXV0byByZXNwb25zZURhdGEgPSBbbV9zZXNzaW9uIHRyYW5zY2VpdmU6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV1dOworICAg
ICAgICByZXNwb25zZS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVz
cG9uc2VEYXRhLmJ5dGVzKSwgcmVzcG9uc2VEYXRhLmxlbmd0aCk7CisgICAgfQorICAgIHJldHVy
biByZXNwb25zZTsKK30KKwordm9pZCBOZmNDb25uZWN0aW9uOjpkaWREZXRlY3RUYWdzKE5TQXJy
YXkgKnRhZ3MpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlcnZpY2UpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEZJWE1FKDIwMDkzMik6IFdhcm4gdXNlcnMgd2hlbiBtdWx0aXBsZSBORkMgdGFn
cyBwcmVzZW50CisgICAgZm9yIChORlRhZyAqdGFnIGluIHRhZ3MpIHsKKyAgICAgICAgaWYgKHRh
Zy50eXBlICE9IE5GVGFnVHlwZUdlbmVyaWM0QSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIVttX3Nlc3Npb24gY29ubmVjdFRhZzp0YWddKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgLy8gQ29uZmlybSB0aGUgRklETyBhcHBsZXQgaXMgYXZhbGlhYmxlIGJl
Zm9yZSByZXR1cm4uCisgICAgICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9m
aWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2Nv
bC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWFwcGxldC1zZWxlY3Rpb24KKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBhdXRvIHZlcnNpb25EYXRhID0gW21fc2Vzc2lv
biB0cmFuc2NlaXZlOltOU0RhdGEgZGF0YVdpdGhCeXRlczprQ3RhcE5mY0FwcGxldFNlbGVjdGlv
bkNvbW1hbmQgbGVuZ3RoOnNpemVvZihrQ3RhcE5mY0FwcGxldFNlbGVjdGlvbkNvbW1hbmQpXV07
CisgICAgICAgICAgICBpZiAoIXZlcnNpb25EYXRhIHx8ICghY29tcGFyZVZlcnNpb24odmVyc2lv
bkRhdGEsIGtDdGFwTmZjQXBwbGV0U2VsZWN0aW9uVTJmLCBzaXplb2Yoa0N0YXBOZmNBcHBsZXRT
ZWxlY3Rpb25VMmYpKSAmJiAhY29tcGFyZVZlcnNpb24odmVyc2lvbkRhdGEsIGtDdGFwTmZjQXBw
bGV0U2VsZWN0aW9uQ3RhcCwgc2l6ZW9mKGtDdGFwTmZjQXBwbGV0U2VsZWN0aW9uQ3RhcCkpKSkg
eworICAgICAgICAgICAgICAgIFttX3Nlc3Npb24gZGlzY29ubmVjdFRhZ107CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX3Nl
cnZpY2UtPmRpZENvbm5lY3RUYWcoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIEhBVkUo
TkVBUl9GSUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzI4MDE5NDcx
ODk1ZjNkNzU1NTViOWRhNDg1ODQ2N2M3ZTY4ZmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjU2VydmljZS5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisKKyNpbmNsdWRlICJGaWRvU2VydmljZS5oIgorCitPQkpDX0NMQVNTIE5GUmVh
ZGVyU2Vzc2lvbjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEN0YXBOZmNEcml2ZXI7
CisKK2NsYXNzIE5mY1NlcnZpY2UgOiBwdWJsaWMgRmlkb1NlcnZpY2UgeworcHVibGljOgorICAg
IGV4cGxpY2l0IE5mY1NlcnZpY2UoT2JzZXJ2ZXImKTsKKyAgICB+TmZjU2VydmljZSgpOworCisg
ICAgLy8gRm9yIE5mY0Nvbm5lY3Rpb24uCisgICAgdm9pZCBkaWRDb25uZWN0VGFnKCk7CisKKyNp
ZiBIQVZFKE5FQVJfRklFTEQpCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBzZXREcml2ZXIoc3RkOjp1
bmlxdWVfcHRyPEN0YXBOZmNEcml2ZXI+JiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9p
ZCBzdGFydERpc2NvdmVyeUludGVybmFsKCkgZmluYWw7CisgICAgdm9pZCBjb250aW51ZUFkZERl
dmljZUFmdGVyR2V0SW5mbyhWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSk7CisKKyAgICAvLyBP
dmVycmlkZWQgYnkgTW9ja05mY1NlcnZpY2UuCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3Rh
cnREaXNjb3ZlcnkoKTsKKworI2lmIEhBVkUoTkVBUl9GSUVMRCkKKyAgICAvLyBPbmx5IG9uZSBy
ZWFkZXIgc2Vzc2lvbiBpcyBhbGxvd2VkIHBlciB0aW1lLgorICAgIC8vIEtlZXAgdGhlIHJlYWRl
ciBzZXNzaW9uIGFsaXZlIGhlcmUgd2hlbiBpdCB0cmllcyB0byBjb25uZWN0IHRvIGEgdGFnLgor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwTmZjRHJpdmVyPiBtX2RyaXZlcjsKKyNlbmRpZgorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmZjU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL05mY1NlcnZpY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNiNjA4ZTcwZmQyM2Y2MWVkNTE3
NTc0ZTE5MWJhNzAwNmY1NjM4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY1NlcnZpY2UubW0KQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5mY1NlcnZp
Y2UuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbXBvcnQgIkN0YXBOZmNEcml2ZXIu
aCIKKyNpbXBvcnQgIk5lYXJGaWVsZFNQSS5oIgorI2ltcG9ydCAiTmZjQ29ubmVjdGlvbi5oIgor
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvUnVuTG9vcC5oPgorCisjaW1wb3J0ICJOZWFyRmllbGRTb2Z0TGluay5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworTmZjU2VydmljZTo6TmZjU2VydmljZShPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCisgICAgOiBGaWRvU2VydmljZShvYnNlcnZlcikKK3sKK30KKworTmZjU2VydmljZTo6
fk5mY1NlcnZpY2UoKQoreworfQorCit2b2lkIE5mY1NlcnZpY2U6OmRpZENvbm5lY3RUYWcoKQor
eworI2lmIEhBVkUoTkVBUl9GSUVMRCkKKyAgICBnZXRJbmZvKFdURk1vdmUobV9kcml2ZXIpKTsK
KyNlbmRpZgorfQorCisjaWYgSEFWRShORUFSX0ZJRUxEKQordm9pZCBOZmNTZXJ2aWNlOjpzZXRE
cml2ZXIoc3RkOjp1bmlxdWVfcHRyPEN0YXBOZmNEcml2ZXI+JiYgZHJpdmVyKQoreworICAgIG1f
ZHJpdmVyID0gV1RGTW92ZShkcml2ZXIpOworfQorI2VuZGlmCisKK3ZvaWQgTmZjU2VydmljZTo6
c3RhcnREaXNjb3ZlcnlJbnRlcm5hbCgpCit7CisgICAgcGxhdGZvcm1TdGFydERpc2NvdmVyeSgp
OworfQorCit2b2lkIE5mY1NlcnZpY2U6OnBsYXRmb3JtU3RhcnREaXNjb3ZlcnkoKQoreworI2lm
IEhBVkUoTkVBUl9GSUVMRCkKKyAgICBpZiAoIVtbZ2V0TkZIYXJkd2FyZU1hbmFnZXJDbGFzcygp
IHNoYXJlZEhhcmR3YXJlTWFuYWdlcl0gYXJlRmVhdHVyZXNTdXBwb3J0ZWQ6TkZGZWF0dXJlUmVh
ZGVyTW9kZSBvdXRFcnJvcjpuaWxdKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXaWxsIGJl
IGV4ZWN1dGVkIGluIGEgZGlmZmVyZW50IHRocmVhZC4KKyAgICBhdXRvIGNhbGxiYWNrID0gbWFr
ZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10gKE5GUmVhZGVy
U2Vzc2lvbiAqc2Vzc2lvbiwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkbid0IHN0YXJ0IGEgTkZDIHJlYWRlciBzZXNzaW9uOiAlQCIsIGVy
cm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywgc2Vz
c2lvbiA9IHJldGFpblB0cihzZXNzaW9uKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgW3Nlc3Npb24gZW5kU2Vzc2lvbl07CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDdGFw
TmZjRHJpdmVyIGFuZCBOZmNDb25uZWN0aW9uIHdpbGwgdGFrZSBjYXJlIG9mIHBvbGxpbmcgdGFn
cyBhbmQgY29ubmVjdGluZyB0byB0aGVtLgorICAgICAgICAgICAgbV9kcml2ZXIgPSBXVEY6Om1h
a2VVbmlxdWU8Q3RhcE5mY0RyaXZlcj4obWFrZVVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPihXVEZN
b3ZlKHNlc3Npb24pLCAqdGhpcykpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBbW2dldE5G
SGFyZHdhcmVNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRIYXJkd2FyZU1hbmFnZXJdIHN0YXJ0UmVhZGVy
U2Vzc2lvbldpdGhBY3Rpb25TaGVldFVJOmNhbGxiYWNrLmdldCgpXTsKKyNlbmRpZiAvLyBIQVZF
KE5FQVJfRklFTEQpCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkyY2E4NjZjNjkzMTBlYmQ4NDJjNjFkMTEyMDhkN2Q3
YTI1YjBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
ICYmIEhBVkUoTkVBUl9GSUVMRCkKKworI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgTmZjQ29ubmVjdGlvbjsKK30KKworQGludGVyZmFjZSBXS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlIDogTlNPYmplY3QgPE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRl
PgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25uZWN0aW9uOihXZWJLaXQ6Ok5mY0Nvbm5l
Y3Rpb24mKWNvbm5lY3Rpb247CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
ICYmIEhBVkUoTkVBUl9GSUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVy
U2Vzc2lvbkRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3Y2ZjYjU1ODMyYmQ2OGI1ZmFiMTA4NjU5
Y2IxOGE0Y2FjY2JlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IldLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pICYm
IEhBVkUoTkVBUl9GSUVMRCkKKworI2ltcG9ydCAiTmZjQ29ubmVjdGlvbi5oIgorI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CisKKyNpbXBvcnQgIk5lYXJG
aWVsZFNvZnRMaW5rLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVn
YXRlIHsKKyAgICBXZWFrUHRyPFdlYktpdDo6TmZjQ29ubmVjdGlvbj4gX2Nvbm5lY3Rpb247Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbm5lY3Rpb246KFdlYktpdDo6TmZjQ29ubmVj
dGlvbiYpY29ubmVjdGlvbgoreworICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIF9jb25uZWN0aW9uID0gbWFrZVdlYWtQdHIoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy8vIEV4ZWN1dGVkIGluIGEgZGlmZmVyZW50IHRocmVhZC4KKy0gKHZvaWQpcmVh
ZGVyU2Vzc2lvbjooTkZSZWFkZXJTZXNzaW9uKil0aGVTZXNzaW9uIGRpZERldGVjdFRhZ3M6KE5T
QXJyYXk8TkZUYWcgKj4gKil0YWdzCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBfY29ubmVjdGlv
biwgdGFncyA9IHJldGFpblB0cih0YWdzKV0geworICAgICAgICBpZiAoIWNvbm5lY3Rpb24pCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbm5lY3Rpb24tPmRpZERldGVjdFRhZ3ModGFn
cy5nZXQoKSk7CisgICAgfSk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pICYmIEhBVkUoTkVBUl9GSUVMRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlv
bi5jcHAKaW5kZXggYzhiYTkxODNlOWM4YTI1M2VlMzE1MjRkMWUyYmE5OTE3MWE1MjllYi4uNzNm
NjlmMjQxM2YyMDM2ODFhZjI0Y2EzNGI2NGEzNzQyZDQxM2JiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBNb2NrID0gTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOwordXNpbmcgTW9ja0hpZCA9IE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIGNib3I7CiB1c2luZyBuYW1lc3BhY2UgZmlkbzsKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBEYXRhU2VudENhbGxiYWNrJiYgY2FsbGJhY2sKICAgICAgICAgICAgIHdlYWtUaGlz
LT5hc3NlbWJsZVJlcXVlc3QoV1RGTW92ZShkYXRhKSk7CiAKICAgICAgICAgICAgIGF1dG8gc2Vu
dCA9IERhdGFTZW50OjpZZXM7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMtPnN0YWdlc01hdGNo
KCkgJiYgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkVycm9y
OjpEYXRhTm90U2VudCkKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcy0+c3RhZ2VzTWF0Y2goKSAm
JiB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6
OkRhdGFOb3RTZW50KQogICAgICAgICAgICAgICAgIHNlbnQgPSBEYXRhU2VudDo6Tm87CiAgICAg
ICAgICAgICBjYWxsYmFjayhzZW50KTsKICAgICAgICAgfSk7CkBAIC05Miw3ICs5Miw3IEBAIHZv
aWQgTW9ja0hpZENvbm5lY3Rpb246OnNlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgRGF0YVNl
bnRDYWxsYmFjayYmIGNhbGxiYWNrCiAKIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnJlZ2lzdGVy
RGF0YVJlY2VpdmVkQ2FsbGJhY2tJbnRlcm5hbCgpCiB7Ci0gICAgaWYgKHN0YWdlc01hdGNoKCkg
JiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6OkVtcHR5UmVwb3J0
KSB7CisgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3Ig
PT0gTW9ja0hpZDo6RXJyb3I6OkVtcHR5UmVwb3J0KSB7CiAgICAgICAgIHJlY2VpdmVSZXBvcnQo
eyB9KTsKICAgICAgICAgc2hvdWxkQ29udGludWVGZWVkUmVwb3J0cygpOwogICAgICAgICByZXR1
cm47CkBAIC0xMjMsMTQgKzEyMywxNCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJl
cXVlc3QoKQogICAgIC8vIFNldCBzdGFnZXMuCiAgICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2UtPmNt
ZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCkgewogICAgICAgICBhdXRvIHByZXZp
b3VzU3ViU3RhZ2UgPSBtX3N1YlN0YWdlOwotICAgICAgICBtX3N1YlN0YWdlID0gTW9jazo6U3Vi
U3RhZ2U6OkluaXQ7Ci0gICAgICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6OlN1YlN0
YWdlOjpNc2cpCi0gICAgICAgICAgICBtX3N0YWdlID0gTW9jazo6U3RhZ2U6OlJlcXVlc3Q7Cisg
ICAgICAgIG1fc3ViU3RhZ2UgPSBNb2NrSGlkOjpTdWJTdGFnZTo6SW5pdDsKKyAgICAgICAgaWYg
KHByZXZpb3VzU3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykKKyAgICAgICAgICAg
IG1fc3RhZ2UgPSBNb2NrSGlkOjpTdGFnZTo6UmVxdWVzdDsKICAgICB9CiAgICAgaWYgKG1fcmVx
dWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciB8fCBtX3Jl
cXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZykKLSAgICAg
ICAgbV9zdWJTdGFnZSA9IE1vY2s6OlN1YlN0YWdlOjpNc2c7CisgICAgICAgIG1fc3ViU3RhZ2Ug
PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNnOwogCi0gICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6U3Rh
Z2U6OlJlcXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNnKSB7CisgICAg
aWYgKG1fc3RhZ2UgPT0gTW9ja0hpZDo6U3RhZ2U6OlJlcXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBN
b2NrSGlkOjpTdWJTdGFnZTo6TXNnKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBpc3N1ZSBk
aWZmZXJlbnQgbXNnIGNtZCBmb3IgQ1RBUCBhbmQgVTJGLgogICAgICAgICBpZiAobV9jb25maWd1
cmF0aW9uLmhpZC0+Y2FuRG93bmdyYWRlICYmICFtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZikK
ICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmID0gbV9yZXF1ZXN0TWVzc2Fn
ZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtNc2c7CkBAIC0xNzYsNyArMTc2LDcg
QEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICB9CiAKICAgICAv
LyBTdG9yZSBub25jZS4KLSAgICBpZiAobV9zdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6SW5p
dCkgeworICAgIGlmIChtX3N1YlN0YWdlID09IE1vY2tIaWQ6OlN1YlN0YWdlOjpJbml0KSB7CiAg
ICAgICAgIG1fbm9uY2UgPSBtX3JlcXVlc3RNZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOwog
ICAgICAgICBBU1NFUlQobV9ub25jZS5zaXplKCkgPT0ga0hpZEluaXROb25jZUxlbmd0aCk7CiAg
ICAgfQpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJl
cG9ydHMoKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBNb2NrSGlkQ29ubmVjdGlvbkludGVybmFs
OwogCi0gICAgaWYgKG1fc3ViU3RhZ2UgPT0gTW9jazo6U3ViU3RhZ2U6OkluaXQpIHsKKyAgICBp
ZiAobV9zdWJTdGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6SW5pdCkgewogICAgICAgICBWZWN0
b3I8dWludDhfdD4gcGF5bG9hZDsKICAgICAgICAgcGF5bG9hZC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGtIaWRJbml0UmVzcG9uc2VTaXplKTsKICAgICAgICAgcGF5bG9hZC5hcHBlbmRWZWN0b3Io
bV9ub25jZSk7CiAgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gcGF5bG9hZC5zaXplKCk7
Ci0gICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9y
ID09IE1vY2s6OkVycm9yOjpXcm9uZ05vbmNlKQorICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAm
JiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrSGlkOjpFcnJvcjo6V3JvbmdOb25j
ZSkKICAgICAgICAgICAgIHBheWxvYWRbMF0tLTsKICAgICAgICAgcGF5bG9hZC5ncm93KGtIaWRJ
bml0UmVzcG9uc2VTaXplKTsKICAgICAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMo
cGF5bG9hZC5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBDdGFwQ2hhbm5lbElkU2l6ZSk7CiAgICAg
ICAgIGF1dG8gY2hhbm5lbCA9IGtIaWRCcm9hZGNhc3RDaGFubmVsOwotICAgICAgICBpZiAoc3Rh
Z2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6
V3JvbmdDaGFubmVsSWQpCisgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJh
dGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAg
ICAgICAgIGNoYW5uZWwtLTsKICAgICAgICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldChj
aGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFdURk1vdmUocGF5bG9hZCksIHBh
eWxvYWQuc2l6ZSgpKTsKICAgICAgICAgcmVjZWl2ZVJlcG9ydChpbml0UGFja2V0LmdldFNlcmlh
bGl6ZWREYXRhKCkpOwpAQCAtMjEwLDE0ICsyMTAsMTQgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlv
bjo6ZmVlZFJlcG9ydHMoKQogICAgIH0KIAogICAgIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBt
ZXNzYWdlOwotICAgIGlmIChtX3N0YWdlID09IE1vY2s6OlN0YWdlOjpJbmZvICYmIG1fc3ViU3Rh
Z2UgPT0gTW9jazo6U3ViU3RhZ2U6Ok1zZykgeworICAgIGlmIChtX3N0YWdlID09IE1vY2tIaWQ6
OlN0YWdlOjpJbmZvICYmIG1fc3ViU3RhZ2UgPT0gTW9ja0hpZDo6U3ViU3RhZ2U6Ok1zZykgewog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gaW5mb0RhdGE7CiAgICAgICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5jYW5Eb3duZ3JhZGUpCiAgICAgICAgICAgICBpbmZvRGF0YSA9IGVuY29kZUFz
Q0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3Rh
cCwgUHJvdG9jb2xWZXJzaW9uOjprVTJmIH0sIFZlY3Rvcjx1aW50OF90PihhYWd1aWRMZW5ndGgs
IDB1KSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbmZvRGF0YSA9IGVuY29kZUFzQ0JP
UihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9
LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAwdSkpKTsKICAgICAgICAgaW5mb0RhdGEu
aW5zZXJ0KDAsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtT
dWNjZXNzKSk7IC8vIFByZXBlbmQgc3RhdHVzIGNvZGUuCi0gICAgICAgIGlmIChzdGFnZXNNYXRj
aCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2s6OkVycm9yOjpXcm9uZ0No
YW5uZWxJZCkKKyAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25maWd1cmF0aW9uLmhp
ZC0+ZXJyb3IgPT0gTW9ja0hpZDo6RXJyb3I6Oldyb25nQ2hhbm5lbElkKQogICAgICAgICAgICAg
bWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCAtIDEsIEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYpCkBAIC0yMjcsNyArMjI3
LDcgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6U3RhZ2U6OlJlcXVlc3QgJiYgbV9zdWJT
dGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNnKSB7CisgICAgaWYgKG1fc3RhZ2UgPT0gTW9ja0hp
ZDo6U3RhZ2U6OlJlcXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBNb2NrSGlkOjpTdWJTdGFnZTo6TXNn
KSB7CiAgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5rZWVwQWxpdmUpIHsKICAgICAg
ICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmtlZXBBbGl2ZSA9IGZhbHNlOwogICAgICAgICAg
ICAgRmlkb0hpZEluaXRQYWNrZXQgaW5pdFBhY2tldChtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZSwgeyBDdGFwS2VlcEFsaXZlU3RhdHVzUHJvY2Vzc2lu
ZyB9LCAxKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVk
UmVwb3J0cygpCiAgICAgICAgICAgICBjb250aW51ZUZlZWRSZXBvcnRzKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkgJiYgbV9jb25m
aWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9ucyAm
JiAobV9yZXF1aXJlUmVzaWRlbnRLZXkgfHwgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbikpCisg
ICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09
IE1vY2tIaWQ6OkVycm9yOjpVbnN1cHBvcnRlZE9wdGlvbnMgJiYgKG1fcmVxdWlyZVJlc2lkZW50
S2V5IHx8IG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24pKQogICAgICAgICAgICAgbWVzc2FnZSA9
IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNv
bW1hbmQ6OmtDYm9yLCB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNv
ZGU6OmtDdGFwMkVyclVuc3VwcG9ydGVkT3B0aW9uKSB9KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBWZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lk
IE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgYm9vbCBpc0ZpcnN0ID0gdHJ1
ZTsKICAgICB3aGlsZSAobWVzc2FnZS0+bnVtUGFja2V0cygpKSB7CiAgICAgICAgIGF1dG8gcmVw
b3J0ID0gbWVzc2FnZS0+cG9wTmV4dFBhY2tldCgpOwotICAgICAgICBpZiAoIWlzRmlyc3QgJiYg
c3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJv
cjo6V3JvbmdDaGFubmVsSWQpCisgICAgICAgIGlmICghaXNGaXJzdCAmJiBzdGFnZXNNYXRjaCgp
ICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9yID09IE1vY2tIaWQ6OkVycm9yOjpXcm9uZ0No
YW5uZWxJZCkKICAgICAgICAgICAgIHJlcG9ydCA9IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQo
bV9jdXJyZW50Q2hhbm5lbCAtIDEsIDAsIHsgfSkuZ2V0U2VyaWFsaXplZERhdGEoKTsKICAgICAg
ICAgLy8gUGFja2V0cyBhcmUgZmVlZCBhc3luY2hyb25vdXNseSB0byBtaW1pYyBhY3R1YWwgZGF0
YSB0cmFuc21pc3Npb24uCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVwb3J0
ID0gV1RGTW92ZShyZXBvcnQpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRh
YmxlIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpzaG91bGRD
b250aW51ZUZlZWRSZXBvcnRzKCkKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5oaWQtPmNvbnRp
bnVlQWZ0ZXJFcnJvckRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbmZpZ3VyYXRpb24u
aGlkLT5jb250aW51ZUFmdGVyRXJyb3JEYXRhID0gZmFsc2U7Ci0gICAgbV9jb25maWd1cmF0aW9u
LmhpZC0+ZXJyb3IgPSBNb2NrOjpFcnJvcjo6U3VjY2VzczsKKyAgICBtX2NvbmZpZ3VyYXRpb24u
aGlkLT5lcnJvciA9IE1vY2tIaWQ6OkVycm9yOjpTdWNjZXNzOwogICAgIGNvbnRpbnVlRmVlZFJl
cG9ydHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2VydmljZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEz
MmNkZTRkNmI2NmRhYzMxYWNjNjI5NmM1ZTk5ODI2YTI2YjMzMDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tOZmNT
ZXJ2aWNlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCisKK09CSkNfQ0xBU1MgTlNE
YXRhOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb247CisKK2NsYXNzIE1vY2tOZmNTZXJ2aWNlIGZpbmFsIDogcHVibGljIE5m
Y1NlcnZpY2UgeworcHVibGljOgorICAgIE1vY2tOZmNTZXJ2aWNlKE9ic2VydmVyJiwgY29uc3Qg
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYpOworCisgICAgTlNEYXRhKiB0cmFu
c2NlaXZlKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkg
ZmluYWw7CisKKyAgICB2b2lkIGRldGVjdFRhZ3MoKSBjb25zdDsKKworICAgIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTmZjU2Vy
dmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja05mY1NlcnZpY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZmMjk2NjkyNTVhMTMxNzMyMWQ4Y2NmYmUx
ZjYwNDczZWUzMzc0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja05mY1NlcnZpY2UubW0KQEAgLTAsMCArMSwyMDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1vY2tOZmNTZXJ2
aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorI2ltcG9ydCAiQ3RhcE5mY0RyaXZlci5o
IgorI2ltcG9ydCAiTmVhckZpZWxkU1BJLmgiCisjaW1wb3J0ICJOZmNDb25uZWN0aW9uLmgiCisj
aW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworI2lt
cG9ydCAiTmVhckZpZWxkU29mdExpbmsuaCIKKworI2lmIEhBVkUoTkVBUl9GSUVMRCkKKworQGlu
dGVyZmFjZSBXS01vY2tORlRhZyA6IE5TT2JqZWN0IDxORlRhZz4KKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoVHlwZTooTkZUYWdUeXBlKXR5cGU7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdLTW9ja05GVGFnIHsKKyAgICBORlRhZ1R5cGUgX3R5cGU7Cit9CisKK0BzeW50aGVzaXplIHRl
Y2hub2xvZ3k7CitAc3ludGhlc2l6ZSB0YWdJRDsKK0BzeW50aGVzaXplIEFwcERhdGE7CitAc3lu
dGhlc2l6ZSBVSUQ7CitAc3ludGhlc2l6ZSBuZGVmQXZhaWxhYmlsaXR5OworQHN5bnRoZXNpemUg
bmRlZk1lc3NhZ2VTaXplOworQHN5bnRoZXNpemUgbmRlZkNvbnRhaW5lclNpemU7CitAc3ludGhl
c2l6ZSB0YWdBOworQHN5bnRoZXNpemUgdGFnQjsKK0BzeW50aGVzaXplIHRhZ0Y7CisKKy0gKE5G
VGFnVHlwZSl0eXBlCit7CisgICAgcmV0dXJuIF90eXBlOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhORlRhZzooaWQ8TkZUYWc+KXRhZworeworICAgIGlmICgoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIF90eXBlID0gdGFnLnR5cGU7CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKE5TU3RyaW5nKilkZXNjcmlwdGlvbgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKEJP
T0wpaXNFcXVhbFRvTkZUYWc6KGlkPE5GVGFnPil0YWcKK3sKKyAgICByZXR1cm4gTk87Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFR5cGU6KE5GVGFnVHlwZSl0eXBlCit7CisgICAgaWYg
KChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgX3R5cGUgPSB0eXBlOworICAgIHJldHVy
biBzZWxmOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBIQVZFKE5FQVJfRklFTEQpCisKK25hbWVz
cGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIGZpZG87Cit1c2luZyBNb2NrTmZjID0gTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjOworCisjaWYgSEFWRShORUFSX0ZJ
RUxEKQorCituYW1lc3BhY2UgeworCitzdGF0aWMgaWQ8TkZSZWFkZXJTZXNzaW9uRGVsZWdhdGU+
IGdsb2JhbE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlOworc3RhdGljIE1vY2tOZmNTZXJ2aWNlKiBn
bG9iYWxOZmNTZXJ2aWNlOworCitzdGF0aWMgdm9pZCBORlJlYWRlclNlc3Npb25TZXREZWxlZ2F0
ZShpZCwgU0VMLCBpZDxORlJlYWRlclNlc3Npb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCit7CisgICAg
Z2xvYmFsTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKK30KKworc3RhdGljIEJP
T0wgTkZSZWFkZXJTZXNzaW9uQ29ubmVjdFRhZ0ZhaWwoaWQsIFNFTCwgTkZUYWcgKikKK3sKKyAg
ICByZXR1cm4gTk87Cit9CisKK3N0YXRpYyBCT09MIE5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWco
aWQsIFNFTCwgTkZUYWcgKikKK3sKKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgTlNEYXRh
KiBORlJlYWRlclNlc3Npb25UcmFuc2NlaXZlKGlkLCBTRUwsIE5TRGF0YSAqKQoreworICAgIGlm
ICghZ2xvYmFsTmZjU2VydmljZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gZ2xv
YmFsTmZjU2VydmljZS0+dHJhbnNjZWl2ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZQorCisjZW5k
aWYgLy8gSEFWRShORUFSX0ZJRUxEKQorCitNb2NrTmZjU2VydmljZTo6TW9ja05mY1NlcnZpY2Uo
T2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQorICAgIDogTmZjU2VydmljZShvYnNlcnZlcikKKyAgICAsIG1f
Y29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQoreworfQorCitOU0RhdGEqIE1vY2tOZmNTZXJ2
aWNlOjp0cmFuc2NlaXZlKCkKK3sKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+cGF5bG9h
ZEJhc2U2NC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIHJlc3Vs
dCA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9jb25maWd1
cmF0aW9uLm5mYy0+cGF5bG9hZEJhc2U2NFswXSBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5n
SWdub3JlVW5rbm93bkNoYXJhY3RlcnNdOworICAgIG1fY29uZmlndXJhdGlvbi5uZmMtPnBheWxv
YWRCYXNlNjQucmVtb3ZlKDApOworICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNlXTsKK30K
Kwordm9pZCBNb2NrTmZjU2VydmljZTo6cGxhdGZvcm1TdGFydERpc2NvdmVyeSgpCit7CisjaWYg
SEFWRShORUFSX0ZJRUxEKQorICAgIGlmICghIW1fY29uZmlndXJhdGlvbi5uZmMpIHsKKyAgICAg
ICAgZ2xvYmFsTmZjU2VydmljZSA9IHRoaXM7CisKKyAgICAgICAgTWV0aG9kIG1ldGhvZFRvU3dp
enpsZTEgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChnZXRORlJlYWRlclNlc3Npb25DbGFzcygp
LCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSk7CisgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRh
dGlvbihtZXRob2RUb1N3aXp6bGUxLCAoSU1QKU5GUmVhZGVyU2Vzc2lvblNldERlbGVnYXRlKTsK
KworICAgICAgICBNZXRob2QgbWV0aG9kVG9Td2l6emxlMiA9IGNsYXNzX2dldEluc3RhbmNlTWV0
aG9kKGdldE5GUmVhZGVyU2Vzc2lvbkNsYXNzKCksIEBzZWxlY3Rvcihjb25uZWN0VGFnOikpOwor
ICAgICAgICBpZiAobV9jb25maWd1cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6
Ok5vQ29ubmVjdGlvbnMpCisgICAgICAgICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0
aG9kVG9Td2l6emxlMiwgKElNUClORlJlYWRlclNlc3Npb25Db25uZWN0VGFnRmFpbCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3
aXp6bGUyLCAoSU1QKU5GUmVhZGVyU2Vzc2lvbkNvbm5lY3RUYWcpOworCisgICAgICAgIE1ldGhv
ZCBtZXRob2RUb1N3aXp6bGUzID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoZ2V0TkZSZWFkZXJT
ZXNzaW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHRyYW5zY2VpdmU6KSk7CisgICAgICAgIG1ldGhvZF9z
ZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1N3aXp6bGUzLCAoSU1QKU5GUmVhZGVyU2Vzc2lvblRy
YW5zY2VpdmUpOworCisgICAgICAgIGF1dG8gcmVhZGVyU2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9j
TkZSZWFkZXJTZXNzaW9uSW5zdGFuY2UoKSBpbml0XSk7CisgICAgICAgIHNldERyaXZlcihXVEY6
Om1ha2VVbmlxdWU8Q3RhcE5mY0RyaXZlcj4obWFrZVVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPihy
ZWFkZXJTZXNzaW9uLmdldCgpLCAqdGhpcykpKTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5kZXRlY3RUYWdzKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIExPR19FUlJPUigiTm8gbmZjIGF1dGhlbnRpY2F0b3JzIGlzIGF2YWlsYWJsZS4iKTsKKyNl
bmRpZiAvLyBIQVZFKE5FQVJfRklFTEQpCit9CisKK3ZvaWQgTW9ja05mY1NlcnZpY2U6OmRldGVj
dFRhZ3MoKSBjb25zdAoreworI2lmIEhBVkUoTkVBUl9GSUVMRCkKKyAgICBpZiAobV9jb25maWd1
cmF0aW9uLm5mYy0+ZXJyb3IgPT0gTW9ja05mYzo6RXJyb3I6Ok5vVGFncykKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbY29uZmlndXJhdGlvbiA9
IG1fY29uZmlndXJhdGlvbl0geworICAgICAgICBhdXRvIHRhZ3MgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubmZjLT5l
cnJvciA9PSBNb2NrTmZjOjpFcnJvcjo6V3JvbmdUYWdUeXBlIHx8IGNvbmZpZ3VyYXRpb24ubmZj
LT5tdWx0aXBsZVRhZ3MpCisgICAgICAgICAgICBbdGFncyBhZGRPYmplY3Q6W1tXS01vY2tORlRh
ZyBhbGxvY10gaW5pdFdpdGhUeXBlOk5GVGFnVHlwZVVua25vd25dXTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgW3RhZ3MgYWRkT2JqZWN0OltbV0tNb2NrTkZUYWcgYWxsb2NdIGluaXRXaXRo
VHlwZTpORlRhZ1R5cGVHZW5lcmljNEFdXTsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5u
ZmMtPm11bHRpcGxlVGFncykKKyAgICAgICAgICAgIFt0YWdzIGFkZE9iamVjdDpbW1dLTW9ja05G
VGFnIGFsbG9jXSBpbml0V2l0aFR5cGU6TkZUYWdUeXBlR2VuZXJpYzRBXV07CisKKyAgICAgICAg
W2dsb2JhbE5GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlIHJlYWRlclNlc3Npb246bmlsIGRpZERldGVj
dFRhZ3M6dGFncy5nZXQoKV07CisgICAgfSk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgY2Fs
bGJhY2suZ2V0KCkpOworI2VuZGlmIC8vIEhBVkUoTkVBUl9GSUVMRCkKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApp
bmRleCBmN2MzOTY5Njk1OTQxOGFiOTUwZDY3ZjQ0MzZlY2ZlM2EzY2JmZDFjLi5mNDBhN2I3YmQ4
YmUxYjdkMGIzNDI4NWJkNjY2Yzg3ZDBkY2Q3OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtNzIsOSAr
NzIsMjQgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAg
ICAgICBib29sIGNhbkRvd25ncmFkZSB7IGZhbHNlIH07CiAgICAgfTsKIAorICAgIHN0cnVjdCBO
ZmMgeworICAgICAgICBlbnVtIGNsYXNzIEVycm9yIDogdWludDhfdCB7CisgICAgICAgICAgICBT
dWNjZXNzLAorICAgICAgICAgICAgTm9UYWdzLAorICAgICAgICAgICAgV3JvbmdUYWdUeXBlLAor
ICAgICAgICAgICAgTm9Db25uZWN0aW9ucywKKyAgICAgICAgICAgIE1hbGljaW91c1BheWxvYWQK
KyAgICAgICAgfTsKKworICAgICAgICBFcnJvciBlcnJvciB7IEVycm9yOjpTdWNjZXNzIH07Cisg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIGJvb2wgbXVsdGlw
bGVUYWdzIHsgZmFsc2UgfTsKKyAgICB9OworCiAgICAgYm9vbCBzaWxlbnRGYWlsdXJlIHsgZmFs
c2UgfTsKICAgICBPcHRpb25hbDxMb2NhbD4gbG9jYWw7CiAgICAgT3B0aW9uYWw8SGlkPiBoaWQ7
CisgICAgT3B0aW9uYWw8TmZjPiBuZmM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Q3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggYTAxNTVlZDFiZjYyMGY4
MGE4YzRlODg2NjU1MWRjNDg2MzE0MGM2ZS4uMGY5OTMzMzQ5OGIyYzczMDVjMzMxYTE1OGYyMWE0
MWRhNDkwOWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdGFwQXV0aGVu
dGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCiAjaW5jbHVkZSAi
Q3RhcEhpZERyaXZlci5oIgpAQCAtMTE1LDQgKzExNSw0IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0
b3I6OnRyeURvd25ncmFkZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggMzFlODg4ODc1
YTU2ZmVmOGUwOTA4MThhMTg2YzU3MTMzNTAzY2YzYi4uYTE4ZGYwNDk0YTk3N2U5OTA1ZDRmZTNk
ZTYwODI4NmNlNDc3YjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaApA
QCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4p
ICYmIFBMQVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckdldEluZm9SZXNw
b25zZS5oPgpAQCAtNTgsNCArNTgsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwTmZjRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGY2YTc5MWNlYWQ5YmZlYzU5OWNiNmQ2OTFmMjg5ODBkYzEwMzExNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcE5mY0RyaXZlci5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDdGFwTmZjRHJpdmVyLmgiCisKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FwZHVD
b21tYW5kLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBhcGR1
OwordXNpbmcgbmFtZXNwYWNlIGZpZG87CisKK0N0YXBOZmNEcml2ZXI6OkN0YXBOZmNEcml2ZXIo
VW5pcXVlUmVmPE5mY0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKQoreworfQorCisvLyBGSVhNRSgyMDA5MzQpOiBTdXBwb3J0
IE5GQ0NUQVBfR0VUUkVTUE9OU0UKK3ZvaWQgQ3RhcE5mY0RyaXZlcjo6dHJhbnNhY3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIC8v
IEZvciBDVEFQMiwgY29tbWFuZHMgZm9sbG93OgorICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNl
Lm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGlj
YXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjbmZjLWNvbW1hbmQtZnJhbWluZwor
ICAgIGlmIChwcm90b2NvbCgpID09IFByb3RvY29sVmVyc2lvbjo6a0N0YXApIHsKKyAgICAgICAg
QXBkdUNvbW1hbmQgY29tbWFuZDsKKyAgICAgICAgY29tbWFuZC5zZXRDbGEoa0N0YXBOZmNBcGR1
Q2xhKTsKKyAgICAgICAgY29tbWFuZC5zZXRJbnMoa0N0YXBOZmNBcGR1SW5zKTsKKyAgICAgICAg
Y29tbWFuZC5zZXREYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBjb21tYW5kLnNldFJlc3Bv
bnNlTGVuZ3RoKEFwZHVDb21tYW5kOjprQXBkdU1heFJlc3BvbnNlTGVuZ3RoKTsKKworICAgICAg
ICBhdXRvIGFwZHVSZXNwb25zZSA9IEFwZHVSZXNwb25zZTo6Y3JlYXRlRnJvbU1lc3NhZ2UobV9j
b25uZWN0aW9uLT50cmFuc2FjdChjb21tYW5kLmdldEVuY29kZWRDb21tYW5kKCkpKTsKKyAgICAg
ICAgaWYgKCFhcGR1UmVzcG9uc2UpIHsKKyAgICAgICAgICAgIHJlc3BvbmRBc3luYyhXVEZNb3Zl
KGNhbGxiYWNrKSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoYXBkdVJlc3BvbnNlLT5zdGF0dXMoKSA9PSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1df
SU5TX05PVF9TVVBQT1JURUQpIHsKKyAgICAgICAgICAgIC8vIFJldHVybiBrQ3RhcDFFcnJJbnZh
bGlkQ29tbWFuZCBpbnN0ZWFkIG9mIGFuIGVtcHR5IHJlc3BvbnNlIHRvIHNpZ25hbCBGaWRvU2Vy
dmljZSB0byBjcmVhdGUgYSBVMkYgYXV0aGVudGljYXRvcgorICAgICAgICAgICAgLy8gZm9yIHRo
ZSBnZXRJbmZvIHN0YWdlLgorICAgICAgICAgICAgcmVzcG9uZEFzeW5jKFdURk1vdmUoY2FsbGJh
Y2spLCB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFw
MUVyckludmFsaWRDb21tYW5kKSB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoYXBkdVJlc3BvbnNlLT5zdGF0dXMoKSAhPSBBcGR1UmVzcG9uc2U6OlN0YXR1
czo6U1dfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHJlc3BvbmRBc3luYyhXVEZNb3ZlKGNhbGxi
YWNrKSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
c3BvbmRBc3luYyhXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShhcGR1UmVzcG9uc2UtPmRhdGEo
KSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRm9yIFUyRiwgVTJmQXV0aGVu
dGljYXRvciB3b3VsZCBoYW5kbGUgdGhlIEFQRFUgZW5jb2RpbmcuCisgICAgLy8gaHR0cHM6Ly9m
aWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdTJmLXYxLjItcHMtMjAxNzA0MTEvZmlkby11MmYt
bmZjLXByb3RvY29sLXYxLjItcHMtMjAxNzA0MTEuaHRtbCNmcmFtaW5nCisgICAgY2FsbGJhY2so
bV9jb25uZWN0aW9uLT50cmFuc2FjdChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKy8vIFJldHVybiB0
aGUgcmVzcG9uc2UgYXN5bmMgdG8gbWF0Y2ggdGhlIEhJRCBiZWhhdmlvdXIsIHN1Y2ggdGhhdCBu
ZmMgY291bGQgZml0IGludG8gdGhlIGN1cnJlbnQgaW5mcmEuCit2b2lkIEN0YXBOZmNEcml2ZXI6
OnJlc3BvbmRBc3luYyhSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZlY3Rvcjx1aW50OF90
PiYmIHJlc3BvbnNlKSBjb25zdAoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICB9
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBOZmNEcml2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcE5mY0RyaXZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU2ZDEyOWU3NGU0ODExMGViN2M4ZDBhNTljZGYyNDQ3NGZhMzA2MzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBOZmNEcml2ZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBIQVZFKE5FQVJfRklFTEQpCisKKyNpbmNs
dWRlICJDdGFwRHJpdmVyLmgiCisjaW5jbHVkZSAiTmZjQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyB0aGUgQ1RBUCBORkMgcHJvdG9jb2w6CisvLyBodHRwczovL2ZpZG9hbGxp
YW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTkwMTMwL2ZpZG8tY2xpZW50LXRvLWF1dGhl
bnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE5MDEzMC5odG1sI25mYworY2xhc3MgQ3RhcE5m
Y0RyaXZlciA6IHB1YmxpYyBDdGFwRHJpdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDdGFw
TmZjRHJpdmVyKFVuaXF1ZVJlZjxOZmNDb25uZWN0aW9uPiYmKTsKKworICAgIHZvaWQgdHJhbnNh
Y3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKSBmaW5hbDsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHJlc3BvbmRBc3luYyhSZXNwb25zZUNhbGxiYWNrJiYsIFZlY3Rv
cjx1aW50OF90PiYmIHJlc3BvbnNlKSBjb25zdDsKKworICAgIFVuaXF1ZVJlZjxOZmNDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIEhBVkUoTkVBUl9GSUVMRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRv
U2VydmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWExNGVlMDVjYzg3YzU3ZDAzNTEyZWIyYzhlZjM2ZDVj
OTFmMjIyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb1NlcnZpY2UuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlkb1NlcnZpY2UuaCIKKwor
I2lmIEVOQUJMRShXRUJfQVVUSE4pCisKKyNpbmNsdWRlICJDdGFwQXV0aGVudGljYXRvci5oIgor
I2luY2x1ZGUgIkN0YXBEcml2ZXIuaCIKKyNpbmNsdWRlICJVMmZBdXRoZW50aWNhdG9yLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0Nv
bnN0YW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IGZpZG87CisKK0ZpZG9TZXJ2aWNlOjpGaWRvU2VydmljZShPYnNlcnZlciYgb2JzZXJ2ZXIpCisg
ICAgOiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZShvYnNlcnZlcikKK3sKK30KKwordm9p
ZCBGaWRvU2VydmljZTo6Z2V0SW5mbyhzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBkcml2
ZXIpCit7CisgICAgLy8gR2V0IGF1dGhlbnRpY2F0b3IgaW5mbyBmcm9tIHRoZSBkZXZpY2UuCisg
ICAgZHJpdmVyLT50cmFuc2FjdChlbmNvZGVFbXB0eUF1dGhlbnRpY2F0b3JSZXF1ZXN0KEN0YXBS
ZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRJbmZvKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCB3ZWFrRHJpdmVyID0gbWFrZVdlYWtQdHIoKmRyaXZlcildIChWZWN0b3I8
dWludDhfdD4mJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUFmdGVyR2V0SW5mbyhXVEZNb3ZlKHdlYWtEcml2ZXIp
LCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgfSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Ry
aXZlcnMuYWRkKFdURk1vdmUoZHJpdmVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBGaWRvU2VydmljZTo6Y29udGludWVB
ZnRlckdldEluZm8oV2Vha1B0cjxDdGFwRHJpdmVyPiYmIHdlYWtEcml2ZXIsIFZlY3Rvcjx1aW50
OF90PiYmIHJlc3BvbnNlKQoreworICAgIGlmICghd2Vha0RyaXZlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+IGRyaXZlciA9IG1fZHJpdmVycy50
YWtlKHdlYWtEcml2ZXIuZ2V0KCkpOworICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8
IHJlc3BvbnNlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpbmZvID0g
cmVhZENUQVBHZXRJbmZvUmVzcG9uc2UocmVzcG9uc2UpOworICAgIGlmIChpbmZvICYmIGluZm8t
PnZlcnNpb25zKCkuZmluZChQcm90b2NvbFZlcnNpb246OmtDdGFwKSAhPSBpbmZvLT52ZXJzaW9u
cygpLmVuZCgpKSB7CisgICAgICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChDdGFw
QXV0aGVudGljYXRvcjo6Y3JlYXRlKFdURk1vdmUoZHJpdmVyKSwgV1RGTW92ZSgqaW5mbykpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEg
Y3RhcCBnZXQgaW5mbyByZXNwb25zZS4iKTsKKyAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3Rv
Y29sVmVyc2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUy
ZkF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRvU2Vydmlj
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9GaWRv
U2VydmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwOWM5ZDg2ZmE1MGQ4NGZjZWY5YTEzYzBlYjdhMDlhMTUx
ZDg1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0ZpZG9TZXJ2aWNlLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKworI2luY2x1ZGUgIkF1
dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlLmgiCisjaW5jbHVkZSAiQ3RhcERyaXZlci5oIgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBGaWRvU2VydmljZSA6IHB1YmxpYyBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0U2VydmljZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRmlkb1NlcnZp
Y2UoT2JzZXJ2ZXImKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZ2V0SW5mbyhzdGQ6OnVuaXF1
ZV9wdHI8Q3RhcERyaXZlcj4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb250aW51ZUFmdGVy
R2V0SW5mbyhXZWFrUHRyPEN0YXBEcml2ZXI+JiYsIFZlY3Rvcjx1aW50OF90PiYmIGluZm8pOwor
CisgICAgLy8gS2VlcGluZyBkcml2ZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgZ2V0dGluZyBpbmZv
IGZyb20gZGV2aWNlcy4KKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDdGFwRHJpdmVyPj4g
bV9kcml2ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAKaW5kZXgg
YTU4NTY3MmZkMmM5YzMxY2VlYzQzNjE2ZmM3MDU3ODU1NzVhYTU3Ny4uNGQxMmE5NjVkN2YwMTlh
M2E1M2I5ZmQyNmVjNmNhM2ZlMjY0YjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRp
Y2F0b3IuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVTJmQXV0aGVudGljYXRvci5oIgogCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZP
Uk0oTUFDKQorI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRlICJDdGFwRHJpdmVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KQEAgLTIzOCw0ICsyMzgsNCBAQCB2
b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAppbmRleCA5YTQ3NzM2
ODZmNjA3YzBiYTQwZGNjYzdmNWRmODExMDVjNTU1OTljLi5kOTA1NWNkMDU5MDE0MTVhYWQ1M2Qy
MTllYTEzZjljZWY0NjdhOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuaApA
QCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJfQVVUSE4p
ICYmIFBMQVRGT1JNKE1BQykKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03OSw0ICs3OSw0IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAz
MWI3ZDgzMGQzMDdmYWQ4NWMyNmQ1OGMwZWY2YTcyYjIzNTg5MzJmLi4yODMwMzhkMzRlZTM4NzRk
YzQ2Mzk5NjAxY2IwOTQ5Yjc2N2NhZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAi
VXNlckRhdGEuaCIKKyNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNz
YWdlcy5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDA0YTE4YzM0YmZlMmE5YWFiOTJlYWUwNmI4NzJlNDliYWE5NDg2NzkuLmVlYjAwNjYwMTczYzQ5
N2NkMWEyZTU1MDc4YjkxOGY4MWYxYWZmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNSw2ICsxMDM1LDEwIEBACiAJCTUzQkE0
N0QxMURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4
Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0NGQkJDODIyMjREMUI1MDAy
NjY1NDYgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0NGQkJDNzIyMjREMUIwMDAyNjY1NDYgLyogVGV4dENo
ZWNrZXJDb21wbGV0aW9uLmggKi87IH07CiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBT
ZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICov
OyB9OworCQk1NzBEQUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQUMyMzAyNkY1QzAw
RThGQzA0IC8qIE5mY1NlcnZpY2UuaCAqLzsgfTsKKwkJNTcwREFBQzIyMzAzNzMwMzAwRThGQzA0
IC8qIE5mY0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MERBQUMwMjMwMzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggKi87
IH07CisJCTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVn
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBE
QUFDNDIzMDM3RjdFMDBFOEZDMDQgLyogV0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5oICovOyB9
OworCQk1NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREFBQzgyMzAzODVGRDAw
RThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCAqLzsgfTsKIAkJNTcyRkQ0NDMyMjI2NUNFMjAwQTFF
Q0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8q
IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovOyB9OwogCQk1NzU5N0VCOTIxODEx
RDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWRE
cml2ZXIuaCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50
aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRpY2F0b3IuaCAqLzsgfTsKQEAg
LTEwNDMsNiArMTA0NywxMSBAQAogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNh
dGlvblNvZnRMaW5rLmggKi87IH07CiAJCTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5oICovOyB9OwogCQk1
N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlv
blhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdCNEI0NUUyMEI1MDRBQjAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVu
dGljYXRpb25YUENDb25zdGFudHMuaCAqLzsgfTsKKwkJNTdCODI2NDEyMzA0RUIzRTAwQjcyRUIw
IC8qIE5lYXJGaWVsZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovOyB9
OworCQk1N0I4MjY0NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QjgyNjQyMjMwNEYx
NDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovOyB9OworCQk1N0I4MjY0NTIzMDRG
MTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I4MjY0MzIzMDRGMTQwMDBCNzJFQjAgLyogTmVh
ckZpZWxkU29mdExpbmsubW0gKi87IH07CisJCTU3QjgyNjQ4MjMwNTBDNTEwMEI3MkVCMCAvKiBG
aWRvU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi87IH07CisJCTU3
QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCODI2NEEyMzA2MDNDMTAwQjcyRUIw
IC8qIE1vY2tOZmNTZXJ2aWNlLmggKi87IH07CiAJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAv
KiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0JCRUE2QzIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeS5oICovOyB9OwogCQk1N0RDRUQ2RTIxNDJFRTVFMDAxNkI4NDcgLyog
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZCMjE0MkVBRTIwMDE2
Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JNZXNzYWdlcy5oICovOyB9OwpAQCAtMzQ3Myw2ICszNDgyLDE1IEBACiAJCTU3MEFCOTAw
MjBCMjUxNzQwMEI4QkU4NyAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Q29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MEFCOTAzMjBCMjU0MUMwMEI4QkU4
NyAvKiBTZWNLZXlQcm94eVN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2VjS2V5UHJveHlTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcwQjczQ0YyMzAyMzZERDAwRkFFQzUzIC8qIEN0YXBEcml2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3RhcERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFBQzIz
MDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZmNTZXJ2aWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMw
NCAvKiBOZmNTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmZjU2VydmljZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQjAyMzAyNzNEMjAwRThGQzA0IC8q
IE5lYXJGaWVsZC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IE5lYXJGaWVsZC5mcmFtZXdv
cms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9OZWFyRmllbGQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNTcwREFBQzAyMzAzNzMwMzAwRThG
QzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmZjQ29ubmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQUFDMTIzMDM3MzAzMDBFOEZDMDQgLyog
TmZjQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5mY0Nvbm5lY3Rpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAv
KiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTkZSZWFkZXJT
ZXNzaW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcwREFBQzUy
MzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dp
bmRvd09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzUwNzVBNzIwQUI3NjM2MDA2
OTNFQTkgLyogV2ViQ3JlZGVudGlhbE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNy
ZWRlbnRpYWxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3NTBGMzJBMjAz
MkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0xvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gU0RLUk9PVDsgfTsKQEAgLTM0OTcsNiArMzUxNSwxMyBAQAogCQk1N0FDOEY0RjIxN0ZFRUQ5
MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpZENv
bm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3QjRCNDVEMjBCNTA0
QUIwMEQ0QUQ3OSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I0QjQ1RTIwQjUwNEFCMDBENEFENzkg
LyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9u
WFBDQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQwMjMw
NEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmVhckZpZWxk
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQyMjMwNEYxNDAwMEI3
MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZWFyRmllbGRTb2Z0
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0MzIzMDRGMTQwMDBC
NzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZWFy
RmllbGRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdCODI2NDYy
MzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpZG9TZXJ2
aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3
MkVCMCAvKiBGaWRvU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWRvU2VydmljZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3QjgyNjRBMjMwNjAzQzEwMEI3MkVC
MCAvKiBNb2NrTmZjU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTmZjU2VydmljZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyog
TW9ja05mY1NlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrTmZjU2VydmljZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCQkVBNkMyMkJDMEJGRTAwMjczOTk1
IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRUQ2
QTIxNDJFQUUyMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNTdEQ0VENkIyMTQyRUFFMjAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwpAQCAtNjE5Myw2ICs2MjE4LDcgQEAKIAkJCQlBMUZCNjgyNjFGNkU1MUMxMDBDNDNGOUYgLyog
Q3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oICovLAogCQkJCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0
NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIw
QyAvKiBEZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8sCisJCQkJNTdCODI2NDAyMzA0RUIzRTAwQjcy
RUIwIC8qIE5lYXJGaWVsZFNQSS5oICovLAogCQkJCTM3NTRENTQ0MUIzQTI5RkQwMDNBNEM3RiAv
KiBOU0ludm9jYXRpb25TUEkuaCAqLywKIAkJCQkzN0I0N0UyQzFENjREQjc2MDA1RjRFRkYgLyog
b2JqY1NQSS5oICovLAogCQkJCTBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3Np
bmdTUEkuaCAqLywKQEAgLTY5NTksNiArNjk4NSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhl
bnRpY2F0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyog
TmVhckZpZWxkLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02OTcxLDYgKzY5OTgsMTAgQEAKIAkJCQk1NzBC
NzNDRjIzMDIzNkREMDBGQUVDNTMgLyogQ3RhcERyaXZlci5oICovLAogCQkJCTU3NTk3RUMwMjE4
MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLywKIAkJCQk1NzU5N0VCNzIxODEx
RDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oICovLAorCQkJCTU3MERBQUM5MjMwMzg1RkQw
MEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLywKKwkJCQk1NzBEQUFDODIzMDM4NUZEMDBF
OEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovLAorCQkJCTU3QjgyNjQ3MjMwNTBDNTEwMEI3MkVC
MCAvKiBGaWRvU2VydmljZS5jcHAgKi8sCisJCQkJNTdCODI2NDYyMzA1MEM1MTAwQjcyRUIwIC8q
IEZpZG9TZXJ2aWNlLmggKi8sCiAJCQkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1
dGhlbnRpY2F0b3IuY3BwICovLAogCQkJCTU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZB
dXRoZW50aWNhdG9yLmggKi8sCiAJCQkpOwpAQCAtNzAzMiw2ICs3MDYzLDE0IEBACiAJCQkJNTdE
Q0VEQTgyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5tbSAqLywKIAkJCQk1N0RD
RUQ5QTIxNDhCMDgzMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggKi8sCiAJCQkJNTdEQ0VEQTAy
MTQ4RkEwRjAwMTZCODQ3IC8qIExvY2FsU2VydmljZS5tbSAqLywKKwkJCQk1N0I4MjY0MjIzMDRG
MTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCAqLywKKwkJCQk1N0I4MjY0MzIzMDRG
MTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gKi8sCisJCQkJNTcwREFBQzAyMzAz
NzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk1NzBEQUFDMTIzMDM3MzAz
MDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5tbSAqLywKKwkJCQk1NzBEQUFBQzIzMDI2RjVDMDBF
OEZDMDQgLyogTmZjU2VydmljZS5oICovLAorCQkJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAv
KiBOZmNTZXJ2aWNlLm1tICovLAorCQkJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05G
UmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8sCisJCQkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0
IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IENv
Y29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcwNDksNiArNzA4OCw4IEBACiAJ
CQkJNTdEQ0VEQzYyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8s
CiAJCQkJNTdEQ0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLywK
IAkJCQk1N0RDRURDMjIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5tbSAqLywK
KwkJCQk1N0I4MjY0QTIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCAqLywKKwkJ
CQk1N0I4MjY0QjIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UubW0gKi8sCiAJCQkJ
NTdEQ0VEQkUyMTRDQTAxQjAwMTZCODQ3IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTW9jazsKQEAgLTkzNTUsNiArOTM5Niw3IEBA
CiAJCQkJQTFGQjY4MjcxRjZFNTFDMTAwQzQzRjlGIC8qIENyYXNoUmVwb3J0ZXJDbGllbnRTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0
aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0
IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUNBMjMwMzg1RkQw
MEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFD
NTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTkzODYsNiArOTQyOCw3IEBACiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVB
IC8qIEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFE
OCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIx
NDk2QjUyNjAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTdCODI2NDgyMzA1MEM1MTAwQjcyRUIwIC8qIEZpZG9TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwMEI5NjYxQTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNTlDNEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDc0LDYgKzk1MTcsNyBAQAogCQkJ
CTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcg
LyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdCODI2NEMyMzA2MDND
MTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURC
RjIxNEYwRENGMDAxNkI4NDcgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdl
Ykdlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDYgKzk1MjUsOCBAQAogCQkJ
CTFBRENCODZCMTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTdGRDMxODAyMkIzNTE1ODAwOEQwRThCIC8qIE5hdmlnYXRpb25TT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUJDM0RGNjE4OTlFNDM3
MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0I4MjY0
NDIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU3QjgyNjQxMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNkZCQTJBMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5j
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RkJEMjgxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNj
YXBlUGx1Z2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQg
LyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTUyNiw2ICs5NTcy
LDggQEAKIAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBOZXR3b3JrU2Vz
c2lvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVCOTIyNTcwNDZGMDBENkY5N0Ug
LyogTmV0d29ya1NvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERBQUMyMjMw
MzczMDMwMEU4RkMwNCAvKiBOZmNDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBE
QUFBRTIzMDI2RjVDMDBFOEZDMDQgLyogTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzFBMkVDNTYxNDg5OUMwOTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMxMjYxRjE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEy
RUM1MjE0ODk5ODE5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNTQsNiArMTAyMDIsNyBAQAogCQkJCTFB
MUIwRUI4MThBNDI0Q0QwMDM4NDgxQSAvKiBXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUExMzIxMjE5MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNBNjVERjFBN0MzQTdE
MDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU3MERBQUM2MjMwMzdGN0YwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmlj
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3NDNEQjEwMEE4RkJCMiAvKiBX
S05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzc0MTQ4RDU5
Q0EwMDgxMEQ3MSAvKiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTExMTM4LDYgKzExMTg3LDcgQEAKIAkJCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkz
RkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgy
MjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEOTJBNzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTdCODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDMyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAwMDEyOEFGRCAv
KiBOZXRzY2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5NjIxMkI2QURB
MDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTY2N2M4NmIy
YzQ1NzBlMjBlNDdmY2M1NDUzNGUzN2QwYTc1Mjk1Zi4uODI2NjU3MGZkMGU4ZWMxM2U5MTEwNTA5
MTJhYzE0NDNhMGY4NzQ2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIwICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0IE5GQyBhdXRo
ZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0MjE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgIFNl
dHVwIE5GQyBtb2NrIHRlc3RpbmcgY29uZmlndXJhdGlvbi4KKwogMjAxOS0wOC0yMCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVzdWx0cy53ZWJraXQu
b3JnOiBBZGQgVG9vbFRpcHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGZhMWJjMWRkYmI3MTZmN2IzN2JkMDc3N2Rh
MDAxNmRiZTJlYmIwNGMuLjA5ZGI1MWZkODE2MjFhODViMDZlOGY4MzMwMzQwZGI1Nzg3ZjA4YTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtMjcxNiw2ICsyNzE2LDcxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3VyYXRpb25W
CiAgICAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5
Q3JlYXRlKHJhd0hpZEtleXMuZGF0YSgpLCByYXdIaWRWYWx1ZXMuZGF0YSgpLCByYXdIaWRLZXlz
LnNpemUoKSkpKTsKICAgICB9CiAKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbmZjUHJv
cGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmZjIikpOwor
ICAgIEpTVmFsdWVSZWYgbmZjVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNv
bmZpZ3VyYXRpb24sIG5mY1Byb3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgaWYgKCFKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwgbmZjVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQs
IG5mY1ZhbHVlKSkgeworICAgICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBuZmNW
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTT2JqZWN0UmVmIG5mYyA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBuZmNWYWx1ZSwgMCk7CisKKyAgICAgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IGVycm9yUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZXJyb3IiKSk7CisgICAgICAgIEpTVmFsdWVSZWYgZXJyb3JWYWx1ZSA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBlcnJvclByb3BlcnR5TmFtZS5nZXQo
KSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIGVycm9yVmFsdWUp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4+IG5mY0tleXM7CisgICAgICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+
PiBuZmNWYWx1ZXM7CisgICAgICAgIG5mY0tleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpKTsKKyAgICAgICAgbmZjVmFsdWVzLmFwcGVuZCh0
b1dLKGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZXJyb3JWYWx1ZSwgMCkpLmdl
dCgpKSk7CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRCYXNlNjRQ
cm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwYXlsb2Fk
QmFzZTY0IikpOworICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lLmdl
dCgpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgcGF5bG9h
ZEJhc2U2NFZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFs
dWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBheWxvYWRC
YXNlNjRWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBKU09i
amVjdFJlZiBwYXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBheWxvYWRC
YXNlNjRWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5ndGhQcm9w
ZXJ0eSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0
R2V0UHJvcGVydHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHkuZ2V0KCks
IG51bGxwdHIpOworICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgcGF5
bG9hZEJhc2U2NExlbmd0aFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGF1dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRl
KCkpOworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVl
LCBudWxscHRyKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRC
YXNlNjRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJh
c2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5bG9hZEJh
c2U2NCwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmco
Y29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2NHMuZ2V0
KCksIHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2FkQmFzZTY0
VmFsdWUsIDApKS5nZXQoKSkuZ2V0KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBu
ZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXls
b2FkQmFzZTY0IikpKTsKKyAgICAgICAgICAgIG5mY1ZhbHVlcy5hcHBlbmQocGF5bG9hZEJhc2U2
NHMpOworICAgICAgICB9CisKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG11bHRp
cGxlVGFnc1Byb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
Im11bHRpcGxlVGFncyIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBtdWx0aXBsZVRhZ3NWYWx1ZSA9
IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbmZjLCBtdWx0aXBsZVRhZ3NQcm9wZXJ0eU5h
bWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBt
dWx0aXBsZVRhZ3NWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgbXVsdGlwbGVUYWdz
VmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgbXVs
dGlwbGVUYWdzVmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJv
b2wgbXVsdGlwbGVUYWdzID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBtdWx0aXBsZVRhZ3NW
YWx1ZSk7CisgICAgICAgICAgICBuZmNLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJNdWx0aXBsZVRhZ3MiKSkpOworICAgICAgICAgICAgbmZjVmFsdWVz
LmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtdWx0aXBsZVRhZ3MpKS5nZXQoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd05mY0tleXM7CisgICAg
ICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd05mY1ZhbHVlczsKKyAgICAgICAgcmF3TmZjS2V5cy5y
ZXNpemUobmZjS2V5cy5zaXplKCkpOworICAgICAgICByYXdOZmNWYWx1ZXMucmVzaXplKG5mY1Zh
bHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5mY0tleXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHJhd05mY0tleXNbaV0gPSBuZmNLZXlzW2ldLmdldCgp
OworICAgICAgICAgICAgcmF3TmZjVmFsdWVzW2ldID0gbmZjVmFsdWVzW2ldLmdldCgpOworICAg
ICAgICB9CisKKyAgICAgICAgY29uZmlndXJhdGlvbktleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk5mYyIpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb25W
YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd05mY0tleXMuZGF0YSgp
LCByYXdOZmNWYWx1ZXMuZGF0YSgpLCByYXdOZmNLZXlzLnNpemUoKSkpKTsKKyAgICB9CisKICAg
ICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0NvbmZpZ3VyYXRpb25LZXlzOwogICAgIFZlY3RvcjxX
S1R5cGVSZWY+IHJhd0NvbmZpZ3VyYXRpb25WYWx1ZXM7CiAgICAgcmF3Q29uZmlndXJhdGlvbktl
eXMucmVzaXplKGNvbmZpZ3VyYXRpb25LZXlzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDY5YTRlYjM2MWY3
Y2I0OWJjZDFjODYxZjJmYWIzNjBiYzIzYTI4OS4uZWU0MGRlZTcxODhmYWMzZGJkNWQyYjdhOGUw
YjJjMzRjMDc0YzA5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTA4LTIwICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBwb3J0
IE5GQyBhdXRoZW50aWNhdG9ycyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzU0
MjE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1uZmMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRo
ZSAibG9jYWwiIGtleXdvcmQgd2l0aCAiaGlkIi4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nl
c3MtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICBTa2lwIE5GQyB0ZXN0cyBmb3Igc2ltdWxhdG9ycy4KKwogMjAxOS0wOC0yMCAgUnVzc2Vs
bCBFcHN0ZWluICA8cmVwc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0aW5nIEV4cGVj
dGF0aW9ucyBmb3IgTXVsdGlwbGUgTmV3bHkgUGFzc2luZyBUZXN0cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5o
dHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQwNWIzY2RjMjM3MDI0N2U2ZWM4MDhhYWM0
NTQwNTA2ODczN2VmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIENUQVAgTkZDIHdpdGggZW1wdHkgYXBkdSByZXNwb25zZSBpbiBhIG1vY2sgbmZj
IGF1dGhlbnRpY2F0b3IuIAorUEFTUyBDVEFQIE5GQyB3aXRoIHdyb25nIGRhdGEgZXJyb3IgaW4g
YSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVjMGIxYjhhZTQ2ODg3ZjVmYmE1YjEzM2I4ODJmNGU2NDlkOGFkMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBz
Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhl
bnRpY2F0aW9uIEFQSTogQ1RBUCBORkMgZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKyAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxl
LmNvbSIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIs
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICB9
CisgICAgfTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQsICIiXSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiQ1RBUCBORkMgd2l0aCBlbXB0eSBhcGR1IHJlc3BvbnNlIGluIGEgbW9j
ayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdE5mY1UyZlZlcnNpb25CYXNlNjQs
IHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsK
KyAgICB9LCAiQ1RBUCBORkMgd2l0aCB3cm9uZyBkYXRhIGVycm9yIGluIGEgbW9jayBuZmMgYXV0
aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNzI1MDk4YWY3MzUyMDFhMWE3ODcyNjFlMDA5YjFlYmVlZWZjNzJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBA
CisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGlu
IGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbm8gdGFncyBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHRhZyB0eXBlIGlu
IGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9y
LiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBudWxsIHZlcnNp
b24gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9uZyB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGlj
YXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODI0ODU3MzNjNWFmMzcyMzgzMjFiNmYyNGIy
MjAzNGRmZWQ0YjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1s
CkBAIC0wLDAgKzEsMTQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGlj
YXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBmYWlsdXJlIGNhc2Vz
IHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIERlZmF1bHQgbW9jayBjb25m
aWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGl0IGlmIHRoZXkgbmVlZCBkaWZmZXJl
bnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IG5mYzogeyBl
cnJvcjogIm5vLXRhZ3MiIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBp
ZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHVi
S2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJwbGF0Zm9ybSIgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9w
ZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAg
ICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0gewor
ICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBs
ZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBubyB0YWdzIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsK
KworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2hu
IEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJ3cm9uZy10YWctdHlwZSIgfSB9KTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB3cm9uZyB0YWcgdHlwZSBp
biBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4
YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAi
bm8tY29ubmVjdGlvbnMiIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbm8gY29ubmVjdGlvbnMgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0
OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9h
ZEJhc2U2NDogWyBdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9w
ZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggbnVsbCB2ZXJzaW9uIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsK
KworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2hu
IEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNl
NjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHdyb25nIHZlcnNpb24gaW4gYSBtb2Nr
IG5mYyBhdXRoZW50aWNhdG9yLiIpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggMzEyZGU5MzBlNGRiNjYwMTI3Mzc3Zjk2OGNlYWNmODBlNTFhZGZhNi4uODA3MjUx
Zjg2OTVkYjgxMmNlNDY3NDc1MjlhZjQxODA3YjczYWFhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LWhpZC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGlj
YXRvclNlbGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVx
dWlyZVJlc2lkZW50S2V5IHsgZmFsc2UgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4g
Ci1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNh
dGlvbiB7ICdwcmVmZXJyZWQnIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVzZXJWZXJpZmljYXRpb24g
eyAnZGlzY291cmFnZWQnIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAotUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0
b3JTZWxlY3Rpb24geyAnY3Jvc3MtcGxhdGZvcm0nIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZXF1aXJl
UmVzaWRlbnRLZXkgeyBmYWxzZSB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7
ICdwcmVmZXJyZWQnIH0gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ2Rpc2Nv
dXJhZ2VkJyB9IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHR3byBjb25zZWN1dGl2ZSByZXF1ZXN0cy4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0
IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBh
dHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCBhMTQ3ZWYzN2Q1MzkzZGViOTY5
ODY1ZjQwYjFlZWM3NWU5NWM3YTViLi5mNTI5Njg3NDhiMjBkMWJiZTBiOWYzNmM0Yjg0ZjBiNGU4
YWNmZjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sCkBAIC05LDQxICs5LDYgQEAKICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSB9
IH0pOwogCi0gICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgaXNOb25lQXR0ZXN0
YXRpb24gPSB0cnVlKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgcmVzcG9uc2UKLSAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2
NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOwotICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFy
c2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5
dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3si
dHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoi
aHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7Ci0gICAgICAgIGFzc2VydF9ub3RfZXhpc3RzKGNy
ZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKLQotICAgICAg
ICAvLyBDaGVjayBhdHRlc3RhdGlvbgotICAgICAgICBjb25zdCBhdHRlc3RhdGlvbk9iamVjdCA9
IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QpOwotICAg
ICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0
dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJwYWNrZWQiKTsKLSAgICAgICAg
Ly8gQ2hlY2sgYXV0aERhdGEKLSAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0
YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0
ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0NmNjN2ZiOTY3OWQ1NWIyZGI5MDky
ZTFjOGQ5ZTVlMWQwMmI3NTgwZjBiNDgxMmM3NzA5NjJlMWU0OGY1YWQ4Iik7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY1KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhh
dXRoRGF0YS5jb3VudGVyLCA3OCk7Ci0gICAgICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQp
LCAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCks
ICJmOGEwMTFmMzhjMGE0ZDE1ODAwNjE3MTExZjllZGM3ZCIpOwotICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGF1dGhEYXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRD
cmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgLy8gQ2hlY2sgcGFja2VkIGF0dGVzdGF0aW9u
Ci0gICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkp
OwotICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCi0gICAgICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC5h
bGcsIC03KTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0
U3RtdC54NWMubGVuZ3RoLCAxKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAgICAgIHB1YmxpY0tl
eTogewpAQCAtNjIsOSArMjcsOSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0g
ICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrQ3Rh
cE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKQEAgLTg1LDkgKzUwLDkgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
ewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICBjaGVj
a0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7Ci0gICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVudGljYXRvclNl
bGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRo
ZW50aWNhdG9yU2VsZWN0aW9uIHsgJ2Nyb3NzLXBsYXRmb3JtJyB9IGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKQEAgLTEwOCw5ICs3Myw5IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAg
Y2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwot
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlcXVpcmVSZXNp
ZGVudEtleSB7IGZhbHNlIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVxdWlyZVJlc2lkZW50
S2V5IHsgZmFsc2UgfSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xMzEsOSArOTYs
OSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jl
c3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVz
dWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcgfSBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ3ByZWZlcnJlZCcgfSBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xNTQsOSArMTE5LDkgQEAKICAgICAgICAgfTsK
IAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7
CisgICAgICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsK
ICAgICAgICAgfSk7Ci0gICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggdXNlclZlcmlmaWNhdGlvbiB7ICdkaXNjb3VyYWdlZCcgfSBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgJ2Rpc2NvdXJhZ2VkJyB9IGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIAogICAgIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKQEAgLTE3Nyw5ICsxNDIsOSBAQAogICAgICAgICB9OwogCiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAg
IGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
LSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaXhlZCBvcHRp
b25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1peGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25z
dCBvcHRpb25zID0gewpAQCAtMjAwLDcgKzE2NSw3IEBACiAKICAgICAgICAgcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7
CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRlbnRpYWwpOwog
ICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCB0d28gY29uc2VjdXRpdmUgcmVxdWVzdHMuIik7CiAKQEAgLTIyMyw5ICsxODgsOSBAQAogICAg
ICAgICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVk
ZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50aWFsUmVzdWx0KGNyZWRl
bnRpYWwpOwogICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9y
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUg
YXR0ZXN0YXRpb24gaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlz
ZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewpAQCAtMjQ2LDkgKzIxMSw5
IEBACiAgICAgICAgIH07CiAKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVz
dWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKKyAgICAgICAgICAgIGNoZWNrQ3RhcE1ha2VDcmVkZW50
aWFsUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKICAgICAgICAgfSk7Ci0gICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CkBAIC0yNjksNyArMjM0LDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4gewotICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOworICAgICAg
ICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwog
ICAgICAgICB9KTsKLSAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsK
KyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBh
dHRlc3RhdGlvbiBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5m
Yy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY1ZTgzMTJlMDJmM2JiZjk1OGEyOGI0
MzcxZGVkYmVlMzA1ZjM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1uZmMuaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYXV0aGVu
dGljYXRvclNlbGVjdGlvbiB7ICdjcm9zcy1wbGF0Zm9ybScgfSBpbiBhIG1vY2sgbmZjIGF1dGhl
bnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG11
bHRpcGxlIHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBVMkYgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNh
dG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LW5mYy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMjJlNTQ0ZDRhYjk1MDk5NTI1N2ZhNmI5ZTBl
NWYwMmM4NjE1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwK
QEAgLTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNh
dGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHN1Y2Nlc3MgY2FzZXMg
d2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNl
cy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRl
c3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
LgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVz
cG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNzYWdlQXBkdUJhc2U2NF0gfSB9KTsKKwor
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQi
LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxl
QmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwu
cGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6
IDEwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAg
ICAgICAgICBjaGVja0N0YXBNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAg
ICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWlu
aW11bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21p
c2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwK
KyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1U
SXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJjcm9zcy1wbGF0Zm9ybSIgfSwKKyAg
ICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24geyAnY3Jvc3MtcGxhdGZv
cm0nIH0gaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0
KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxv
Y2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
bmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNp
b25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0Q3JlYXRpb25NZXNz
YWdlQXBkdUJhc2U2NF0sIG11bHRpcGxlVGFnczogdHJ1ZSB9IH0pOworICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
eworICAgICAgICAgICAgY2hlY2tDdGFwTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7
CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIG11bHRpcGxlIHRhZ3MgaW4gYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
TmZjVTJmVmVyc2lvbkJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
eworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggVTJGIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1s
CmluZGV4IDhmYTFjM2M0OGZhOTVjOWMzYjJiMDg4ODYxY2I4ODllMGZjMWNjNjkuLmYxNmU1MDBk
ZmE3NjZiMjdjZjVjYzU3Y2I3ZDk0ZGQ3NDIyODJhNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11
MmYuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTUsMzYgKzUs
NiBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBmdW5j
dGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCi0g
ICAgewotICAgICAgICAvLyBDaGVjayByZXNwb25zZQotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RV
MmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFs
LnR5cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVp
bnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVu
dGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5n
KGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4u
Y3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9z
dDo5NDQzIn0nKTsKLSAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMoY3JlZGVudGlhbC5nZXRDbGll
bnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwotCi0gICAgICAgIC8vIENoZWNrIGF0dGVz
dGF0aW9uCi0gICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3Jl
ZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAgIGlmIChpc05vbmVB
dHRlc3RhdGlvbikKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
Zm10LCAibm9uZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0
dGVzdGF0aW9uT2JqZWN0LmZtdCwgImZpZG8tdTJmIik7Ci0gICAgICAgIC8vIENoZWNrIGF1dGhE
YXRhCi0gICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25P
YmplY3QuYXV0aERhdGEpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmco
YXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0
YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1
dGhEYXRhLmZsYWdzLCA2NSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRl
ciwgMCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5h
YWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKLSAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhhdXRoRGF0YS5jcmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0
ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIC8vIENoZWNrIGZpZG8tdTJmIGF0
dGVzdGF0aW9uCi0gICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1
YmxpY0tleSkpOwotICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCi0gICAgICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0
dFN0bXQueDVjLmxlbmd0aCwgMSk7Ci0gICAgfQotCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewog
ICAgICAgICBjb25zdCBvcHRpb25zID0gewogICAgICAgICAgICAgcHVibGljS2V5OiB7CkBAIC01
NSw3ICsyNSw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7
CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAg
ICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTgw
LDcgKzUwLDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNr
VTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGV4Y2x1ZGVDcmVkZW50aWFs
cyBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTEwNSw3ICs3NSw3IEBACiAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25z
ZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRl
bnRpYWwpOworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50
aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4g
MiIpOwogCkBAIC0xMjksNyArOTksNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0
aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25z
Tm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0g
fSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwpOworICAgICAgICAgICAgY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFs
KTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggdGVzdCBvZiB1c2VyIHByZXNlbmNlIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4i
KTsKIApAQCAtMTU0LDcgKzEyNCw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlJlZ2lzdGVyUmVz
cG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChj
cmVkZW50aWFsKTsKKyAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxSZXN1bHQoY3Jl
ZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9y
LiIpOwogCkBAIC0xNzksNyArMTQ5LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJS
ZXNwb25zZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwsIGZhbHNlKTsKKyAgICAgICAgICAgIGNoZWNrVTJmTWFrZUNyZWRlbnRpYWxS
ZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1v
Y2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTIwNCw3ICsxNzQsNyBAQAogICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOworICAgICAgICAgICAgY2hl
Y2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgIH0p
OwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBh
dHRlc3RhdGlvbiBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA4YTA0ODQ0MmE4NDBlMGQxZDkzNDk3NmE5NzM2
YTk5NzkxMDAyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggdGltZW91dCBpbiBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGI2NDg3NGZmZjVkODFmZTdiNjE0NDM5ZjcyNjI5YTk5ZDAwMjUxMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIG5mYyBhdXRoZW50aWNhdG9yLjwv
dGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRl
IGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiB9IH0pOworCisg
ICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWwor
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAor
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJibGUiXSB9LAor
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJd
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRw
cy5odG1sCmluZGV4IDM0MjFjNzc4OTkwMThkYWVlMGZjMTE0YThjZjFiOWI5ZWUxMTQyYTYuLmQ5
YjIyYjQyYTlkNzYyMDAyMTQxMjEwYzQ1ZDY4Y2ZhNmQxYjk1MzYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKQEAgLTgsMjMgKzgs
NiBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwogCi0gICAgZnVuY3Rpb24gY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCkKLSAgICB7Ci0gICAgICAgIC8vIENoZWNrIHJlc3BvbmQKLSAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2
NFVSTC5wYXJzZSh0ZXN0SGlkQ3JlZGVudGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOwotICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFy
c2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5
dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3si
dHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0
cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlh
bC5yZXNwb25zZS51c2VySGFuZGxlLCBudWxsKTsKLSAgICAgICAgYXNzZXJ0X25vdF9leGlzdHMo
Y3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwotCi0gICAg
ICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0
aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0
YSkpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJ
ZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1ZTFkMDJiNzU4MGYwYjQ4MTJj
NzcwOTYyZTFlNDhmNWFkOCIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdz
LCAxKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCA4MCk7Ci0gICAg
fQotCiAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgICAgICBjb25zdCBvcHRpb25zID0gewog
ICAgICAgICAgICAgcHVibGljS2V5OiB7CkBAIC0zNCw3ICsxNyw3IEBACiAgICAgICAgIH07CiAK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja0N0YXBHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVu
dGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
QEAgLTUwLDcgKzMzLDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrQ3RhcEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CiAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWF0Y2hlZCBhbGxvdyBjcmVk
ZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTY0LDcgKzQ3LDcg
QEAKICAgICAgICAgfTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdl
dChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgcmV0dXJuIGNoZWNr
UmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ3RhcEdldEFzc2Vy
dGlvblJlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdXNlclZlcmlmaWNhdGlvbiB7IHByZWZlcnJlZCB9IGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtNzgsNyArNjEsNyBAQAogICAgICAg
ICB9OwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3Jl
ZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0
KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCB1c2VyVmVyaWZpY2F0aW9uIHsgZGlzY291cmFnZWQgfSBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAgLTk1LDcgKzc4LDcgQEAKICAgICAgICAgfTsKIAog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwp
OworICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ3RhcEdldEFzc2VydGlvblJlc3VsdChjcmVkZW50
aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbWl4ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKQEAg
LTEwOSw3ICs5Miw3IEBACiAKICAgICAgICAgcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJUaGlzIHJlcXVlc3Qg
aGFzIGJlZW4gdm9pZGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1
cm4gY2hlY2tDdGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0d28gY29uc2VjdXRp
dmUgcmVxdWVzdHMuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTI2OGI5ZmQ4ZTU2ZmQ0NjBhZWExYzcwOGFhYWEwYmNlNzBhMGUyYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1uZmMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEg
bW9jayBuZmMgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggVTJGIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0cHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MzIxYzkwMDE4NTU2MjYxOTlmYzc0OTFkMmVlMDU0ZjY3NDI5MjAzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgbmZjIGF1dGhlbnRpY2F0b3IuPC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cisg
ICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUg
aWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0
QXNzZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwK
KyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ3RhcEdldEFzc2VydGlv
blJlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBuZmMgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAx
MDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBuZmM6IHsgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3ROZmNVMmZWZXJzaW9uQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50aWFsKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
VTJGIGluIGEgbW9jayBuZmMgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCmluZGV4IGM4
NTcxMTRmOTc3ZjQ5YjZlM2Y1M2U0NDhiNzE4NWJhYTAxYWQzYWQuLjk1YjJkMWIyZTE5NGVmMmQz
ZTgxYzQ4NjllOTQ3NWZjZjBkNDNkN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTQsMzEgKzQsNiBAQAogPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBjb25zdCBk
ZWZhdWx0QXBwSURIYXNoID0gImMyNjcxYjZlYjkyMzMxOTdkNWYyYjEyODhhNTViYTRmMDg2MGY5
NmY3MTk5YmJhMzJmZTZkYTdjM2YwZjMxZTUiOwotCi0gICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQo
Y3JlZGVudGlhbCwgaXNBcHBJRCA9IGZhbHNlLCBhcHBJREhhc2ggPSBkZWZhdWx0QXBwSURIYXNo
KQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAotICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRl
c3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50
aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3
IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3Jl
ZGVudGlhbElkQmFzZTY0KSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3Ry
aW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0
aG4uZ2V0IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9z
dDo5NDQzIn0nKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVz
ZXJIYW5kbGUsIG51bGwpOwotICAgICAgICBpZiAoIWlzQXBwSUQpCi0gICAgICAgICAgICBhc3Nl
cnRfbm90X2V4aXN0cyhjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFw
cGlkIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGNyZWRlbnRpYWwu
Z2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLmFwcGlkKTsKLQotICAgICAgICAvLyBDaGVjayBh
dXRoRGF0YQotICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKG5ldyBVaW50
OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsKLSAgICAgICAg
aWYgKCFpc0FwcElEKQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5n
KGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZl
NGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgYXBw
SURIYXNoKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgMSk7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkpOwotICAgIH0KLQogICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAgICAg
IHB1YmxpY0tleTogewpAQCAtNDEsNyArMTYsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWdu
UmVzcG9uc2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRp
b25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKQEAgLTU3LDcgKzMyLDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50
aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbW9yZSBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKQEAgLTczLDcgKzQ4LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlv
bnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05v
dFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlvblJlc3VsdChjcmVkZW50
aWFsKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggdGVzdCBvZiB1c2VyIHByZXNlbmNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKIApAQCAtOTEsNyArNjYsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9uc2Vd
IH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3Jl
ZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQo
Y3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIGVtcHR5IGV4dGVuc2lvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOwogCkBAIC0xMDgsNyArODMsNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZTaWduUmVzcG9u
c2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQo
Y3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1
bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIHNhbWUgc2l0ZSBBcHBJRCBidXQgbm90IHVzZWQgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xMjUsNyArMTAwLDcgQEAKICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25z
ZV0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChj
cmVkZW50aWFsLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1UyZkdldEFzc2VydGlv
blJlc3VsdChjcmVkZW50aWFsLCB0cnVlKTsKICAgICAgICAgfSk7CiAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZW1wdHkgQXBwSUQgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiIpOwogCkBAIC0xNDMsNyArMTE4LDcgQEAKICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9
KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50
aWFsLCB0cnVlLCAiN2VhYmM1Y2MzMjUxYmRjNTkxMTVlZjg3YjVmN2VlNzRjYjAzNzQ3ZTM5YmE4
MzQxNzQ4NTY1Y2MxMjljMDcxOSIpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNz
ZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMyNTFiZGM1OTExNWVmODdi
NWY3ZWU3NGNiMDM3NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7CiAgICAgICAgIH0pOwog
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGFuIEFwcElEIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTYwLDcgKzEzNSw3IEBACiAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwp
OworICAgICAgICAgICAgcmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRp
YWwpOwogICAgICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtdWx0aXBsZSBjcmVkZW50aWFscyBhbmQgQXBwSUQgaXMgbm90IHVzZWQgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCkBAIC0xNzcsNyArMTUyLDcgQEAKICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUpOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrVTJmR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIHRydWUpOwogICAg
ICAgICB9KTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtdWx0
aXBsZSBjcmVkZW50aWFscyBhbmQgQXBwSUQgaXMgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CiAKQEAgLTE5NCw3ICsxNjksNyBAQAogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9u
c2VdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQo
Y3JlZGVudGlhbCk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1
bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIGRvd25ncmFkZWQgYXV0aGVudGljYXRvciBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIik7CiAKQEAgLTIxMSw3ICsxODYsNyBAQAogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOwog
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWws
IHRydWUsICI3ZWFiYzVjYzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3NDdlMzliYTgzNDE3
NDg1NjVjYzEyOWMwNzE5Iik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tVMmZHZXRBc3NlcnRp
b25SZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSwgIjdlYWJjNWNjMzI1MWJkYzU5MTE1ZWY4N2I1Zjdl
ZTc0Y2IwMzc0N2UzOWJhODM0MTc0ODU2NWNjMTI5YzA3MTkiKTsKICAgICAgICAgfSk7CiAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZG93bmdyYWRlZCBhdXRoZW50
aWNhdG9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gKEFwcElEKSIpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4IDk4N2Qw
NzIxOWQ0ZTQ3NzA3NGM5OGY0MmMxNWIxODUzYzczYWM2MTIuLjFiOTEzYjRkYWRiMGRkMGFjYmJm
OWZiNWNhZTA4MzM3MDU3Mjg5N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC05OSw2ICs5OSw0MCBAQCBjb25zdCB0ZXN0VTJmU2ln
blJlc3BvbnNlID0KICAgICAiZjRWNExlRUFocWVEMGVmZlRqWTU1M0gxOXEraldxMVRjNFdPa0FB
PSI7CiBjb25zdCB0ZXN0Q3RhcEVyckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25zZUJhc2U2
NCA9ICJHUT09IjsKIGNvbnN0IHRlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJh
c2U2NCA9ICJJZz09IjsKK2NvbnN0IHRlc3ROZmNVMmZWZXJzaW9uQmFzZTY0ID0gIlZUSkdYMVl5
a0FBPSI7Citjb25zdCB0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQgPSAiUmtsRVQxOHlYekNRQUE9
PSI7Citjb25zdCB0ZXN0R2V0SW5mb1Jlc3BvbnNlQXBkdUJhc2U2NCA9CisgICAgIkFLWUJnbVpW
TWtaZlZqSm9Sa2xFVDE4eVh6QUNnV3RvYldGakxYTmxZM0psZEFOUWJVUzZtL2JzTGttNU1BeVAi
ICsKKyAgICAiNlNETGN3U2tZbkpyOVdKMWNQVmtjR3hoZFBScFkyeHBaVzUwVUdsdTlBVVpCTEFH
Z1FHUUFBPT0iOworY29uc3QgdGVzdENyZWF0aW9uTWVzc2FnZUFwZHVCYXNlNjQgPQorICAgICJB
S01CWm5CaFkydGxaQUpZeEViTWY3bG5uVld5MjVDUzRjalo1ZUhRSzNXQThMU0JMSGNKWXVIa2ox
cllRUUFBIiArCisgICAgIkFFNzRvQkh6akFwTkZZQUdGeEVmbnR4OUFFQW9DSzNPNlA1T3lYTjZW
L2YrOW5BZ2EwTkEyQ2dwNFYzbWdTSjUiICsKKyAgICAiak9ITE1Ecm14cC9TMHJiRCthaWhydTFD
MGFBTjNCa2lNNkdOeTVuU2xEVnFPZ1RncFFFQ0F5WWdBU0ZZSUVGYiIgKworICAgICJoZTNSa051
ZDZzZ3lyYUJHamxoMXB6VGxDWmVoUWxML2IxOEhaNldHSWxnZ0pnZlVkL2VuOXA1QUlxTVFiVW5p
IiArCisgICAgIm5FZVhkRkxrdlcwL3pWNUJwRWpqTnhBRG8yTmhiR2NtWTNOcFoxaEhNRVVDSVFE
S2crWkJtRUJ0ZjBsV3E0UmUiICsKKyAgICAiZEg0L2kvTE9ZcU9SNHVSMk5BajJ6UW13OVFJZ2JU
WGI0aHZGYmo0VDI3YnYvckdyYyt5KzBwdW9ZT0JrQms5UCIgKworICAgICJtQ2V3V2xOamVEVmpn
VmtDd2pDQ0FyNHdnZ0dtb0FNQ0FRSUNCSFNHL2NJd0RRWUpLb1pJaHZjTkFRRUxCUUF3IiArCisg
ICAgIkxqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBO
VGN5TURBMk16RXciICsKKyAgICAiSUJjTk1UUXdPREF4TURBd01EQXdXaGdQTWpBMU1EQTVNRFF3
TURBd01EQmFNRzh4Q3pBSkJnTlZCQVlUQWxORiIgKworICAgICJNUkl3RUFZRFZRUUtEQWxaZFdK
cFkyOGdRVUl4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwIiArCisgICAgIlpY
TjBZWFJwYjI0eEtEQW1CZ05WQkFNTUgxbDFZbWxqYnlCVk1rWWdSVVVnVTJWeWFXRnNJREU1TlRV
d01ETTQiICsKKyAgICAiTkRJd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVlhm
T3Q5eVI5TVhYdi9aekU4eHBPaDQ2NiIgKworICAgICI0WUVKVm1GUSt6aUxMbDlsSjc5WFFKcWxn
YVVOQ3NVdkdFUmNDaE5VaWhOVHlLVGxtbkJPVWp2QVRldnRvMnd3IiArCisgICAgImFqQWlCZ2ty
QmdFRUFZTEVDZ0lFRlRFdU15NDJMakV1TkM0eExqUXhORGd5TGpFdU1UQVRCZ3NyQmdFRUFZTGwi
ICsKKyAgICAiSEFJQkFRUUVBd0lGSURBaEJnc3JCZ0VFQVlMbEhBRUJCQVFTQkJENG9CSHpqQXBO
RllBR0Z4RWZudHg5TUF3RyIgKworICAgICJBMVVkRXdFQi93UUNNQUF3RFFZSktvWklodmNOQVFF
TEJRQURnZ0VCQURGY1NJRG1tbEorT0dhSnZXbjlDcWh2IiArCisgICAgIlNldWVUb1ZGUVZWdnF0
QUxPZ0NLSGR3QitXeDI5bWcyR3BIaU1zZ1FwNXhqQjB5YmJucEc2eDIxMkZ4RVNKK0ciICsKKyAg
ICAiaW5aRDBpcGNoaTdBUHdQbGhJdmpnSDE2elZYNDRhNGU0aE9zYzZ0TElPUDcxU2FNc0h1SGdD
Y2RIMHZnNWQycyIgKworICAgICJjMDA2V0plOVRYTzZmelYrb2dqSm5ZcE5LUUxtQ1hvQVhFM0pC
TndLR0JJT0N2ZlFEUHlXbWlpRzViR3hZZlB0IiArCisgICAgInk4WjNwbmpYKzFNRG5NMmhocjQw
dWxNeGxTTkRuWC9aU25EeU1HSWJrOFRPUW1qVEYwMlVPOGF1UDhrM3d0NUQiICsKKyAgICAiMXJS
T0lSVTkrRkNTWDVXUVlpNjhSdURyR01aQjhQNStieW9KcWJLUWR4bjJMbUUxb1pBeW9oUEFtTGNv
UE82USIgKworICAgICJBQT09IjsKK2NvbnN0IHRlc3RBc3NlcnRpb25NZXNzYWdlQXBkdUJhc2U2
NCA9CisgICAgIkFLTUJvbUpwWkZoQUtBaXR6dWorVHNsemVsZjMvdlp3SUd0RFFOZ29LZUZkNW9F
aWVZemh5ekE2NXNhZjB0SzIiICsKKyAgICAidy9tb29hN3RRdEdnRGR3WklqT2hqY3VaMHBRMWFq
b0U0R1IwZVhCbGFuQjFZbXhwWXkxclpYa0NXQ1ZHekgrNSIgKworICAgICJaNTFWc3R1UWt1SEky
ZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCisg
ICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZx
TnM4T3V0emhQMkMiICsKKyAgICAiUW9KMUw3RmU2NEc5dUJlUUFBPT0iOwogCiBjb25zdCBSRVNP
VVJDRVNfRElSID0gIi9XZWJLaXQvd2ViYXV0aG4vcmVzb3VyY2VzLyI7CiAKQEAgLTI5NywzICsz
MzEsMTA4IEBAIGZ1bmN0aW9uIGNoZWNrUHVibGljS2V5KHB1YmxpY0tleSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQorCitmdW5jdGlvbiBjaGVja0N0YXBNYWtl
Q3JlZGVudGlhbFJlc3VsdChjcmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCit7
CisgICAgLy8gQ2hlY2sgcmVzcG9uc2UKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVS
TC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFs
SWRCYXNlNjQpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1r
ZXknKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwu
cmF3SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdEhpZENyZWRlbnRpYWxJZEJhc2U2NCkpOworICAg
IGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xp
ZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJ
ek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICBhc3NlcnRf
bm90X2V4aXN0cyhjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlk
Iik7CisKKyAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgIGNvbnN0IGF0dGVzdGF0aW9uT2Jq
ZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7
CisgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9uKQorICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVz
dGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKKyAgICBlbHNlCisgICAgICAgIGFzc2VydF9lcXVh
bHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAicGFja2VkIik7CisgICAgLy8gQ2hlY2sgYXV0aERh
dGEKKyAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0
LmF1dGhEYXRhKTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEu
cnBJZEhhc2gpLCAiNDZjYzdmYjk2NzlkNTViMmRiOTA5MmUxYzhkOWU1ZTFkMDJiNzU4MGYwYjQ4
MTJjNzcwOTYyZTFlNDhmNWFkOCIpOworICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3Ms
IDY1KTsKKyAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDc4KTsKKyAgICBpZiAo
aXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmlu
ZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsK
KyAgICBlbHNlCisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0
YS5hYWd1aWQpLCAiZjhhMDExZjM4YzBhNGQxNTgwMDYxNzExMWY5ZWRjN2QiKTsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGF1dGhEYXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJMLnBhcnNlKHRl
c3RIaWRDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAvLyBDaGVjayBwYWNrZWQgYXR0ZXN0YXRp
b24KKyAgICBhc3NlcnRfdHJ1ZShjaGVja1B1YmxpY0tleShhdXRoRGF0YS5wdWJsaWNLZXkpKTsK
KyAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7CisgICAgZWxzZSB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC5hbGcsIC03KTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5ndGgsIDEpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gY2hlY2tVMmZNYWtlQ3JlZGVudGlhbFJlc3VsdChjcmVkZW50
aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCit7CisgICAgLy8gQ2hlY2sgcmVzcG9uc2UK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwg
QmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFyc2Uo
dGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FT
Q0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoi
d2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczov
L2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICBhc3NlcnRfbm90X2V4aXN0cyhjcmVkZW50aWFsLmdl
dENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlkIik7CisKKyAgICAvLyBDaGVjayBhdHRl
c3RhdGlvbgorICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVu
dGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7CisgICAgaWYgKGlzTm9uZUF0dGVzdGF0
aW9uKQorICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUi
KTsKKyAgICBlbHNlCisgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10
LCAiZmlkby11MmYiKTsKKyAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgIGNvbnN0IGF1dGhEYXRh
ID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgIGFzc2Vy
dF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0OTk2MGRlNTg4
MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNiYTgzMWQ5NzYzIik7
CisgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgIGFzc2VydF9lcXVh
bHMoYXV0aERhdGEuY291bnRlciwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3Ry
aW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIp
OworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElELCBCYXNlNjRV
UkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIC8vIENoZWNrIGZpZG8t
dTJmIGF0dGVzdGF0aW9uCisgICAgYXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEu
cHVibGljS2V5KSk7CisgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9uKQorICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOworICAgIGVsc2UK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5n
dGgsIDEpOworfQorCitmdW5jdGlvbiBjaGVja0N0YXBHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVu
dGlhbCkKK3sKKyAgICAvLyBDaGVjayByZXNwb25kCisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhC
YXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0SGlkQ3Jl
ZGVudGlhbElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdw
dWJsaWMta2V5Jyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVk
ZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RIaWRDcmVkZW50aWFsSWRCYXNlNjQp
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3Bv
bnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6
Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUsIG51bGwpOworICAgIGFz
c2VydF9ub3RfZXhpc3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAi
YXBwaWQiKTsKKworICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgY29uc3QgYXV0aERhdGEgPSBk
ZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRp
Y2F0b3JEYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRh
LnJwSWRIYXNoKSwgIjQ2Y2M3ZmI5Njc5ZDU1YjJkYjkwOTJlMWM4ZDllNWUxZDAyYjc1ODBmMGI0
ODEyYzc3MDk2MmUxZTQ4ZjVhZDgiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdz
LCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDgwKTsKK30KKworZnVu
Y3Rpb24gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgaXNBcHBJRCA9IGZh
bHNlLCBhcHBJREhhc2ggPSAiYzI2NzFiNmViOTIzMzE5N2Q1ZjJiMTI4OGE1NWJhNGYwODYwZjk2
ZjcxOTliYmEzMmZlNmRhN2MzZjBmMzFlNSIpCit7CisgICAgLy8gQ2hlY2sgcmVzcG9uZAorICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNl
NjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgIGFzc2VydF9lcXVh
bHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0
VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlT
dHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJh
dXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxo
b3N0Ojk0NDMifScpOworICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC5yZXNwb25zZS51c2Vy
SGFuZGxlLCBudWxsKTsKKyAgICBpZiAoIWlzQXBwSUQpCisgICAgICAgIGFzc2VydF9ub3RfZXhp
c3RzKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKyAg
ICBlbHNlCisgICAgICAgIGFzc2VydF90cnVlKGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9u
UmVzdWx0cygpLmFwcGlkKTsKKworICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgY29uc3QgYXV0
aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNl
LmF1dGhlbnRpY2F0b3JEYXRhKSk7CisgICAgaWYgKCFpc0FwcElEKQorICAgICAgICBhc3NlcnRf
ZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBl
OGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOwor
ICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRh
LnJwSWRIYXNoKSwgYXBwSURIYXNoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdz
LCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDU5KTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDk3NDk3N2EyNWZjZjFmZDllNTc3ZTMzZjg1ZmE1YWZkMDRiYWZjYTIuLmNh
ODZmNDYxNDJlZTVlODlkOGIxNWI2Y2FhNzE1ODRhNWVlYzg3MGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtODksMyArODksMTAgQEAgd2Via2l0Lm9yZy9iLzE4Mjg0OSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3hoci9ldmVudC11cGxvYWQtcHJvZ3Jlc3MtY3IKIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2tleXBhdGgtc3BlY2lhbC1pZGVudGlmaWVycy5o
dG0gWyBTbG93IF0KIAogd2Via2l0Lm9yZy9iLzE3MjAwMSBzY3JvbGxpbmdjb29yZGluYXRvci9p
b3Mvc3luYy1sYXllci1wb3NpdGlvbnMtYWZ0ZXItc2Nyb2xsLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQorCisjIE5lYXJGaWVsZC5mcmFtZXdvcmsgZG9lc24ndCBwcmVzZW50IGluIHRoZSBzaW11bGF0
b3IsIGFuZCB0aGVyZWZvcmUgc2tpcCBhbGwgV2ViQXV0aG4gTkZDIHRlc3RzCitodHRwL3dwdC93
ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRt
bCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCitodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1uZmMuaHR0
cHMuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>