<?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>222252</bug_id>
          
          <creation_ts>2021-02-21 14:20:05 -0800</creation_ts>
          <short_desc>[Cocoa] Web Inspector: add support for receiving Web Extension events via _WKInspectorExtensionDelegate</short_desc>
          <delta_ts>2021-02-26 13:41:11 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731996</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 14:20:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/71206685&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731998</commentid>
    <comment_count>1</comment_count>
      <attachid>421152</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 15:09:26 -0800</bug_when>
    <thetext>Created attachment 421152
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731999</commentid>
    <comment_count>2</comment_count>
      <attachid>421153</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 15:15:23 -0800</bug_when>
    <thetext>Created attachment 421153
Patch v1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732019</commentid>
    <comment_count>3</comment_count>
      <attachid>421162</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 17:49:06 -0800</bug_when>
    <thetext>Created attachment 421162
Patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732035</commentid>
    <comment_count>4</comment_count>
      <attachid>421162</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 21:12:03 -0800</bug_when>
    <thetext>Comment on attachment 421162
Patch v1.2

1. Investigating build failure for watchOS: https://ews-build.webkit.org/#/builders/47/builds/9139

Error:


/Volumes/Data/worker/watchOS-7-Build-EWS/build/Source/WebKit/Platform/spi/watchos/PepperUICoreSPI.h:294:46: note: passing argument to parameter &apos;crownInputEvent&apos; here
- (void)updateWithCrownInputEvent:(UIEvent *)crownInputEvent;
                                             ^
In file included from /Volumes/Data/worker/watchOS-7-Build-EWS/build/WebKitBuild/Release-watchos/DerivedSources/WebKit2/unified-sources/UnifiedSource48-mm.mm:7:
/Volumes/Data/worker/watchOS-7-Build-EWS/build/Source/WebKit/UIProcess/ios/forms/WKFocusedFormControlView.mm:202:43: error: conflicting parameter types in implementation of &apos;_wheelChangedWithEvent:&apos;: &apos;UIEvent *&apos; vs &apos;WebCore::UIEvent *&apos; [-Werror,-Wmismatched-parameter-types]

I&apos;m building locally with the command 

    build-webkit --release &apos;ARCHS=arm64_32 armv7k&apos; ONLY_ACTIVE_ARCH=NO --watchos-device

to see what&apos;s happened. It looks like a UnifiedSources fallout issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732036</commentid>
    <comment_count>5</comment_count>
      <attachid>421162</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 21:13:03 -0800</bug_when>
    <thetext>Comment on attachment 421162
Patch v1.2

2. It looks like API tests failed: https://ews-build.webkit.org/#/builders/3/builds/42030

Failed
    TestWebKitAPI.WKInspectorExtensionHost.RegisterExtension
        
        /Volumes/Data/worker/macOS-Catalina-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:91
        Value of: error
          Actual: false
        Expected: true
        
        
        /Volumes/Data/worker/macOS-Catalina-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:92
        Value of: !(extension)
          Actual: false
        Expected: true
        
        
        /Volumes/Data/worker/macOS-Catalina-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:93
        Value of: [error.localizedFailureReason containsString:@&quot;RegistrationFailed&quot;]
          Actual: false
        Expected: true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732037</commentid>
    <comment_count>6</comment_count>
      <attachid>421162</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-21 21:16:24 -0800</bug_when>
    <thetext>Comment on attachment 421162
Patch v1.2

3. ios-wk2 and mac-debug-wk1 are hitting some layout test failures: https://ews-build.webkit.org/#/builders/56/builds/1883

Failing tests:

imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-immediate-promise.html
imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html
imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html
imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html
imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html

According to previous build in the queue, that&apos;s a preexisting test failure.
https://ews-build.webkit.org/#/builders/56/builds/1881

So I&apos;m going to ignore issue #3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732227</commentid>
    <comment_count>7</comment_count>
      <attachid>421217</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-22 11:52:42 -0800</bug_when>
    <thetext>Created attachment 421217
Patch v2.0

New patch addresses failures #1 and #2. Bumping major patch number because this revised patch changes the lifecycle for WebInspectorUIExtensionControllerProxy such that we can do |strongThis = makeRef(*this)| in completion handlers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732237</commentid>
    <comment_count>8</comment_count>
      <attachid>421221</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-22 12:01:49 -0800</bug_when>
    <thetext>Created attachment 421221
Patch v2.1

Remove unnecessary logging in frontend code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732240</commentid>
    <comment_count>9</comment_count>
      <attachid>421223</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-22 12:12:46 -0800</bug_when>
    <thetext>Created attachment 421223
Patch v2.2 - try to fix watchOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732280</commentid>
    <comment_count>10</comment_count>
      <attachid>421232</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-22 13:22:39 -0800</bug_when>
    <thetext>Created attachment 421232
Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732313</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-22 14:47:24 -0800</bug_when>
    <thetext>(In reply to BJ Burg from comment #10)
&gt; Created attachment 421232 [details]
&gt; Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change

According to thorton, the UnifiedSources compilation units have shifted, and there&apos;s probably a &apos;using namespace WebCore&apos; now within this one. I&apos;m trying a local DerivedSources for watchOS to see if it&apos;s obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732457</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-23 00:26:44 -0800</bug_when>
    <thetext>(In reply to BJ Burg from comment #11)
&gt; (In reply to BJ Burg from comment #10)
&gt; &gt; Created attachment 421232 [details]
&gt; &gt; Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change
&gt; 
&gt; According to thorton, the UnifiedSources compilation units have shifted, and
&gt; there&apos;s probably a &apos;using namespace WebCore&apos; now within this one. I&apos;m trying
&gt; a local DerivedSources for watchOS to see if it&apos;s obvious.

Wenson fixed this independently in ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732652</commentid>
    <comment_count>13</comment_count>
      <attachid>421232</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-23 12:33:41 -0800</bug_when>
    <thetext>Comment on attachment 421232
Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change

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

r=me, the inspector bits look fine to me but I&apos;d suggest asking someone more familiar with WebKit&apos;s API style/design for those parts :)

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:68
&gt; +        super.detached();

NIT: I&apos;d put this at the end of the function so that superclasses don&apos;t tear down things before this subclass has had a chance to do stuff (this would match C++ constructor/destructor logic too)

&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:40
&gt; +namespace Inspector {

it feels a bit odd to put this in the `Inspector` namespace when `Inspector` is primarily defined in JavaScriptCore 🤔

&gt; Source/WebKit/UIProcess/API/APIInspectorExtension.h:35
&gt; +#include &lt;wtf/UniqueRef.h&gt;

NIT: this should be handled by `#include &lt;wtf/Forward.h&gt;`

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:167
&gt; +        completionHandler([NSError errorWithDomain:WKErrorDomain code:WKErrorUnknown userInfo:@{ NSLocalizedFailureReasonErrorKey: Inspector::extensionErrorToString(Inspector::ExtensionError::InvalidRequest)}], nil);

Style: there should be either spaces before both `{` and `}` or no spaces at all

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:88
&gt; +    whenFrontendHasLoaded([this, strongThis = makeRef(*this), extensionID, displayName, completionHandler = WTFMove(completionHandler)] () mutable {

Why not keep this as `weakThis`?

&gt; Source/WebKit/UIProcess/ios/forms/WKFocusedFormControlView.mm:134
&gt; +- (BOOL)handleWheelEvent:(::UIEvent *)event

o_0 wat?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732728</commentid>
    <comment_count>14</comment_count>
      <attachid>421232</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-23 16:37:47 -0800</bug_when>
    <thetext>Comment on attachment 421232
Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change

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

&gt;&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:88
&gt;&gt; +    whenFrontendHasLoaded([this, strongThis = makeRef(*this), extensionID, displayName, completionHandler = WTFMove(completionHandler)] () mutable {
&gt; 
&gt; Why not keep this as `weakThis`?

Oops, this one should be weak, but the other should be strong.

&gt;&gt; Source/WebKit/UIProcess/ios/forms/WKFocusedFormControlView.mm:134
&gt;&gt; +- (BOOL)handleWheelEvent:(::UIEvent *)event
&gt; 
&gt; o_0 wat?

Unified sources change, no longer necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733490</commentid>
    <comment_count>15</comment_count>
      <attachid>421232</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-25 13:47:16 -0800</bug_when>
    <thetext>Comment on attachment 421232
Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:68
&gt;&gt; +        super.detached();
&gt; 
&gt; NIT: I&apos;d put this at the end of the function so that superclasses don&apos;t tear down things before this subclass has had a chance to do stuff (this would match C++ constructor/destructor logic too)

OK

&gt;&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:40
&gt;&gt; +namespace Inspector {
&gt; 
&gt; it feels a bit odd to put this in the `Inspector` namespace when `Inspector` is primarily defined in JavaScriptCore 🤔

The reason I introduced the Inspector namespace a while ago was that generated inspector bindings code shouldn&apos;t be just in JSC or WebCore namespaces, and generating it differently per namespace is a pain. Some of the pieces (notably JSONValue) have moved to WTF namespace as their adoption has spread.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:167
&gt;&gt; +        completionHandler([NSError errorWithDomain:WKErrorDomain code:WKErrorUnknown userInfo:@{ NSLocalizedFailureReasonErrorKey: Inspector::extensionErrorToString(Inspector::ExtensionError::InvalidRequest)}], nil);
&gt; 
&gt; Style: there should be either spaces before both `{` and `}` or no spaces at all

OK

&gt;&gt;&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:88
&gt;&gt;&gt; +    whenFrontendHasLoaded([this, strongThis = makeRef(*this), extensionID, displayName, completionHandler = WTFMove(completionHandler)] () mutable {
&gt;&gt; 
&gt;&gt; Why not keep this as `weakThis`?
&gt; 
&gt; Oops, this one should be weak, but the other should be strong.

I&apos;ll fix this in unregister too, as it will have the same issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733536</commentid>
    <comment_count>16</comment_count>
      <attachid>421572</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-25 15:07:35 -0800</bug_when>
    <thetext>Created attachment 421572
Patch v2.4 - addressed review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733553</commentid>
    <comment_count>17</comment_count>
      <attachid>421574</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-25 15:32:49 -0800</bug_when>
    <thetext>Created attachment 421574
Patch v2.5 - more UnifiedSources drama</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733606</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-25 17:02:47 -0800</bug_when>
    <thetext>Committed r273522: &lt;https://commits.webkit.org/r273522&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421574.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733863</commentid>
    <comment_count>19</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-02-26 10:31:26 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/273522/webkit

broke TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension

History:
https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension

TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
        
        /Volumes/Data/slave/bigsur-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtensionHost.mm:164
        Value of: [error.localizedFailureReason containsString:@&quot;InvalidRequest&quot;]
          Actual: false
        Expected: true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733903</commentid>
    <comment_count>20</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-26 12:00:04 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #19)
&gt; It looks like the changes in https://trac.webkit.org/changeset/273522/webkit
&gt; 
&gt; broke TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
&gt; 
&gt; History:
&gt; https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.
&gt; WKInspectorExtensionHost.UnregisterExtension
&gt; 
&gt; TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
&gt;         
&gt;        
&gt; /Volumes/Data/slave/bigsur-release/build/Tools/TestWebKitAPI/Tests/
&gt; WebKitCocoa/WKInspectorExtensionHost.mm:164
&gt;         Value of: [error.localizedFailureReason
&gt; containsString:@&quot;InvalidRequest&quot;]
&gt;           Actual: false
&gt;         Expected: true

Taking a look, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733964</commentid>
    <comment_count>21</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-02-26 13:41:11 -0800</bug_when>
    <thetext>(In reply to BJ Burg from comment #20)
&gt; (In reply to Truitt Savell from comment #19)
&gt; &gt; It looks like the changes in https://trac.webkit.org/changeset/273522/webkit
&gt; &gt; 
&gt; &gt; broke TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
&gt; &gt; 
&gt; &gt; History:
&gt; &gt; https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.
&gt; &gt; WKInspectorExtensionHost.UnregisterExtension
&gt; &gt; 
&gt; &gt; TestWebKitAPI.WKInspectorExtensionHost.UnregisterExtension
&gt; &gt;         
&gt; &gt;        
&gt; &gt; /Volumes/Data/slave/bigsur-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; WebKitCocoa/WKInspectorExtensionHost.mm:164
&gt; &gt;         Value of: [error.localizedFailureReason
&gt; &gt; containsString:@&quot;InvalidRequest&quot;]
&gt; &gt;           Actual: false
&gt; &gt;         Expected: true
&gt; 
&gt; Taking a look, thanks.

Fixed in ToT:

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	Source/WebKit/ChangeLog
	M	Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp
Committed r273586</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421152</attachid>
            <date>2021-02-21 15:09:26 -0800</date>
            <delta_ts>2021-02-21 15:22:58 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-222252-20210221150925.patch</filename>
            <type>text/plain</type>
            <size>108012</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4MWM4MzA2ZjZlMDkz
M2E4NWVhZTYzNWYzZDVhNTFiN2M5ZTM3ZC4uNjZkMWYyNjI3ZTQwNzA3ZDY0NWMwZTNiYTExYjcx
MDZiYzljODJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIwICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEltYWdlIHNo
b3VsZCByZXBvcnQgdGhlIGVtYmVkZGVkIGFjY2Vzc2liaWxpdHkgZGVzY3JpcHRpb24gaWYgYXZh
aWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjODUzNjVjMmYxMWJkZjY3ZThiZTVh
NmQ4MDEyMGNkMDMwN2UzY2VjLi5lNjQwMGIxNThiOGZmZWNhODY3OGNhYmFmMWM3NjVlMGFjMDlm
ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0y
MSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNw
ZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlh
IF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcx
MjA2Njg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzOiBVcGRhdGUg
Y29tbWVudCBmb3IgbmFtZXNwYWNlIGNoYW5nZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQp
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLmRldGFjaGVkKToKKyAgICAgICAgV2hlbiBhbiBleHRlbnNpb24gdGFiIGlzIHNob3duIG9y
IGhpZGRlbiwgbm90aWZ5IHRoZSBmcm9udGVuZCBob3N0IGFib3V0IHRoZSBldmVudC4KKwogMjAy
MS0wMi0xOSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDU1MgR3JpZCBJbnNwZWN0b3I6IHVzZSBhIGNvbG9yIHBhbGV0dGUg
Zm9yIGRlZmF1bHQgZ3JpZCBvdmVybGF5IGNvbG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZmYxZWJhMjYxYjQw
ZGNmNWVhOTQyOWYzNTA2ZTg1YjMxZjcxNzMzLi5mNWYyYTAzMWI3OTI1ZTlkYjMxYjE2YzViNTll
YmZlNDYzNzI4NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAyMS0wMi0yMSAgQkog
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6
IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlhIF9XS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjA2Njg1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjbGllbnRzIHRvIHJlY2VpdmUgZXh0ZW5zaW9uIGxpZmVj
eWNsZSBldmVudHMuIEZvciBub3cgdGhpcyBpbmNsdWRlcworICAgICAgICBleHRlbnNpb24gdGFi
IHNob3duL2hpZGRlbiwgYnV0IHdpbGwgZXZlbnR1YWxseSBpbmNsdWRlIHBhZ2UgbmF2aWdhdGlv
bnMgYW5kIG90aGVyIGV2ZW50cyBleHBvc2VkCisgICAgICAgIHZpYSBXZWIgRXh0ZW5zaW9ucyBB
UEkuCisKKyAgICAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCBhdCB0aGUgV2ViS2l0IGxldmVsIHZp
YSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgbWV0aG9kcy4gVGhpcyBnZXRzIHBpcGVkIHRv
CisgICAgICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IHZpYSBJUEMs
IHdoaWNoIHRoZW4gcGFzc2VzIG9uIHRoZSBldmVudCB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS4KKworICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSBpcyBhIGRl
bGVnYXRlIG9mIF9XS0luc3BlY3RvckV4dGVuc2lvbi4gSXQncyBmb3IgcmVjZWl2aW5nIGxpZmVj
eWNsZSBldmVudHMsIGFuZAorICAgICAgICBpcyBpbXBsZW1lbnRlZCBzaW1pbGFybHkgdG8gX1dL
SW5zcGVjdG9yRGVsZWdhdGUuIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
IG5vdyBrZWVwcyBhIG1hcCBvZgorICAgICAgICBleHRlbnNpb24gQVBJIG9iamVjdHMgc28gdGhh
dCBpdCBjYW4gY2FsbCBvdXQgdG8gdGhlIHRoZSBhcHByb3ByaWF0ZSBleHRlbnNpb24gQVBJIG9i
amVjdCdzIGNsaWVudC9kZWxlZ2F0ZS4KKworICAgICAgICBMYXN0bHksIHNpbmNlIHRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBhdCB0aGUgV2ViQ29yZSBsZXZl
bCwgSSBkZWNpZGVkIHRvIG1vdmUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9mIEluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmggdG8gdGhlIEluc3BlY3RvciBuYW1lc3BhY2UuIEl0IG1hZGUgbW9yZSBz
ZW5zZSB0aGFuIHR5cGluZyBvdXQgV2ViQ29yZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IKKyAg
ICAgICAgYW5kIHRoZSBsaWtlLiBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCB0aGUgc3RyaW5nIHR5
cGUgYWxpYXNlcyBJbnNwZWN0b3I6OkV4dGVuc2lvbklEIGFuZCBJbnNwZWN0b3I6RXh0ZW5zaW9u
VGFiSUQgYXJlCisgICAgICAgIG5vdyBkZWZpbmVkIGluIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmguCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGQgZ2VuZXJhdGVkIGZpbGVzIGZv
ciBuZXcgbWVzc2FnZSByZWNlaXZlci4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBu
ZXcgZmlsZXMgZm9yIGluc3BlY3RvciBleHRlbnNpb24gY2xpZW50L2RlbGVnYXRlIGJvaWxlcnBs
YXRlIGNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpleHRl
bnNpb25FcnJvclRvU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlc2UgdHlwZXMgYW5kIGhl
bHBlcnMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uOjpzZXRDbGllbnQpOiBBZGQgYSBjbGllbnQgbWVtYmVyIHdoaWNoIGlzIHVzZWQgdG8gY2Fs
bCBvdXQgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuCisgICAgICAgIChBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlVGFiKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHQpOiBGaXggbmFtZXNwYWNlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmguCisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6
ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYik6CisgICAgICAgIEFkZGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3Bl
Y3RvciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHVucmVnaXN0ZXJFeHRlbnNpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEFkanVzdCB0byBuZXcgdHlwZSBzaWduYXR1cmUgdGhh
dCByZXR1cm5zIGFuIGluaXRpYWxpemVkIEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHVucmVnaXN0
ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEFkanVzdCB0byBuZXcg
dHlwZSBzaWduYXR1cmUgdGhhdCByZXR1cm5zIGFuIGluaXRpYWxpemVkIEFQSTo6SW5zcGVjdG9y
RXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbi5oOiBBZGQgdGhlIGRlbGVnYXRlIHByb3BlcnR5IGFuZCB1
cGRhdGUgZG9jdW1lbnRhdGlvbiB0byBtZW50aW9uIGl0cyBpbnRlbmRlZCB1c2FnZS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg6
IEFkZCBkZWxlZ2F0ZSBzdG9yYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24g
ZGVsZWdhdGVdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRl
Ol0pOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24g
Y3JlYXRlVGFiV2l0aE5hbWU6dGFiSWNvblVSTDpzb3VyY2VVUkw6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gZXZh
bHVhdGVTY3JpcHQ6ZnJhbWVVUkw6Y29udGV4dFNlY3VyaXR5T3JpZ2luOnVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6ZGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xp
ZW50OjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Ojp+SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6Cisg
ICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVGhpcyBp
cyBPYmpDLXRvLUMrKyBicmlkZ2UgY29kZSB0byBjb25uZWN0IEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50ICh1c2VkIGJ5IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
KQorICAgICAgICB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSAodXNlZCBieSBjbGll
bnQgY29kZSkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICBNYWtlIHRoaXMgY2xhc3MgYW4gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNpb24gbGlmZWN5Y2xl
IGV2ZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToK
KyAgICAgICAgTWFrZSB0aGlzIGNsYXNzIGFuIElQQzo6TWVzc2FnZVJlY2VpdmVyLiBJdCByZWNl
aXZlcyBtZXNzYWdlcyBmb3IgZXh0ZW5zaW9uIGxpZmVjeWNsZSBldmVudHMuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVy
RXh0ZW5zaW9uKToKKyAgICAgICAgRXhwYW5kIHRoaXMgY29kZSBvdXQgc28gdGhhdCB3ZSBjYW4g
c2F2ZSBBUEk6Okluc3BlY3RvckV4dGVuc2lvbiBpbnN0YW5jZXMgaW50byBvdXIgb3duIG1hcAor
ICAgICAgICBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgY29tcGxldGlvbkhhbmRsZXIuIFRoaXMg
bWFwIGtlZXBzIHN0cm9uZyByZWZlcmVuY2VzIHRvIHRoZSBleHRlbnNpb24KKyAgICAgICAgQVBJ
IG9iamVjdHMgc2luY2UgdGhleSBuZWVkIHRvIGJlIHVzZWQgdG8gc2VuZCBldmVudHMgYXQgYW4g
YXJiaXRyYXJ5IHRpbWUgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgUHJldmlvdXNseSwgdGhleSB3
ZXJlIGtlcHQgYWxpdmUgKG9yIG5vdCkgYnkgdGhlIEFQSSBjbGllbnQuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24pOgorICAgICAgICBXaGVuIHRoZSBleHRlbnNpb24gaXMgbm8gbG9uZ2VyIHJlZ2lz
dGVyZWQsIHJlbW92ZSB0aGUgYXNzb2NpYXRlZCBleHRlbnNpb24gQVBJIG9iamVjdCAoYW5kCisg
ICAgICAgIG91ciBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0KS4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6IEZpeCBu
YW1lc3BhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToK
KyAgICAgICAgQWRkZWQuIFRyeSB0byBsb29rIHVwIHRoZSBhc3NvY2lhdGVkIEFQSSBvYmplY3Qg
Zm9yIHRoZSBleHRlbnNpb24gYW5kIGZvcndhcmQgdGhlIGV2ZW50IHRvCisgICAgICAgIHRoZSBj
bGllbnQgb2YgdGhlIEFQSSBvYmplY3QsIHdoaWNoIGlzIHVsdGltYXRlbHkgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lmg6IEZpeCBVbmlmaWVkU291cmNlcyBmYWxsb3V0LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgQWRkZWQuIERlZmVyIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlciB0byBoYW5kbGUg
ZnVydGhlciBldmVudCBwcm9wYWdhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c3VwcG9y
dHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZFNo
b3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkSGlk
ZUV4dGVuc2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgIEZpeCBuYW1lc3BhY2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBCZSBtb3JlIHByZWNpc2UgYWJvdXQgYXNzb2NpYXRp
bmcgdGhpcyBtZXNzYWdlIHJlY2VpdmVyIHdpdGggdGhlIGluc3BlY3RvciBwYWdlJ3MgaWRlbnRp
Zmllci4KKyAgICAgICAgQWxzbywgc2F2ZSB0aGUgcGFnZSBpZGVudGlmaWVyIHNvIHRoYXQgbWV0
aG9kcyB0aGF0IG5lZWQgdG8gc2VuZCBJUEMgbWVzc2FnZXMgY2FuIHNlbmQKKyAgICAgICAgdGhl
IG1lc3NhZ2UgdG8gdGhlIGNvcnJlY3QgZGVzdGluYXRpb25JRC4KKworICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAg
ICAgICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIp
OgorICAgICAgICBBZGRlZC4KKwogMjAyMS0wMi0yMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGV4cG9zZSB0aGUgV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYXNzb2NpYXRlZCB3aXRoIFdlYiBJbnNwZWN0b3IncyBwYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmlu
ZGV4IGU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4
NzA2NTlhNDk0YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK3VzaW5nIEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJ
RCA9IFdURjo6U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmxvYXRSZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1l
ICovLCBjb25zdCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9
CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwg
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0
NzE5NmU4ZTc3OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNk
Mzk4Y2Q5MGQ3YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5h
bWUsIGNvbnN0IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAK
K2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYg
bV9jbGllbnQtPnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0
ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9u
VGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4
OTNiYjM1NTNhZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi4yNDY0MGEyZTgzMjUzOTFlMzY5
OTUxZTFiYTQ1YmM5M2EyNzlmY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0xMzYsNiArMTM2LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXlsb2FkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCk7CisgICAgdm9pZCBkaWRTaG93
RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uVGFiSUQpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVuZCBjbGFzcyBGcm9u
dGVuZE1lbnVQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGwKaW5kZXggMTdlOGY1YjhkMmFlYzg1N2RjNmY1NzE2NGFkZTdh
MTQ3Zjk3NDc2Mi4uMzJjNTc0M2EwZTYzZDU4MjM5OTgxM2RkYzMwMzBhODM0NDI0NzlmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKQEAgLTk1LDYgKzk1LDEwIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBz
dXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JfVEVM
RU1FVFJZXSB1bmRlZmluZWQgbG9nRGlhZ25vc3RpY0V2ZW50KERPTVN0cmluZyBldmVudE5hbWUs
IERPTVN0cmluZyBjb250ZW50KTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1
cHBvcnRzV2ViRXh0ZW5zaW9uczsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lP
TlNdIHVuZGVmaW5lZCBkaWRTaG93RXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwg
RE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VY
VEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNp
b25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4
dE1lbnVJdGVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCmluZGV4IDZm
YmMzN2FlYTdhMTg5M2IxZjcwMmI1NGNiYzI3MDc1OGJlOTVlNTQuLjhlYWZlMDM5MjRkNTk2YWJj
ZGRlYWJjYzFiZWVhMmVjYTNkNDFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVu
c2lvbi5qcwpAQCAtNDAsNyArNDAsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb24KICAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0
aGlzLl9kaXNwbGF5TmFtZTsgfQogfTsKIAotLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5v
bnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IuCisvLyBOb3RlOiB0aGVzZSB2YWx1ZXMgYXJlIHN5bm9ueW1vdXMgd2l0aCB0
aGUgdmFsdWVzIG9mIGVudW0gY2xhc3MgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvci4KIFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUgPSB7CiAgICAgQ29udGV4dERlc3Ryb3llZDog
IkNvbnRleHREZXN0cm95ZWQiLAogICAgIEludGVybmFsRXJyb3I6ICJJbnRlcm5hbEVycm9yIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcuanMKaW5kZXggMzNmZGZhMDBmZDQzY2MwMTlmY2QxNGNmYmU5MDE5ZjU5N2QwYTgzZS4uM2U3
ZmRlOTk1Y2EwZDlhNmMzZTRmM2RlZDJhMDRiNzVmNGU3MDk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNiArNTUs
MjYgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCisgICAgYXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKwor
ICAgICAgICBjb25zb2xlLmxvZyhgRXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRp
c3BsYXlOYW1lfSB3YXMgYXR0YWNoZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0
b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmRpZFNob3dFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVu
c2lvbklkLCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCisgICAgZGV0YWNoZWQoKQor
ICAgIHsKKyAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKKworICAgICAgICBjb25zb2xlLmxvZyhg
RXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRpc3BsYXlOYW1lfSB3YXMgZGV0YWNo
ZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9y
dHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhp
ZGVFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCB0aGlzLl9leHRlbnNp
b25UYWJJRCk7CisgICAgfQorCiAgICAgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYyOTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUu
LjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlmZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFhNjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVj
NzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRjZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAogCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwK
IAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRj
NzBmNDI2NzE2M2VjNTkuLjM1YjI4MGExMGFlMTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1
OCw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdl
TGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pT
Qzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAog
ICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBbJyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAg
J0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclRhcmdldC5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsn
Ikluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGlt
ZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwKQEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJG
aW5kT3B0aW9ucy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRl
JzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApp
bmRleCBiYjNlZWU4OGRlZmJjNGY4NzAwYzkwNTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzEx
ZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1XVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJv
clRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lvbkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2gg
KGVycm9yKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cjoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1
cm4gIkludGVybmFsRXJyb3IiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW52YWxpZFJlcXVlc3Q6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6
CiAgICAgICAgIHJldHVybiAiSW52YWxpZFJlcXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkOgogICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgor
ICAgIGNhc2UgRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0
dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Tm90SW1wbGVtZW50ZWQ6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVt
ZW50ZWQ6CiAgICAgICAgIHJldHVybiAiTm90SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3
Zjg1NzQxNmZkYzRmZmI1MjA5MmYyNTM3NzU2MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkx
ODJiNDU4NGQ4OWViZjFmY2Y3MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3Bl
Y3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1l
bnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworZW51bSBjbGFzcyBFeHRlbnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5n
IEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JF
eHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwotdXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCA9IEV4cGVjdGVkPEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj47Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5z
aW9uSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5nIEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBF
eHBlY3RlZDxFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgRXh0ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIElu
c3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVy
cm9yIDogdWludDhfdCB7CiAgICAgQ29udGV4dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9y
LAogICAgIEludmFsaWRSZXF1ZXN0LApAQCAtNTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07
CiAKLVdURjo6U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3IpOworV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRl
bnNpb25FcnJvcik7CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQs
Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Is
Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
LAotICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25G
YWlsZWQsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxl
bWVudGVkCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6Ok5vdEltcGxlbWVudGVkCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCBlNWRiNmMxOTc1NDVhMTlhMWVlZWJlY2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1
NjZmYzhmYjU4YzRlNjljZTg3MmUyZGEyMWI1NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC00MjIsNiArNDIyLDcgQEAgVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVy
SU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAog
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNz
L0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nl
c3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRkYjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3
MDBkYTFmYWE1NmVjMjNhOTY5YWYzYWExNzZiMzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00
NSwyMCArNDUsMjUgQEAgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3Qg
V1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBX
VEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246
OnNldENsaWVudChVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkK
K3sKKyAgICBtX2NsaWVudCA9IGNsaWVudC5tb3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5j
cmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBz
b3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3Vy
Y2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3Ry
aW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNv
bnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRp
b25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2Qy
ZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0Yzkz
OTdjMzMxODFhYTU3ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lv
bkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NDYsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RG
OjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVS
TCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+
JiYpOworICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlw
dChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVS
TD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9y
aWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJik7CisKKyAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVm
PEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lk
ZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgx
NDIxNTVhMGIzMjEyOGY3OTEyMzEzOGUxODgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lv
bkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3
MGIwNWI0NDMxYmMzMzdmYzJmYzkuLmMyODk3OWVkNzYyNDBlMTVlMmFlOWQ0ZjkzNTVlNmVjMmI1
NTBhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbQpAQCAtMTg2LDEzICsxODYsMTMgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rv
ci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklE
KSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4
dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxh
eU5hbWUsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25v
d24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsK
KyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1
cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3Vs
dC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3Bl
Y3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkpOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5p
bCwgd3JhcHBlcihyZXN1bHQudmFsdWUoKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0
aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CkBAIC0yMDIsOSArMjAyLDkgQEAgLSAo
dm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNw
bGF5TmFtZTooTlNTdHJpbmcgKikKIC0gKHZvaWQpdW5yZWdpc3RlckV4dGVuc2lvbjooX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJF
eHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQp
IG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQmxv
Y2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogV2ViS2l0
OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5l
cnJvcigpKX1dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLmgKaW5kZXggZDExMmEwYzRjMzNiYjYyYmY1YjM2ODMyZjgzMjBiMGYyZTYxZmZhOC4uOWJl
NjEzMDgxOGIyNzBhNThkNjNkMmNkN2M4NzQ5ZTkyZWIwYzBjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
aApAQCAtMzMsNiArMzMsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAcHJvdG9j
b2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKIFdLX0NMQVNTX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSkKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNP
YmplY3QKIApAQCAtNDUsOCArNDcsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKQogICogQHBhcmFtIHRhYkljb25VUkwgVGhlIGxvY2F0aW9uIG9mIGFuIGltYWdlIHJl
c291cmNlIHRvIHVzZSBmb3IgZGlzcGxheSBpbiB0aGUgY3JlYXRlZCB0YWIncyB0aXRsZS4KICAq
IEBwYXJhbSBzb3VyY2VVUkwgVGhlIGxvY2F0aW9uIG9mIHRoZSBtYWluIHJlc291cmNlIHRvIGxv
YWQgaW4gdGhlIG5ldyB0YWIncyBpZnJhbWUgYnJvd3NpbmcgY29udGV4dC4KICAqIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVu
IGNyZWF0aW5nIGEgdGFiIHN1Y2NlZWRzIG9yIGZhaWxzLgorICogQGRpc2N1c3Npb24gVGhlIGlu
c3BlY3RvclRhYklkZW50aWZpZXIgcHJvdmlkZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBj
YW4gYmUgdXNlZCB0byBpZGVudGlmeSB0YWJzCisgKiB0aGF0IGFyZSBwYXNzZWQgYXMgYSBwYXJh
bWV0ZXIgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgbWV0aG9kcy4KICAqLwotLSAo
dm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5T
VVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxhYmxl
IGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpY3JlYXRlVGFiV2l0
aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYkljb25VUkwg
c291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShO
U0Vycm9yICogX051bGxhYmxlLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBpbnNwZWN0b3JUYWJJZGVu
dGlmaWVyKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLyoqCiAgKiBAYWJzdHJhY3QgRXZhbHVhdGVz
IEphdmFTY3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluc3BlY3RlZCBwYWdlIG9uIGJlaGFs
ZiBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgpAQCAtNjMsNiArNjcsMTIgQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBu
b25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNpb25JRDsKIAorLyoqCisgKiBAYWJzdHJhY3QgQWxs
b3dzIHRoZSBjbGllbnQgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlmZWN5Y2xlIGV2ZW50cyB0aGF0
CisgKiBhcmlzZSBmcm9tIHdpdGhpbiBXZWIgSW5zcGVjdG9yLgorICovCitAcHJvcGVydHkgKG5v
bmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDI2N2YwZWY5MzM4Mzk1ODQz
Nzg0MGYwMGMyYmFhNzZiZmQ3OWNmNWUuLjdiY2Y1OGVjOWU1NzFjMGUxMTdkN2Y0N2Q0MWEwYmFm
MWEyMjVmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIK
ICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCkBAIC0z
Myw4ICszNiw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLQogQGltcGxlbWVudGF0aW9u
IF9XS0luc3BlY3RvckV4dGVuc2lvbgogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTQ5LDEzICs1MCwy
NiBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVybiAqX2V4dGVuc2lvbjsK
IH0KIAorLSAoaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQorewor
ICAgIHJldHVybiBfZGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KWRlbGVn
YXRlCit7CisgICAgaWYgKCFkZWxlZ2F0ZSAmJiAhX2RlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisKKyAgICBfZGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGU+KHNlbGYsIGRlbGVnYXRlKTsKK30KKwogLy8gTUFSSzogQVBJCiAKIC0gKHZvaWQp
Y3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAq
KXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwg
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVSTCwgc291
cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02Nyw5
ICs4MSw5IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNl
IGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiB7CiAgICAgT3B0aW9uYWw8VVJMPiBv
cHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBtYWtlT3B0aW9uYWwoVVJMKGZyYW1lVVJMKSkg
OiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbENvbnRleHRTZWN1cml0
eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IG1ha2VPcHRpb25hbChVUkwoY29udGV4
dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgX2V4dGVuc2lvbi0+ZXZhbHVh
dGVTY3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRT
ZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVTY3JpcHQo
c2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1cml0eU9y
aWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktp
dDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmls
KTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmU4
NDE0ZDFmMDgwZmYyNWE4NDE3NGNhM2Q4NjRiZmNkZDIxYjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBUQVJHRVRfT1NfT1NYCisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qKgorICogQGFi
c3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBo
YXMgYmVlbiBzaG93bi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVuc2lvbiB0aGF0IGNy
ZWF0ZWQgdGhlIHNob3duIHRhYi4KKyAqIEBwYXJhbSB0YWJJZGVudGlmaWVyIElkZW50aWZpZXIg
Zm9yIHRoZSB0YWIgdGhhdCB3YXMgc2hvd24uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5z
aW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkU2hvd1RhYldpdGhJZGVu
dGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKKy8qKgorICogQGFic3RyYWN0IENh
bGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBoYXMgYmVlbiBo
aWRkZW4uCisgKiBAcGFyYW0gZXh0ZW5zaW9uIFRoZSBleHRlbnNpb24gdGhhdCBjcmVhdGVkIHRo
ZSBoaWRkZW4gdGFiLgorICogQHBhcmFtIHRhYklkZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhl
IHRhYiB0aGF0IHdhcyBoaWRkZW4uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldpdGhJZGVudGlmaWVy
OihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRl
cm5hbC5oCmluZGV4IDBhMGZhYmM4YTM3MDJkMzI3Mjk2ZjU3MTY0MGVjMTcxZmM0NTExZGYuLmFl
MzE2OTg3OWM2OTdiYWYyYjAzMDE5MjEyYWJkM2NiNzA0YjZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2ltcG9ydCAiQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Okluc3BlY3RvckV4
dGVuc2lvbj4gewpAQCAtNDEsNiArNDUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4
dGVuc2lvbiAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9yYWdl
PEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBfZGVsZWdhdGU7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA4
MjA2NjNhYmQ5YjJhYjI0NzY4NGMzYzgxY2QwYWM5NTcyNjBiYzRiLi5hYTI3MGFiODlmN2VhNzQx
NmQwNTg1ODQ4YTJmODdjYjRjMTdmMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjIsMTMgKzE2MiwxMyBAQCAtICh2b2lkKV9zZXREaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPiBf
TnVsbGFibAogLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRl
bnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShOU0Vycm9yICosIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKSljb21wbGV0
aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3Jl
bW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNp
b24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRh
aW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJv
b2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOwpAQCAtMTc4LDkgKzE3OCw5IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAtICh2
b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIG1fcmVtb3RlSW5zcGVj
dG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVu
c2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9v
bCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3Rl
ckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25v
d24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2U5MGUwN2NkMjFiM2MxZGVk
Mjg3NWEyZjBmYjg3ZWQ0MzU3OWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElJ
bnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247
CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAgUmV0YWlu
UHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAg
dm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KTsKKwor
cHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVu
c2lvbkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVj
dG9yRXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92
ZXJyaWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJbnNwZWN0
b3JFeHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRyPGlkIDxf
V0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmll
ciA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVu
dGlmaWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMThmYTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4ZTJiYTdkN2M5MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0
b3JQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24sIGlkIDxfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2luc3BlY3RvckV4
dGVuc2lvbihpbnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQor
eworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRo
SWRlbnRpZmllciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3Bl
Y3RvckV4dGVuc2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0ZW5zaW9uOmRp
ZEhpZGVUYWJXaXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVuc2lvbi0+X2V4
dGVuc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
PigqdGhpcykpOworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fkluc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50KEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1faW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRp
ZFNob3dUYWJXaXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVs
ZWdhdGUgPSBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYg
KCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGluc3BlY3RvckV4
dGVuc2lvbjptX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9yRXh0ZW5zaW9u
LmdldCgpLmdldCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25UYWJJRF07Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
JiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9uOm1faW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkuZ2V0KCkgZGlk
SGlkZVRhYldpdGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBh
MWVhZDFkMjEzNzQyNzEyMTY2OWMwNDE1MjIzYmI5MWY3ODdkYWVhLi5kMjM5MTk0MmE2ZTBlMGE1
N2Y3N2MxM2EzYWE5NmUyN2U5YTYxNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgogCkBAIC0zNyw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKICAgICA6IG1faW5zcGVj
dG9yUGFnZShtYWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkKIHsKKyAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpCkBAIC00NCw2ICs0Nyw4IEBAIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoCiAgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0
b3JQYWdlLT53ZWJQYWdlSUQoKSk7CisKICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwog
CiAgICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxs
YmFja1F1ZXVlLCB7IH0pOwpAQCAtNzQsMzUgKzc5LDU0IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKIAogLy8g
QVBJCiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2Up
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVu
c2lvbklELCBkaXNwbGF5TmFtZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7
IGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSB9LCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVmUHRy
PEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb25BUElPYmplY3QgPSBBUEk6Okluc3Bl
Y3RvckV4dGVuc2lvbjo6Y3JlYXRlKGV4dGVuc2lvbklELCAqd2Vha1RoaXMpOworICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLnNldChleHRlbnNpb25JRCwgZXh0
ZW5zaW9uQVBJT2JqZWN0LmNvcHlSZWYoKSk7CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoZXh0ZW5zaW9uQVBJT2JqZWN0KSk7CisgICAgICAgIH0pOwogICAgIH0pOwog
fQogCi12b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5y
ZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0
ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2V4dGVuc2lvbkFQSU9iamVjdE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNy
ZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3Bl
Y3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVu
c2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJ
bnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwg
c291cmNlVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5z
cGVjdG9yUGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTExMCwxNSArMTM0LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRl
U2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25J
RCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYg
ZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qg
T3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZy
b250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25J
RCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlz
LT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6RXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24ge2V4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1l
VVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBh
Z2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlw
dFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlw
dENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWlscywgY29uc3QgT3B0aW9uYWw8SW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNyw2ICsx
NjEsMzcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW4KICAgICB9KTsKIH0KIAorLy8gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVu
c2lvblRhYklEKQoreworICAgIGF1dG8gaXQgPSBtX2V4dGVuc2lvbkFQSU9iamVjdE1hcC5maW5k
KGV4dGVuc2lvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9leHRlbnNpb25BUElPYmplY3RNYXAuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lv
bj4gZXh0ZW5zaW9uID0gaXQtPnZhbHVlOworICAgIGF1dG8gZXh0ZW5zaW9uQ2xpZW50ID0gZXh0
ZW5zaW9uLT5jbGllbnQoKTsKKyAgICBpZiAoIWV4dGVuc2lvbkNsaWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXh0ZW5zaW9uQ2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lv
blRhYklEKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRl
bnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQp
Cit7CisgICAgYXV0byBpdCA9IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmZpbmQoZXh0ZW5zaW9u
SUQpOworICAgIGlmIChpdCA9PSBtX2V4dGVuc2lvbkFQSU9iamVjdE1hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNp
b24gPSBpdC0+dmFsdWU7CisgICAgYXV0byBleHRlbnNpb25DbGllbnQgPSBleHRlbnNpb24tPmNs
aWVudCgpOworICAgIGlmICghZXh0ZW5zaW9uQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBleHRlbnNpb25DbGllbnQtPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDRkNWIz
NWZlNDExNmRkNThmYzY2M2VkNDFmNWI5MjU0YzE2MjA5MWQuLmE0ZmZmOTczY2JlZGE4YzI2YTAz
NmI3ZTJiY2NlNjkxNzQ0MTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIElu
c3BlY3RvckV4dGVuc2lvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKQEAgLTQ3LDExICs1MSwyMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQ
YWdlKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisK
ICAgICAvLyBBUEkuCi0gICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQm
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYg
dGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBP
cHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9u
UmVzdWx0KT4mJik7CisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYg
ZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29u
c3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7
CisKKyAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVz
c2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hv
d0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpOworI2VuZGlmCiAKICAgICAvLyBOb3RpZmljYXRpb25zLgogICAgIHZvaWQgaW5zcGVjdG9y
RnJvbnRlbmRMb2FkZWQoKTsKQEAgLTYwLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdo
ZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgV2Vha1B0cjxX
ZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4+IG1fZXh0ZW5zaW9uQVBJ
T2JqZWN0TWFwOwogCiAgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25zIHN1Y2ggYXMgcmVnaXN0
ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KICAgICAvLyBUaGVyZSdzIG5v
IHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBpcyBmdWxseSBsb2FkZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMxNmI3NTI4M2IyMTlmYjI4ZjMxZmViYzA1OGRi
OGJmYjZmNzczMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK21lc3NhZ2VzIC0+IFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIERp
ZFNob3dFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZXh0ZW5zaW9uVGFi
SUQpCisgICAgRGlkSGlkZUV4dGVuc2lvblRhYihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBl
eHRlbnNpb25UYWJJRCkKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmll
dy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKaW5kZXgg
NTljOTBlNzkzNDJmYjI4YjQwNTA2OWYwM2Q4ZWMzZGMxNjJiNGVlZC4uYjY0MjQ5YmQ4OGFiYTM0
MzE0M2Q2YmVjNWE5OGE1MmU4YzVkNTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLUHJpbnRpbmdWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Cisj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogQGNsYXNzIFdLUHJpbnRpbmdWaWV3RGF0YTsK
IEBjbGFzcyBQREZEZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDAwMzIwZjU0NTAzMzJhZmRjYTkwN2RhYTUxMmJm
ODJmOTZiZDUuLmEzMjFlMzZmN2E3YzMyNTNmMzkwOTVjYTllNGZiMTFkYmEwOTE0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUy
Miw2ICsxNTIyLDExIEBACiAJCTk5NTVBNkY1MUM3OTg2RTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9u
QmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJhY2tlbmRE
aXNwYXRjaGVycy5oICovOyB9OwogCQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyogQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3Rv
Y29sT2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3Rv
Y29sT2JqZWN0cy5oICovOyB9OworCQk5OTZCMkI5ODI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTUyNUUyNDQ4
MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk2QjJCOTkyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkIyQjk2MjVFMjQ0ODIwMDcxOTM3
OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggKi87
IH07CisJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTcyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07
CisJCTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJC
OUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi87IH07
CisJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2
QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk3ODhB
Q0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3ODhBQzkx
RjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5Nzk2NTlF
MjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3
OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi87IH07CiAJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0ODAwQjMx
QUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CkBAIC00ODg0LDYgKzQ4ODksMTQgQEAKIAkJOTk1NUE2RjExQzc5ODY2NDAwRUI2
QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5
MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkz
IC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5
Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5NzI1RTI0NDgy
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUIyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQjlDMjVF
MjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckV4
dGVuc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkJBMDI1
RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAw
IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAwIC8qIF9X
S0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CkBAIC03ODU0LDYgKzc4NjcsNyBAQAogCQkJCTkxOTc5NDBCMjNEQkM1MDMwMDI1Nzg5
MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAogCQkJCTk5QjE2NzU0MjUyQkI3RTAwMDcz
MTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQk5OUIxNjc1NjI1MkJCN0Ux
MDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5NkIyQkEwMjVF
MjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAogCQkJ
CTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmgg
Ki8sCiAJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3Bl
Y3RvckludGVybmFsLmggKi8sCkBAIC05MjAzLDYgKzkyMTcsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggKi8s
CiAJCQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLm1tICov
LAorCQkJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZS5oICovLAorCQkJCTk5NkIyQjlCMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtOTIyNCw2ICs5MjQwLDcgQEAKIAkJCQkxQzc3QzE5NTEyODhB
ODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJOTlC
MTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmNwcCAqLywKIAkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKKwkJCQk5OTZCMkI5MzI1RTI0MzE0
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0
aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3Bl
Y3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAvKiBXZWJQ
YWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC05OTc5LDYgKzk5OTYsNyBAQAogCQkJCTk5NEM2MDQ2
MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJ
OTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAgKi8s
CiAJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5o
ICovLAorCQkJCTk5NkIyQjlFMjVFMjU4MkMwMDcxOTM3OSAvKiBBUElJbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQuaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBB
UElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1
MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTEwNTQsNiArMTEw
NzIsOSBAQAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VzLmggKi8sCiAJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJOTk3
OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8sCisJCQkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQk5OTZCMkI5NjI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTk5NkIyQjk3MjVFMjQ0ODIwMDcxOTM3OSAv
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5o
ICovLAogCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MkYgLyog
V2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTExNDc1LDYgKzExNDk2
LDcgQEAKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAw
MjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIx
Njc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFF
MyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIx
Njc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0
b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTc4MCw2ICsxMTgwMiw3IEBACiAJCQkJ
Q0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MTk3OTQwNTIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwMjIzREJDNDkwMDAyNTc4OTIgLyogSW5z
cGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQjlEMjVFMjU3RkYwMDcx
OTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBCRjMw
MDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjI2Niw2ICsxMjI4OSw4IEBACiAJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0
MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5NkIyQjk5MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCMkI5
QTI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQkJFNEExMTlCNjZDNTMw
MDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTQ5LDYgKzE0MTc0LDcgQEAKIAkJCQlDMThGM0Ex
NTI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzk2NTlGMjUz
MTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk2QjJCOTgyNUUyNDQ4MjAwNzE5Mzc5
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4
QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggZDEzOTBiZmQ2ZjZiZTIzMTU2NjdjMDRmZDZiZWMz
ZDZhYzE1NTJkZC4uYzdhYzVkNmJmZjI2ODA3ZGUzZWQxYmJmYmE5MmEyYTg4ZjNkNjVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTI3Miw3ICsyNzIsMzAgQEAgdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUp
CiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUpIH0pOwogfQotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCitib29sIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dlYkV4dGVu
c2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4
dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJ
RCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkU2hvd0V4dGVuc2lvblRhYihleHRl
bnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVu
c2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkK
K3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklE
LCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQogCiBXZWJDb3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRQYWdl
KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCBiOGRhOWE5ZjhhNWE3NjZkMTM2MTIyNmFmMGM0
ZTg1NjE2NTZiM2Q1Li4wMGEzZWUwMWVkMWY1Njk0MjRhNThkNWM2NDc2NTBhNGYxOTcxYzBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYklu
c3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZpY2F0
ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0zOSw4ICs0MywxMCBAQCBjbGFzcyBGbG9hdFJl
Y3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlOworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgog
CiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAogICAgIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CkBAIC0xMDksNiArMTE1LDEyIEBAIHB1YmxpYzoKICAg
ICBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
aWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZTsgfQogICAgIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50
KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBjb25zdCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyAgICAgICAgCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRl
bnNpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgb3ZlcnJpZGU7
CisjZW5kaWYKIAogICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5j
cHAKaW5kZXggMWEyZDcxMDBhNWViMjhmNzVhODQ1ZWYyOWJhMDE5MjUyNzM5Y2NlMy4uZWYyZTBm
OTYyYWU4YzI2YjAzOGYzNjI1NTY5MGUzYjc3Yjc4MzFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM1NSw3
ICszNTUsMzAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGUoYm9vbCBhdmFpbGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlz
cGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUp
IH0pOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFdlYkluc3BlY3RvclVJOjpz
dXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVuc2lv
bkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2V4dGVuc2lvbkNvbnRy
b2xsZXItPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsK
K30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKQoreworICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4dGVu
c2lvbkNvbnRyb2xsZXItPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lv
blRhYklEKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIHZv
aWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA5OTVjMjIyNDVi
ZmZhNGU1ZGEyODZmM2RjYjY2NjEwNTMzMmRhODIxLi42MjllNDVkYzZmODBiYzIwMjUwN2ZiYWE3
ODViNDVlMTY0NzIxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kSG9zdDsKQEAgLTE0Nyw2ICsxNTEsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKSBvdmVycmlkZSB7IHJldHVybiBtX2RpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlOyB9CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZlbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSYpIG92ZXJyaWRlOwogI2VuZGlmCisgICAgICAgIAor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBib29sIHN1cHBvcnRzV2ViRXh0
ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRl
OworI2VuZGlmCiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYg
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3Bh
dGNoZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApp
bmRleCAzYjliZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi5lYTBhNTFlODNh
NzQxNmJmZmQyYWY2NzIzNmVjM2ViYjI5OGRkNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTQ4
LDM2ICs0OSwzOCBAQCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbgogICAgIGF1dG8qIHBhZ2UgPSBp
bnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBX
ZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOworICAgIG1f
aW5zcGVjdG9yUGFnZUlkZW50aWZpZXIgPSBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlk
ZW50aWZpZXIoKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIsICp0aGlzKTsKIH0KIAog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOwogfQog
Ci1PcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25S
ZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJl
c3VsdCkKK09wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFs
dWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJl
c3VsdCByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgc3dpdGNoIChyZXN1
bHQuZXJyb3IoKSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgotICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95
ZWQ7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uRXJyb3I6OkV4ZWN1dGlvblN1c3BlbmRlZDoKLSAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgICAgICBj
YXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVy
cm9yOjpJbnRlcm5hbEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NF
UlQobV9mcm9udGVuZENsaWVudCk7CiAgICAgYXV0byBnbG9iYWxPYmplY3QgPSBtX2Zyb250ZW5k
Q2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVjdCgpOwog
ICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwogCiAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9u
ID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9yRXhjZXB0aW9uLmhhc192YWx1ZSgp
KSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50ZXJlZCBleGNlcHRpb24gd2hpbGUg
ZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2YWx1ZU9yRXhjZXB0aW9uLmVycm9y
KCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYgdGhlIGV2
YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0aGUgZnJvbnRlbmQgcmV0dXJuZWQgYW4gZXJy
b3Igc3RyaW5nLgpAQCAtODcsMTggKzkwLDE4IEBAIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjCiAg
ICAgaWYgKHNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgYXV0byByZXN1bHRTdHJp
bmcgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBpZiAo
cmVzdWx0U3RyaW5nID09ICJDb250ZXh0RGVzdHJveWVkIl9zKQotICAgICAgICAgICAgcmV0dXJu
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CiAgICAg
ICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJyb3IiX3MpCi0gICAgICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICAg
ICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVlc3QiX3MpCi0gICAgICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OworICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OwogICAg
ICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWlsZWQiX3MpCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDsK
KyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRp
b25GYWlsZWQ7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIk5vdEltcGxlbWVudGVkIl9z
KQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpOb3RJbXBsZW1l
bnRlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpOb3RJ
bXBsZW1lbnRlZDsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAKICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2LDEwICsxMDksMTAgQEAgT3B0aW9uYWw8SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
cGFyc2VJbnNwZWMKIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBt
ZXNzYWdlcy4KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxi
b29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
ZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOSw3ICsx
MjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaQogICAgIH07CiAgICAgbV9mcm9udGVuZENs
aWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFz
eW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFs
dWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTEzMiwxNyArMTM1LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYg
ZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFZlY3Rv
cjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVu
c2lvbklEKSB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigp
LmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lvbiJfcywg
V1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NywxMCArMTcwLDEwIEBAIEpT
Qzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFwRXZh
bHVhdGlvblJlc3VsdEFzT2JqZWN0CiAgICAgcmV0dXJuIHZhbHVlT3JFeGNlcHRpb24udmFsdWUo
KS5nZXRPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0
ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBj
b25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRl
bnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yRXh0CiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3Bh
dGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZvckV4dGVu
c2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NSwxNCArMTk4LDE0IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1Ro
aXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAo
IW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQg
bm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0
ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1f
ZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmb3VuZFByb3BlcnR5ID0gb2JqZWN0UmVzdWx0
LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhm
cm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImV4dGVuc2lvblRhYklEIl9zKSk7CiAgICAgICAg
IGlmICghZm91bmRQcm9wZXJ0eSB8fCAhZm91bmRQcm9wZXJ0eS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMCwxMCArMjEzLDEwIEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291
cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYg
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNj
cmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBP
cHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBj
b25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVl
c3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzMsMTMgKzIzNiwxMyBAQCB2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElE
aXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250
ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJ
RGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGlmICghZnJvbnRl
bmRHbG9iYWxPYmplY3QpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RG
OjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25S
ZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAg
ICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1
cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJ
bnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlQocmVzdWx0LnZhbHVlKCkpOwpAQCAtMjYyLDcgKzI2NSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvclBheWxvYWQgPSBvYmplY3RSZXN1
bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3IiX3MpKTsKICAgICAgICAgaWYgKCFl
cnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgaWYgKCFlcnJvclBheWxv
YWQuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjczLDcgKzI3Niw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHRQYXlsb2FkID0gb2JqZWN0UmVz
dWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgInJlc3VsdCJfcykpOwogICAgICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZnJvbnRlbmRHbG9iYWxPYmplY3QsIHJlc3VsdFBheWxv
YWQpOwogICAgICAgICBpZiAoIXNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODEsNiArMjg0LDE2IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
JiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRhYiB7IGV4dGVuc2lvbklELCBleHRl
bnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRIaWRlRXh0ZW5zaW9uVGFiIHsgZXh0ZW5z
aW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4
IGYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcuLjI0MjE4NGVlZTNkZmI0
NmMxMTg5ZWJkNjMwOGQyODFmMzRjNzkyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC02MywxNiArNjQs
MjMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgotICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPik+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qg
T3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1
cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJO
YW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxV
Ukw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNv
bnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworCisgICAgLy8g
Q2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyAgICB2b2lkIGRp
ZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIEpTQzo6
SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwotICAgIE9wdGlvbmFs
PEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0KTsKKyAgICBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsK
IAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRl
bmRDbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pbnNwZWN0b3JQYWdlSWRl
bnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBkMTc0MDYw
MjhmYWYzN2I1MDY0MTQyNWZiNjBkOGZmMGUyM2M0NDU0Li42ZTgwYzcwZGZjYjVkYmI0NTgyMTUx
ZDA5YjU2NTM0ZjMyMzU5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDExIEBACiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgUmVnaXN0ZXJFeHRlbnNpb24o
U3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3RlZDxib29s
LCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgVW5y
ZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxib29sLCBX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAgUmVnaXN0
ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChF
eHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisg
ICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxi
b29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiAKLSAgICBDcmVh
dGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFiTmFtZSwgVVJM
IHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcsIFdlYktpdDo6
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBFdmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRTb3VyY2UsIE9w
dGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5T3JpZ2lu
LCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkgLT4gKElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBk
ZXRhaWxzLCBPcHRpb25hbDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikg
QXN5bmMKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJp
bmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxT
dHJpbmcsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICBFdmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRT
b3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkgLT4gKElQ
Qzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJv
cikgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>
<flag name="commit-queue"
          id="439921"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421153</attachid>
            <date>2021-02-21 15:15:23 -0800</date>
            <delta_ts>2021-02-21 17:49:01 -0800</delta_ts>
            <desc>Patch v1.1</desc>
            <filename>bug-222252-20210221151522.patch</filename>
            <type>text/plain</type>
            <size>108012</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4MWM4MzA2ZjZlMDkz
M2E4NWVhZTYzNWYzZDVhNTFiN2M5ZTM3ZC4uNjZkMWYyNjI3ZTQwNzA3ZDY0NWMwZTNiYTExYjcx
MDZiYzljODJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIwICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEltYWdlIHNo
b3VsZCByZXBvcnQgdGhlIGVtYmVkZGVkIGFjY2Vzc2liaWxpdHkgZGVzY3JpcHRpb24gaWYgYXZh
aWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjODUzNjVjMmYxMWJkZjY3ZThiZTVh
NmQ4MDEyMGNkMDMwN2UzY2VjLi5lNjQwMGIxNThiOGZmZWNhODY3OGNhYmFmMWM3NjVlMGFjMDlm
ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0y
MSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNw
ZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlh
IF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcx
MjA2Njg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzOiBVcGRhdGUg
Y29tbWVudCBmb3IgbmFtZXNwYWNlIGNoYW5nZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQp
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLmRldGFjaGVkKToKKyAgICAgICAgV2hlbiBhbiBleHRlbnNpb24gdGFiIGlzIHNob3duIG9y
IGhpZGRlbiwgbm90aWZ5IHRoZSBmcm9udGVuZCBob3N0IGFib3V0IHRoZSBldmVudC4KKwogMjAy
MS0wMi0xOSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDU1MgR3JpZCBJbnNwZWN0b3I6IHVzZSBhIGNvbG9yIHBhbGV0dGUg
Zm9yIGRlZmF1bHQgZ3JpZCBvdmVybGF5IGNvbG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZmYxZWJhMjYxYjQw
ZGNmNWVhOTQyOWYzNTA2ZTg1YjMxZjcxNzMzLi5mNWYyYTAzMWI3OTI1ZTlkYjMxYjE2YzViNTll
YmZlNDYzNzI4NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAyMS0wMi0yMSAgQkog
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6
IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlhIF9XS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjA2Njg1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjbGllbnRzIHRvIHJlY2VpdmUgZXh0ZW5zaW9uIGxpZmVj
eWNsZSBldmVudHMuIEZvciBub3cgdGhpcyBpbmNsdWRlcworICAgICAgICBleHRlbnNpb24gdGFi
IHNob3duL2hpZGRlbiwgYnV0IHdpbGwgZXZlbnR1YWxseSBpbmNsdWRlIHBhZ2UgbmF2aWdhdGlv
bnMgYW5kIG90aGVyIGV2ZW50cyBleHBvc2VkCisgICAgICAgIHZpYSBXZWIgRXh0ZW5zaW9ucyBB
UEkuCisKKyAgICAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCBhdCB0aGUgV2ViS2l0IGxldmVsIHZp
YSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgbWV0aG9kcy4gVGhpcyBnZXRzIHBpcGVkIHRv
CisgICAgICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IHZpYSBJUEMs
IHdoaWNoIHRoZW4gcGFzc2VzIG9uIHRoZSBldmVudCB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS4KKworICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSBpcyBhIGRl
bGVnYXRlIG9mIF9XS0luc3BlY3RvckV4dGVuc2lvbi4gSXQncyBmb3IgcmVjZWl2aW5nIGxpZmVj
eWNsZSBldmVudHMsIGFuZAorICAgICAgICBpcyBpbXBsZW1lbnRlZCBzaW1pbGFybHkgdG8gX1dL
SW5zcGVjdG9yRGVsZWdhdGUuIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
IG5vdyBrZWVwcyBhIG1hcCBvZgorICAgICAgICBleHRlbnNpb24gQVBJIG9iamVjdHMgc28gdGhh
dCBpdCBjYW4gY2FsbCBvdXQgdG8gdGhlIHRoZSBhcHByb3ByaWF0ZSBleHRlbnNpb24gQVBJIG9i
amVjdCdzIGNsaWVudC9kZWxlZ2F0ZS4KKworICAgICAgICBMYXN0bHksIHNpbmNlIHRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBhdCB0aGUgV2ViQ29yZSBsZXZl
bCwgSSBkZWNpZGVkIHRvIG1vdmUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9mIEluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmggdG8gdGhlIEluc3BlY3RvciBuYW1lc3BhY2UuIEl0IG1hZGUgbW9yZSBz
ZW5zZSB0aGFuIHR5cGluZyBvdXQgV2ViQ29yZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IKKyAg
ICAgICAgYW5kIHRoZSBsaWtlLiBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCB0aGUgc3RyaW5nIHR5
cGUgYWxpYXNlcyBJbnNwZWN0b3I6OkV4dGVuc2lvbklEIGFuZCBJbnNwZWN0b3I6RXh0ZW5zaW9u
VGFiSUQgYXJlCisgICAgICAgIG5vdyBkZWZpbmVkIGluIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmguCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGQgZ2VuZXJhdGVkIGZpbGVzIGZv
ciBuZXcgbWVzc2FnZSByZWNlaXZlci4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBu
ZXcgZmlsZXMgZm9yIGluc3BlY3RvciBleHRlbnNpb24gY2xpZW50L2RlbGVnYXRlIGJvaWxlcnBs
YXRlIGNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpleHRl
bnNpb25FcnJvclRvU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlc2UgdHlwZXMgYW5kIGhl
bHBlcnMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uOjpzZXRDbGllbnQpOiBBZGQgYSBjbGllbnQgbWVtYmVyIHdoaWNoIGlzIHVzZWQgdG8gY2Fs
bCBvdXQgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuCisgICAgICAgIChBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlVGFiKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHQpOiBGaXggbmFtZXNwYWNlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmguCisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6
ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYik6CisgICAgICAgIEFkZGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3Bl
Y3RvciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHVucmVnaXN0ZXJFeHRlbnNpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEFkanVzdCB0byBuZXcgdHlwZSBzaWduYXR1cmUgdGhh
dCByZXR1cm5zIGFuIGluaXRpYWxpemVkIEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHVucmVnaXN0
ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEFkanVzdCB0byBuZXcg
dHlwZSBzaWduYXR1cmUgdGhhdCByZXR1cm5zIGFuIGluaXRpYWxpemVkIEFQSTo6SW5zcGVjdG9y
RXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbi5oOiBBZGQgdGhlIGRlbGVnYXRlIHByb3BlcnR5IGFuZCB1
cGRhdGUgZG9jdW1lbnRhdGlvbiB0byBtZW50aW9uIGl0cyBpbnRlbmRlZCB1c2FnZS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg6
IEFkZCBkZWxlZ2F0ZSBzdG9yYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24g
ZGVsZWdhdGVdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRl
Ol0pOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24g
Y3JlYXRlVGFiV2l0aE5hbWU6dGFiSWNvblVSTDpzb3VyY2VVUkw6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gZXZh
bHVhdGVTY3JpcHQ6ZnJhbWVVUkw6Y29udGV4dFNlY3VyaXR5T3JpZ2luOnVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6ZGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xp
ZW50OjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Ojp+SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6Cisg
ICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVGhpcyBp
cyBPYmpDLXRvLUMrKyBicmlkZ2UgY29kZSB0byBjb25uZWN0IEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50ICh1c2VkIGJ5IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
KQorICAgICAgICB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSAodXNlZCBieSBjbGll
bnQgY29kZSkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICBNYWtlIHRoaXMgY2xhc3MgYW4gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNpb24gbGlmZWN5Y2xl
IGV2ZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToK
KyAgICAgICAgTWFrZSB0aGlzIGNsYXNzIGFuIElQQzo6TWVzc2FnZVJlY2VpdmVyLiBJdCByZWNl
aXZlcyBtZXNzYWdlcyBmb3IgZXh0ZW5zaW9uIGxpZmVjeWNsZSBldmVudHMuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVy
RXh0ZW5zaW9uKToKKyAgICAgICAgRXhwYW5kIHRoaXMgY29kZSBvdXQgc28gdGhhdCB3ZSBjYW4g
c2F2ZSBBUEk6Okluc3BlY3RvckV4dGVuc2lvbiBpbnN0YW5jZXMgaW50byBvdXIgb3duIG1hcAor
ICAgICAgICBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgY29tcGxldGlvbkhhbmRsZXIuIFRoaXMg
bWFwIGtlZXBzIHN0cm9uZyByZWZlcmVuY2VzIHRvIHRoZSBleHRlbnNpb24KKyAgICAgICAgQVBJ
IG9iamVjdHMgc2luY2UgdGhleSBuZWVkIHRvIGJlIHVzZWQgdG8gc2VuZCBldmVudHMgYXQgYW4g
YXJiaXRyYXJ5IHRpbWUgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgUHJldmlvdXNseSwgdGhleSB3
ZXJlIGtlcHQgYWxpdmUgKG9yIG5vdCkgYnkgdGhlIEFQSSBjbGllbnQuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24pOgorICAgICAgICBXaGVuIHRoZSBleHRlbnNpb24gaXMgbm8gbG9uZ2VyIHJlZ2lz
dGVyZWQsIHJlbW92ZSB0aGUgYXNzb2NpYXRlZCBleHRlbnNpb24gQVBJIG9iamVjdCAoYW5kCisg
ICAgICAgIG91ciBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0KS4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6IEZpeCBu
YW1lc3BhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToK
KyAgICAgICAgQWRkZWQuIFRyeSB0byBsb29rIHVwIHRoZSBhc3NvY2lhdGVkIEFQSSBvYmplY3Qg
Zm9yIHRoZSBleHRlbnNpb24gYW5kIGZvcndhcmQgdGhlIGV2ZW50IHRvCisgICAgICAgIHRoZSBj
bGllbnQgb2YgdGhlIEFQSSBvYmplY3QsIHdoaWNoIGlzIHVsdGltYXRlbHkgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lmg6IEZpeCBVbmlmaWVkU291cmNlcyBmYWxsb3V0LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgQWRkZWQuIERlZmVyIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlciB0byBoYW5kbGUg
ZnVydGhlciBldmVudCBwcm9wYWdhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c3VwcG9y
dHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZFNo
b3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkSGlk
ZUV4dGVuc2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgIEZpeCBuYW1lc3BhY2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBCZSBtb3JlIHByZWNpc2UgYWJvdXQgYXNzb2NpYXRp
bmcgdGhpcyBtZXNzYWdlIHJlY2VpdmVyIHdpdGggdGhlIGluc3BlY3RvciBwYWdlJ3MgaWRlbnRp
Zmllci4KKyAgICAgICAgQWxzbywgc2F2ZSB0aGUgcGFnZSBpZGVudGlmaWVyIHNvIHRoYXQgbWV0
aG9kcyB0aGF0IG5lZWQgdG8gc2VuZCBJUEMgbWVzc2FnZXMgY2FuIHNlbmQKKyAgICAgICAgdGhl
IG1lc3NhZ2UgdG8gdGhlIGNvcnJlY3QgZGVzdGluYXRpb25JRC4KKworICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAg
ICAgICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIp
OgorICAgICAgICBBZGRlZC4KKwogMjAyMS0wMi0yMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGV4cG9zZSB0aGUgV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYXNzb2NpYXRlZCB3aXRoIFdlYiBJbnNwZWN0b3IncyBwYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmlu
ZGV4IGU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4
NzA2NTlhNDk0YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK3VzaW5nIEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJ
RCA9IFdURjo6U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmxvYXRSZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1l
ICovLCBjb25zdCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9
CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwg
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0
NzE5NmU4ZTc3OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNk
Mzk4Y2Q5MGQ3YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5h
bWUsIGNvbnN0IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAK
K2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYg
bV9jbGllbnQtPnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0
ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9u
VGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4
OTNiYjM1NTNhZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi45YWJhODZhNzM0MWQ3NjJmZGU3
N2U5MjVlYjY5NjI3OGM2MTBkODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0xMzYsNiArMTM2LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXlsb2FkKTsKICNlbmRpZgogCisgICAgYm9vbCBzdXBwb3J0c1dlYkV4dGVuc2lv
bnMoKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdm9pZCBkaWRTaG93
RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uVGFiSUQpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVuZCBjbGFzcyBGcm9u
dGVuZE1lbnVQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGwKaW5kZXggMTdlOGY1YjhkMmFlYzg1N2RjNmY1NzE2NGFkZTdh
MTQ3Zjk3NDc2Mi4uMzJjNTc0M2EwZTYzZDU4MjM5OTgxM2RkYzMwMzBhODM0NDI0NzlmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKQEAgLTk1LDYgKzk1LDEwIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBz
dXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JfVEVM
RU1FVFJZXSB1bmRlZmluZWQgbG9nRGlhZ25vc3RpY0V2ZW50KERPTVN0cmluZyBldmVudE5hbWUs
IERPTVN0cmluZyBjb250ZW50KTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1
cHBvcnRzV2ViRXh0ZW5zaW9uczsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lP
TlNdIHVuZGVmaW5lZCBkaWRTaG93RXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwg
RE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VY
VEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNp
b25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4
dE1lbnVJdGVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCmluZGV4IDZm
YmMzN2FlYTdhMTg5M2IxZjcwMmI1NGNiYzI3MDc1OGJlOTVlNTQuLjhlYWZlMDM5MjRkNTk2YWJj
ZGRlYWJjYzFiZWVhMmVjYTNkNDFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVu
c2lvbi5qcwpAQCAtNDAsNyArNDAsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb24KICAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0
aGlzLl9kaXNwbGF5TmFtZTsgfQogfTsKIAotLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5v
bnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IuCisvLyBOb3RlOiB0aGVzZSB2YWx1ZXMgYXJlIHN5bm9ueW1vdXMgd2l0aCB0
aGUgdmFsdWVzIG9mIGVudW0gY2xhc3MgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvci4KIFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUgPSB7CiAgICAgQ29udGV4dERlc3Ryb3llZDog
IkNvbnRleHREZXN0cm95ZWQiLAogICAgIEludGVybmFsRXJyb3I6ICJJbnRlcm5hbEVycm9yIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcuanMKaW5kZXggMzNmZGZhMDBmZDQzY2MwMTlmY2QxNGNmYmU5MDE5ZjU5N2QwYTgzZS4uM2U3
ZmRlOTk1Y2EwZDlhNmMzZTRmM2RlZDJhMDRiNzVmNGU3MDk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNiArNTUs
MjYgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCisgICAgYXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKwor
ICAgICAgICBjb25zb2xlLmxvZyhgRXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRp
c3BsYXlOYW1lfSB3YXMgYXR0YWNoZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0
b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmRpZFNob3dFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVu
c2lvbklkLCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCisgICAgZGV0YWNoZWQoKQor
ICAgIHsKKyAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKKworICAgICAgICBjb25zb2xlLmxvZyhg
RXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRpc3BsYXlOYW1lfSB3YXMgZGV0YWNo
ZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9y
dHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhp
ZGVFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCB0aGlzLl9leHRlbnNp
b25UYWJJRCk7CisgICAgfQorCiAgICAgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYyOTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUu
LjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlmZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFhNjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVj
NzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRjZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAogCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwK
IAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRj
NzBmNDI2NzE2M2VjNTkuLjM1YjI4MGExMGFlMTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1
OCw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdl
TGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pT
Qzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAog
ICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBbJyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAg
J0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclRhcmdldC5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsn
Ikluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGlt
ZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwKQEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJG
aW5kT3B0aW9ucy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRl
JzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApp
bmRleCBiYjNlZWU4OGRlZmJjNGY4NzAwYzkwNTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzEx
ZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1XVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJv
clRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lvbkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2gg
KGVycm9yKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cjoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1
cm4gIkludGVybmFsRXJyb3IiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW52YWxpZFJlcXVlc3Q6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6
CiAgICAgICAgIHJldHVybiAiSW52YWxpZFJlcXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkOgogICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgor
ICAgIGNhc2UgRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0
dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Tm90SW1wbGVtZW50ZWQ6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVt
ZW50ZWQ6CiAgICAgICAgIHJldHVybiAiTm90SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3
Zjg1NzQxNmZkYzRmZmI1MjA5MmYyNTM3NzU2MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkx
ODJiNDU4NGQ4OWViZjFmY2Y3MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3Bl
Y3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1l
bnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworZW51bSBjbGFzcyBFeHRlbnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5n
IEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JF
eHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwotdXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCA9IEV4cGVjdGVkPEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj47Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5z
aW9uSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5nIEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBF
eHBlY3RlZDxFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgRXh0ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIElu
c3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVy
cm9yIDogdWludDhfdCB7CiAgICAgQ29udGV4dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9y
LAogICAgIEludmFsaWRSZXF1ZXN0LApAQCAtNTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07
CiAKLVdURjo6U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3IpOworV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRl
bnNpb25FcnJvcik7CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQs
Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Is
Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
LAotICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25G
YWlsZWQsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxl
bWVudGVkCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6Ok5vdEltcGxlbWVudGVkCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCBlNWRiNmMxOTc1NDVhMTlhMWVlZWJlY2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1
NjZmYzhmYjU4YzRlNjljZTg3MmUyZGEyMWI1NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC00MjIsNiArNDIyLDcgQEAgVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVy
SU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAog
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNz
L0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nl
c3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRkYjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3
MDBkYTFmYWE1NmVjMjNhOTY5YWYzYWExNzZiMzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00
NSwyMCArNDUsMjUgQEAgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3Qg
V1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBX
VEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246
OnNldENsaWVudChVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkK
K3sKKyAgICBtX2NsaWVudCA9IGNsaWVudC5tb3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5j
cmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBz
b3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3Vy
Y2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3Ry
aW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNv
bnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRp
b25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2Qy
ZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0Yzkz
OTdjMzMxODFhYTU3ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lv
bkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NDYsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RG
OjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVS
TCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+
JiYpOworICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlw
dChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVS
TD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9y
aWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJik7CisKKyAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVm
PEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lk
ZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgx
NDIxNTVhMGIzMjEyOGY3OTEyMzEzOGUxODgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lv
bkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3
MGIwNWI0NDMxYmMzMzdmYzJmYzkuLmMyODk3OWVkNzYyNDBlMTVlMmFlOWQ0ZjkzNTVlNmVjMmI1
NTBhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbQpAQCAtMTg2LDEzICsxODYsMTMgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rv
ci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklE
KSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4
dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxh
eU5hbWUsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25v
d24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsK
KyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1
cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3Vs
dC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3Bl
Y3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkpOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5p
bCwgd3JhcHBlcihyZXN1bHQudmFsdWUoKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0
aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CkBAIC0yMDIsOSArMjAyLDkgQEAgLSAo
dm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNw
bGF5TmFtZTooTlNTdHJpbmcgKikKIC0gKHZvaWQpdW5yZWdpc3RlckV4dGVuc2lvbjooX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJF
eHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQp
IG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQmxv
Y2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogV2ViS2l0
OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5l
cnJvcigpKX1dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLmgKaW5kZXggZDExMmEwYzRjMzNiYjYyYmY1YjM2ODMyZjgzMjBiMGYyZTYxZmZhOC4uOWJl
NjEzMDgxOGIyNzBhNThkNjNkMmNkN2M4NzQ5ZTkyZWIwYzBjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
aApAQCAtMzMsNiArMzMsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAcHJvdG9j
b2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKIFdLX0NMQVNTX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSkKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNP
YmplY3QKIApAQCAtNDUsOCArNDcsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKQogICogQHBhcmFtIHRhYkljb25VUkwgVGhlIGxvY2F0aW9uIG9mIGFuIGltYWdlIHJl
c291cmNlIHRvIHVzZSBmb3IgZGlzcGxheSBpbiB0aGUgY3JlYXRlZCB0YWIncyB0aXRsZS4KICAq
IEBwYXJhbSBzb3VyY2VVUkwgVGhlIGxvY2F0aW9uIG9mIHRoZSBtYWluIHJlc291cmNlIHRvIGxv
YWQgaW4gdGhlIG5ldyB0YWIncyBpZnJhbWUgYnJvd3NpbmcgY29udGV4dC4KICAqIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVu
IGNyZWF0aW5nIGEgdGFiIHN1Y2NlZWRzIG9yIGZhaWxzLgorICogQGRpc2N1c3Npb24gVGhlIGlu
c3BlY3RvclRhYklkZW50aWZpZXIgcHJvdmlkZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBj
YW4gYmUgdXNlZCB0byBpZGVudGlmeSB0YWJzCisgKiB0aGF0IGFyZSBwYXNzZWQgYXMgYSBwYXJh
bWV0ZXIgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgbWV0aG9kcy4KICAqLwotLSAo
dm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5T
VVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxhYmxl
IGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpY3JlYXRlVGFiV2l0
aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYkljb25VUkwg
c291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShO
U0Vycm9yICogX051bGxhYmxlLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBpbnNwZWN0b3JUYWJJZGVu
dGlmaWVyKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLyoqCiAgKiBAYWJzdHJhY3QgRXZhbHVhdGVz
IEphdmFTY3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluc3BlY3RlZCBwYWdlIG9uIGJlaGFs
ZiBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgpAQCAtNjMsNiArNjcsMTIgQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBu
b25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNpb25JRDsKIAorLyoqCisgKiBAYWJzdHJhY3QgQWxs
b3dzIHRoZSBjbGllbnQgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlmZWN5Y2xlIGV2ZW50cyB0aGF0
CisgKiBhcmlzZSBmcm9tIHdpdGhpbiBXZWIgSW5zcGVjdG9yLgorICovCitAcHJvcGVydHkgKG5v
bmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDI2N2YwZWY5MzM4Mzk1ODQz
Nzg0MGYwMGMyYmFhNzZiZmQ3OWNmNWUuLjdiY2Y1OGVjOWU1NzFjMGUxMTdkN2Y0N2Q0MWEwYmFm
MWEyMjVmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIK
ICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCkBAIC0z
Myw4ICszNiw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLQogQGltcGxlbWVudGF0aW9u
IF9XS0luc3BlY3RvckV4dGVuc2lvbgogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTQ5LDEzICs1MCwy
NiBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVybiAqX2V4dGVuc2lvbjsK
IH0KIAorLSAoaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQorewor
ICAgIHJldHVybiBfZGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KWRlbGVn
YXRlCit7CisgICAgaWYgKCFkZWxlZ2F0ZSAmJiAhX2RlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisKKyAgICBfZGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGU+KHNlbGYsIGRlbGVnYXRlKTsKK30KKwogLy8gTUFSSzogQVBJCiAKIC0gKHZvaWQp
Y3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAq
KXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwg
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVSTCwgc291
cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02Nyw5
ICs4MSw5IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNl
IGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiB7CiAgICAgT3B0aW9uYWw8VVJMPiBv
cHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBtYWtlT3B0aW9uYWwoVVJMKGZyYW1lVVJMKSkg
OiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbENvbnRleHRTZWN1cml0
eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IG1ha2VPcHRpb25hbChVUkwoY29udGV4
dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgX2V4dGVuc2lvbi0+ZXZhbHVh
dGVTY3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRT
ZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVTY3JpcHQo
c2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1cml0eU9y
aWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktp
dDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmls
KTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmU4
NDE0ZDFmMDgwZmYyNWE4NDE3NGNhM2Q4NjRiZmNkZDIxYjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBUQVJHRVRfT1NfT1NYCisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qKgorICogQGFi
c3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBo
YXMgYmVlbiBzaG93bi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVuc2lvbiB0aGF0IGNy
ZWF0ZWQgdGhlIHNob3duIHRhYi4KKyAqIEBwYXJhbSB0YWJJZGVudGlmaWVyIElkZW50aWZpZXIg
Zm9yIHRoZSB0YWIgdGhhdCB3YXMgc2hvd24uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5z
aW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkU2hvd1RhYldpdGhJZGVu
dGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKKy8qKgorICogQGFic3RyYWN0IENh
bGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBoYXMgYmVlbiBo
aWRkZW4uCisgKiBAcGFyYW0gZXh0ZW5zaW9uIFRoZSBleHRlbnNpb24gdGhhdCBjcmVhdGVkIHRo
ZSBoaWRkZW4gdGFiLgorICogQHBhcmFtIHRhYklkZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhl
IHRhYiB0aGF0IHdhcyBoaWRkZW4uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldpdGhJZGVudGlmaWVy
OihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRl
cm5hbC5oCmluZGV4IDBhMGZhYmM4YTM3MDJkMzI3Mjk2ZjU3MTY0MGVjMTcxZmM0NTExZGYuLmFl
MzE2OTg3OWM2OTdiYWYyYjAzMDE5MjEyYWJkM2NiNzA0YjZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2ltcG9ydCAiQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Okluc3BlY3RvckV4
dGVuc2lvbj4gewpAQCAtNDEsNiArNDUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4
dGVuc2lvbiAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9yYWdl
PEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBfZGVsZWdhdGU7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA4
MjA2NjNhYmQ5YjJhYjI0NzY4NGMzYzgxY2QwYWM5NTcyNjBiYzRiLi5hYTI3MGFiODlmN2VhNzQx
NmQwNTg1ODQ4YTJmODdjYjRjMTdmMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjIsMTMgKzE2MiwxMyBAQCAtICh2b2lkKV9zZXREaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPiBf
TnVsbGFibAogLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRl
bnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShOU0Vycm9yICosIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKSljb21wbGV0
aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3Jl
bW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNp
b24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRh
aW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJv
b2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOwpAQCAtMTc4LDkgKzE3OCw5IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAtICh2
b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIG1fcmVtb3RlSW5zcGVj
dG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVu
c2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9v
bCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3Rl
ckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25v
d24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2U5MGUwN2NkMjFiM2MxZGVk
Mjg3NWEyZjBmYjg3ZWQ0MzU3OWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElJ
bnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247
CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAgUmV0YWlu
UHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAg
dm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KTsKKwor
cHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVu
c2lvbkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVj
dG9yRXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92
ZXJyaWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJbnNwZWN0
b3JFeHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRyPGlkIDxf
V0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmll
ciA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVu
dGlmaWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMThmYTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4ZTJiYTdkN2M5MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0
b3JQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24sIGlkIDxfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2luc3BlY3RvckV4
dGVuc2lvbihpbnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQor
eworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRo
SWRlbnRpZmllciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3Bl
Y3RvckV4dGVuc2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0ZW5zaW9uOmRp
ZEhpZGVUYWJXaXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVuc2lvbi0+X2V4
dGVuc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
PigqdGhpcykpOworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fkluc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50KEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1faW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRp
ZFNob3dUYWJXaXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVs
ZWdhdGUgPSBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYg
KCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGluc3BlY3RvckV4
dGVuc2lvbjptX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9yRXh0ZW5zaW9u
LmdldCgpLmdldCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25UYWJJRF07Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
JiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9uOm1faW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkuZ2V0KCkgZGlk
SGlkZVRhYldpdGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBh
MWVhZDFkMjEzNzQyNzEyMTY2OWMwNDE1MjIzYmI5MWY3ODdkYWVhLi5kMjM5MTk0MmE2ZTBlMGE1
N2Y3N2MxM2EzYWE5NmUyN2U5YTYxNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgogCkBAIC0zNyw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKICAgICA6IG1faW5zcGVj
dG9yUGFnZShtYWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkKIHsKKyAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpCkBAIC00NCw2ICs0Nyw4IEBAIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoCiAgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0
b3JQYWdlLT53ZWJQYWdlSUQoKSk7CisKICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwog
CiAgICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxs
YmFja1F1ZXVlLCB7IH0pOwpAQCAtNzQsMzUgKzc5LDU0IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKIAogLy8g
QVBJCiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2Up
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVu
c2lvbklELCBkaXNwbGF5TmFtZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7
IGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSB9LCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVmUHRy
PEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb25BUElPYmplY3QgPSBBUEk6Okluc3Bl
Y3RvckV4dGVuc2lvbjo6Y3JlYXRlKGV4dGVuc2lvbklELCAqd2Vha1RoaXMpOworICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLnNldChleHRlbnNpb25JRCwgZXh0
ZW5zaW9uQVBJT2JqZWN0LmNvcHlSZWYoKSk7CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoZXh0ZW5zaW9uQVBJT2JqZWN0KSk7CisgICAgICAgIH0pOwogICAgIH0pOwog
fQogCi12b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5y
ZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0
ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2V4dGVuc2lvbkFQSU9iamVjdE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNy
ZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3Bl
Y3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVu
c2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJ
bnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwg
c291cmNlVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5z
cGVjdG9yUGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTExMCwxNSArMTM0LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRl
U2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25J
RCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYg
ZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qg
T3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZy
b250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25J
RCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlz
LT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6RXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24ge2V4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1l
VVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBh
Z2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlw
dFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlw
dENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWlscywgY29uc3QgT3B0aW9uYWw8SW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNyw2ICsx
NjEsMzcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW4KICAgICB9KTsKIH0KIAorLy8gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVu
c2lvblRhYklEKQoreworICAgIGF1dG8gaXQgPSBtX2V4dGVuc2lvbkFQSU9iamVjdE1hcC5maW5k
KGV4dGVuc2lvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9leHRlbnNpb25BUElPYmplY3RNYXAuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lv
bj4gZXh0ZW5zaW9uID0gaXQtPnZhbHVlOworICAgIGF1dG8gZXh0ZW5zaW9uQ2xpZW50ID0gZXh0
ZW5zaW9uLT5jbGllbnQoKTsKKyAgICBpZiAoIWV4dGVuc2lvbkNsaWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXh0ZW5zaW9uQ2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lv
blRhYklEKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRl
bnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQp
Cit7CisgICAgYXV0byBpdCA9IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmZpbmQoZXh0ZW5zaW9u
SUQpOworICAgIGlmIChpdCA9PSBtX2V4dGVuc2lvbkFQSU9iamVjdE1hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNp
b24gPSBpdC0+dmFsdWU7CisgICAgYXV0byBleHRlbnNpb25DbGllbnQgPSBleHRlbnNpb24tPmNs
aWVudCgpOworICAgIGlmICghZXh0ZW5zaW9uQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBleHRlbnNpb25DbGllbnQtPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDRkNWIz
NWZlNDExNmRkNThmYzY2M2VkNDFmNWI5MjU0YzE2MjA5MWQuLmE0ZmZmOTczY2JlZGE4YzI2YTAz
NmI3ZTJiY2NlNjkxNzQ0MTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIElu
c3BlY3RvckV4dGVuc2lvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKQEAgLTQ3LDExICs1MSwyMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQ
YWdlKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisK
ICAgICAvLyBBUEkuCi0gICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQm
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYg
dGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBP
cHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9u
UmVzdWx0KT4mJik7CisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYg
ZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29u
c3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7
CisKKyAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVz
c2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hv
d0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpOworI2VuZGlmCiAKICAgICAvLyBOb3RpZmljYXRpb25zLgogICAgIHZvaWQgaW5zcGVjdG9y
RnJvbnRlbmRMb2FkZWQoKTsKQEAgLTYwLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdo
ZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgV2Vha1B0cjxX
ZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4+IG1fZXh0ZW5zaW9uQVBJ
T2JqZWN0TWFwOwogCiAgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25zIHN1Y2ggYXMgcmVnaXN0
ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KICAgICAvLyBUaGVyZSdzIG5v
IHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBpcyBmdWxseSBsb2FkZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMxNmI3NTI4M2IyMTlmYjI4ZjMxZmViYzA1OGRi
OGJmYjZmNzczMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK21lc3NhZ2VzIC0+IFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIERp
ZFNob3dFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZXh0ZW5zaW9uVGFi
SUQpCisgICAgRGlkSGlkZUV4dGVuc2lvblRhYihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBl
eHRlbnNpb25UYWJJRCkKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmll
dy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKaW5kZXgg
NTljOTBlNzkzNDJmYjI4YjQwNTA2OWYwM2Q4ZWMzZGMxNjJiNGVlZC4uYjY0MjQ5YmQ4OGFiYTM0
MzE0M2Q2YmVjNWE5OGE1MmU4YzVkNTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLUHJpbnRpbmdWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Cisj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogQGNsYXNzIFdLUHJpbnRpbmdWaWV3RGF0YTsK
IEBjbGFzcyBQREZEZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDAwMzIwZjU0NTAzMzJhZmRjYTkwN2RhYTUxMmJm
ODJmOTZiZDUuLmEzMjFlMzZmN2E3YzMyNTNmMzkwOTVjYTllNGZiMTFkYmEwOTE0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUy
Miw2ICsxNTIyLDExIEBACiAJCTk5NTVBNkY1MUM3OTg2RTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9u
QmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJhY2tlbmRE
aXNwYXRjaGVycy5oICovOyB9OwogCQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyogQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3Rv
Y29sT2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3Rv
Y29sT2JqZWN0cy5oICovOyB9OworCQk5OTZCMkI5ODI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTUyNUUyNDQ4
MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk2QjJCOTkyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkIyQjk2MjVFMjQ0ODIwMDcxOTM3
OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggKi87
IH07CisJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTcyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07
CisJCTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJC
OUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi87IH07
CisJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2
QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk3ODhB
Q0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3ODhBQzkx
RjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5Nzk2NTlF
MjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3
OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi87IH07CiAJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0ODAwQjMx
QUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CkBAIC00ODg0LDYgKzQ4ODksMTQgQEAKIAkJOTk1NUE2RjExQzc5ODY2NDAwRUI2
QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5
MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkz
IC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5
Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5NzI1RTI0NDgy
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUIyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQjlDMjVF
MjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckV4
dGVuc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkJBMDI1
RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAw
IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAwIC8qIF9X
S0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CkBAIC03ODU0LDYgKzc4NjcsNyBAQAogCQkJCTkxOTc5NDBCMjNEQkM1MDMwMDI1Nzg5
MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAogCQkJCTk5QjE2NzU0MjUyQkI3RTAwMDcz
MTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQk5OUIxNjc1NjI1MkJCN0Ux
MDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5NkIyQkEwMjVF
MjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAogCQkJ
CTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmgg
Ki8sCiAJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3Bl
Y3RvckludGVybmFsLmggKi8sCkBAIC05MjAzLDYgKzkyMTcsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggKi8s
CiAJCQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLm1tICov
LAorCQkJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZS5oICovLAorCQkJCTk5NkIyQjlCMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtOTIyNCw2ICs5MjQwLDcgQEAKIAkJCQkxQzc3QzE5NTEyODhB
ODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJOTlC
MTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmNwcCAqLywKIAkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKKwkJCQk5OTZCMkI5MzI1RTI0MzE0
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0
aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3Bl
Y3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAvKiBXZWJQ
YWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC05OTc5LDYgKzk5OTYsNyBAQAogCQkJCTk5NEM2MDQ2
MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJ
OTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAgKi8s
CiAJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5o
ICovLAorCQkJCTk5NkIyQjlFMjVFMjU4MkMwMDcxOTM3OSAvKiBBUElJbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQuaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBB
UElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1
MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTEwNTQsNiArMTEw
NzIsOSBAQAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VzLmggKi8sCiAJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJOTk3
OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8sCisJCQkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQk5OTZCMkI5NjI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTk5NkIyQjk3MjVFMjQ0ODIwMDcxOTM3OSAv
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5o
ICovLAogCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MkYgLyog
V2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTExNDc1LDYgKzExNDk2
LDcgQEAKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAw
MjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIx
Njc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFF
MyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIx
Njc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0
b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTc4MCw2ICsxMTgwMiw3IEBACiAJCQkJ
Q0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MTk3OTQwNTIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwMjIzREJDNDkwMDAyNTc4OTIgLyogSW5z
cGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQjlEMjVFMjU3RkYwMDcx
OTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBCRjMw
MDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjI2Niw2ICsxMjI4OSw4IEBACiAJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0
MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5NkIyQjk5MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCMkI5
QTI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQkJFNEExMTlCNjZDNTMw
MDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTQ5LDYgKzE0MTc0LDcgQEAKIAkJCQlDMThGM0Ex
NTI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzk2NTlGMjUz
MTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk2QjJCOTgyNUUyNDQ4MjAwNzE5Mzc5
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4
QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggZDEzOTBiZmQ2ZjZiZTIzMTU2NjdjMDRmZDZiZWMz
ZDZhYzE1NTJkZC4uYzdhYzVkNmJmZjI2ODA3ZGUzZWQxYmJmYmE5MmEyYTg4ZjNkNjVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTI3Miw3ICsyNzIsMzAgQEAgdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUp
CiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUpIH0pOwogfQotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCitib29sIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dlYkV4dGVu
c2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4
dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJ
RCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkU2hvd0V4dGVuc2lvblRhYihleHRl
bnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVu
c2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkK
K3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklE
LCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQogCiBXZWJDb3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRQYWdl
KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCBiOGRhOWE5ZjhhNWE3NjZkMTM2MTIyNmFmMGM0
ZTg1NjE2NTZiM2Q1Li4wMGEzZWUwMWVkMWY1Njk0MjRhNThkNWM2NDc2NTBhNGYxOTcxYzBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYklu
c3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZpY2F0
ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0zOSw4ICs0MywxMCBAQCBjbGFzcyBGbG9hdFJl
Y3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlOworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgog
CiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAogICAgIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CkBAIC0xMDksNiArMTE1LDEyIEBAIHB1YmxpYzoKICAg
ICBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
aWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZTsgfQogICAgIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50
KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBjb25zdCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyAgICAgICAgCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRl
bnNpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgb3ZlcnJpZGU7
CisjZW5kaWYKIAogICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5j
cHAKaW5kZXggMWEyZDcxMDBhNWViMjhmNzVhODQ1ZWYyOWJhMDE5MjUyNzM5Y2NlMy4uZWYyZTBm
OTYyYWU4YzI2YjAzOGYzNjI1NTY5MGUzYjc3Yjc4MzFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM1NSw3
ICszNTUsMzAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGUoYm9vbCBhdmFpbGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlz
cGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUp
IH0pOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFdlYkluc3BlY3RvclVJOjpz
dXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVuc2lv
bkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2V4dGVuc2lvbkNvbnRy
b2xsZXItPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsK
K30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKQoreworICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4dGVu
c2lvbkNvbnRyb2xsZXItPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lv
blRhYklEKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIHZv
aWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA5OTVjMjIyNDVi
ZmZhNGU1ZGEyODZmM2RjYjY2NjEwNTMzMmRhODIxLi42MjllNDVkYzZmODBiYzIwMjUwN2ZiYWE3
ODViNDVlMTY0NzIxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kSG9zdDsKQEAgLTE0Nyw2ICsxNTEsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKSBvdmVycmlkZSB7IHJldHVybiBtX2RpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlOyB9CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZlbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSYpIG92ZXJyaWRlOwogI2VuZGlmCisgICAgICAgIAor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBib29sIHN1cHBvcnRzV2ViRXh0
ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRl
OworI2VuZGlmCiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYg
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3Bh
dGNoZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApp
bmRleCAzYjliZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi5lYTBhNTFlODNh
NzQxNmJmZmQyYWY2NzIzNmVjM2ViYjI5OGRkNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTQ4
LDM2ICs0OSwzOCBAQCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbgogICAgIGF1dG8qIHBhZ2UgPSBp
bnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBX
ZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOworICAgIG1f
aW5zcGVjdG9yUGFnZUlkZW50aWZpZXIgPSBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlk
ZW50aWZpZXIoKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIsICp0aGlzKTsKIH0KIAog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOwogfQog
Ci1PcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25S
ZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJl
c3VsdCkKK09wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFs
dWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJl
c3VsdCByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgc3dpdGNoIChyZXN1
bHQuZXJyb3IoKSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgotICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95
ZWQ7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uRXJyb3I6OkV4ZWN1dGlvblN1c3BlbmRlZDoKLSAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgICAgICBj
YXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVy
cm9yOjpJbnRlcm5hbEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NF
UlQobV9mcm9udGVuZENsaWVudCk7CiAgICAgYXV0byBnbG9iYWxPYmplY3QgPSBtX2Zyb250ZW5k
Q2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVjdCgpOwog
ICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwogCiAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9u
ID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9yRXhjZXB0aW9uLmhhc192YWx1ZSgp
KSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50ZXJlZCBleGNlcHRpb24gd2hpbGUg
ZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2YWx1ZU9yRXhjZXB0aW9uLmVycm9y
KCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYgdGhlIGV2
YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0aGUgZnJvbnRlbmQgcmV0dXJuZWQgYW4gZXJy
b3Igc3RyaW5nLgpAQCAtODcsMTggKzkwLDE4IEBAIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjCiAg
ICAgaWYgKHNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgYXV0byByZXN1bHRTdHJp
bmcgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBpZiAo
cmVzdWx0U3RyaW5nID09ICJDb250ZXh0RGVzdHJveWVkIl9zKQotICAgICAgICAgICAgcmV0dXJu
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CiAgICAg
ICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJyb3IiX3MpCi0gICAgICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICAg
ICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVlc3QiX3MpCi0gICAgICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OworICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OwogICAg
ICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWlsZWQiX3MpCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDsK
KyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRp
b25GYWlsZWQ7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIk5vdEltcGxlbWVudGVkIl9z
KQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpOb3RJbXBsZW1l
bnRlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpOb3RJ
bXBsZW1lbnRlZDsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAKICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2LDEwICsxMDksMTAgQEAgT3B0aW9uYWw8SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
cGFyc2VJbnNwZWMKIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBt
ZXNzYWdlcy4KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lz
dGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxi
b29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
ZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOSw3ICsx
MjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaQogICAgIH07CiAgICAgbV9mcm9udGVuZENs
aWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFz
eW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFs
dWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTEzMiwxNyArMTM1LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYg
ZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFZlY3Rv
cjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVu
c2lvbklEKSB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigp
LmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lvbiJfcywg
V1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NywxMCArMTcwLDEwIEBAIEpT
Qzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFwRXZh
bHVhdGlvblJlc3VsdEFzT2JqZWN0CiAgICAgcmV0dXJuIHZhbHVlT3JFeGNlcHRpb24udmFsdWUo
KS5nZXRPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0
ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBj
b25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRl
bnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yRXh0CiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3Bh
dGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZvckV4dGVu
c2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NSwxNCArMTk4LDE0IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1Ro
aXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAo
IW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQg
bm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0
ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1f
ZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmb3VuZFByb3BlcnR5ID0gb2JqZWN0UmVzdWx0
LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhm
cm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImV4dGVuc2lvblRhYklEIl9zKSk7CiAgICAgICAg
IGlmICghZm91bmRQcm9wZXJ0eSB8fCAhZm91bmRQcm9wZXJ0eS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMCwxMCArMjEzLDEwIEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291
cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYg
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNj
cmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBP
cHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBj
b25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVl
c3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzMsMTMgKzIzNiwxMyBAQCB2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElE
aXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250
ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJ
RGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGlmICghZnJvbnRl
bmRHbG9iYWxPYmplY3QpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RG
OjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25S
ZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAg
ICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1
cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIp
OwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJ
bnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlQocmVzdWx0LnZhbHVlKCkpOwpAQCAtMjYyLDcgKzI2NSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvclBheWxvYWQgPSBvYmplY3RSZXN1
bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3IiX3MpKTsKICAgICAgICAgaWYgKCFl
cnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgaWYgKCFlcnJvclBheWxv
YWQuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjczLDcgKzI3Niw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHRQYXlsb2FkID0gb2JqZWN0UmVz
dWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgInJlc3VsdCJfcykpOwogICAgICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZnJvbnRlbmRHbG9iYWxPYmplY3QsIHJlc3VsdFBheWxv
YWQpOwogICAgICAgICBpZiAoIXNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
V1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODEsNiArMjg0LDE2IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
JiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRhYiB7IGV4dGVuc2lvbklELCBleHRl
bnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRIaWRlRXh0ZW5zaW9uVGFiIHsgZXh0ZW5z
aW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4
IGYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcuLjI0MjE4NGVlZTNkZmI0
NmMxMTg5ZWJkNjMwOGQyODFmMzRjNzkyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC02MywxNiArNjQs
MjMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgotICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPik+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qg
T3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1
cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJO
YW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3Jp
cHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxV
Ukw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNv
bnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworCisgICAgLy8g
Q2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyAgICB2b2lkIGRp
ZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIEpTQzo6
SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwotICAgIE9wdGlvbmFs
PEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0KTsKKyAgICBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsK
IAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRl
bmRDbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pbnNwZWN0b3JQYWdlSWRl
bnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBkMTc0MDYw
MjhmYWYzN2I1MDY0MTQyNWZiNjBkOGZmMGUyM2M0NDU0Li42ZTgwYzcwZGZjYjVkYmI0NTgyMTUx
ZDA5YjU2NTM0ZjMyMzU5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDExIEBACiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgUmVnaXN0ZXJFeHRlbnNpb24o
U3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3RlZDxib29s
LCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgVW5y
ZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxib29sLCBX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAgUmVnaXN0
ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChF
eHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisg
ICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxi
b29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiAKLSAgICBDcmVh
dGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFiTmFtZSwgVVJM
IHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcsIFdlYktpdDo6
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBFdmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRTb3VyY2UsIE9w
dGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5T3JpZ2lu
LCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkgLT4gKElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBk
ZXRhaWxzLCBPcHRpb25hbDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikg
QXN5bmMKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJp
bmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxT
dHJpbmcsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICBFdmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRT
b3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkgLT4gKElQ
Qzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJv
cikgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421162</attachid>
            <date>2021-02-21 17:49:06 -0800</date>
            <delta_ts>2021-02-22 11:52:41 -0800</delta_ts>
            <desc>Patch v1.2</desc>
            <filename>bug-222252-20210221174905.patch</filename>
            <type>text/plain</type>
            <size>108090</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4MWM4MzA2ZjZlMDkz
M2E4NWVhZTYzNWYzZDVhNTFiN2M5ZTM3ZC4uNjZkMWYyNjI3ZTQwNzA3ZDY0NWMwZTNiYTExYjcx
MDZiYzljODJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIwICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEltYWdlIHNo
b3VsZCByZXBvcnQgdGhlIGVtYmVkZGVkIGFjY2Vzc2liaWxpdHkgZGVzY3JpcHRpb24gaWYgYXZh
aWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjODUzNjVjMmYxMWJkZjY3ZThiZTVh
NmQ4MDEyMGNkMDMwN2UzY2VjLi5lNjQwMGIxNThiOGZmZWNhODY3OGNhYmFmMWM3NjVlMGFjMDlm
ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0y
MSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNw
ZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlh
IF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcx
MjA2Njg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzOiBVcGRhdGUg
Y29tbWVudCBmb3IgbmFtZXNwYWNlIGNoYW5nZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQp
OgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLmRldGFjaGVkKToKKyAgICAgICAgV2hlbiBhbiBleHRlbnNpb24gdGFiIGlzIHNob3duIG9y
IGhpZGRlbiwgbm90aWZ5IHRoZSBmcm9udGVuZCBob3N0IGFib3V0IHRoZSBldmVudC4KKwogMjAy
MS0wMi0xOSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDU1MgR3JpZCBJbnNwZWN0b3I6IHVzZSBhIGNvbG9yIHBhbGV0dGUg
Zm9yIGRlZmF1bHQgZ3JpZCBvdmVybGF5IGNvbG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZmYxZWJhMjYxYjQw
ZGNmNWVhOTQyOWYzNTA2ZTg1YjMxZjcxNzMzLi5mNWYyYTAzMWI3OTI1ZTlkYjMxYjE2YzViNTll
YmZlNDYzNzI4NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAyMS0wMi0yMSAgQkog
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6
IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlhIF9XS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjA2Njg1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjbGllbnRzIHRvIHJlY2VpdmUgZXh0ZW5zaW9uIGxpZmVj
eWNsZSBldmVudHMuIEZvciBub3cgdGhpcyBpbmNsdWRlcworICAgICAgICBleHRlbnNpb24gdGFi
IHNob3duL2hpZGRlbiwgYnV0IHdpbGwgZXZlbnR1YWxseSBpbmNsdWRlIHBhZ2UgbmF2aWdhdGlv
bnMgYW5kIG90aGVyIGV2ZW50cyBleHBvc2VkCisgICAgICAgIHZpYSBXZWIgRXh0ZW5zaW9ucyBB
UEkuCisKKyAgICAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCBhdCB0aGUgV2ViS2l0IGxldmVsIHZp
YSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgbWV0aG9kcy4gVGhpcyBnZXRzIHBpcGVkIHRv
CisgICAgICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IHZpYSBJUEMs
IHdoaWNoIHRoZW4gcGFzc2VzIG9uIHRoZSBldmVudCB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS4KKworICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSBpcyBhIGRl
bGVnYXRlIG9mIF9XS0luc3BlY3RvckV4dGVuc2lvbi4gSXQncyBmb3IgcmVjZWl2aW5nIGxpZmVj
eWNsZSBldmVudHMsIGFuZAorICAgICAgICBpcyBpbXBsZW1lbnRlZCBzaW1pbGFybHkgdG8gX1dL
SW5zcGVjdG9yRGVsZWdhdGUuIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
IG5vdyBrZWVwcyBhIG1hcCBvZgorICAgICAgICBleHRlbnNpb24gQVBJIG9iamVjdHMgc28gdGhh
dCBpdCBjYW4gY2FsbCBvdXQgdG8gdGhlIHRoZSBhcHByb3ByaWF0ZSBleHRlbnNpb24gQVBJIG9i
amVjdCdzIGNsaWVudC9kZWxlZ2F0ZS4KKworICAgICAgICBMYXN0bHksIHNpbmNlIHRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBhdCB0aGUgV2ViQ29yZSBsZXZl
bCwgSSBkZWNpZGVkIHRvIG1vdmUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9mIEluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmggdG8gdGhlIEluc3BlY3RvciBuYW1lc3BhY2UuIEl0IG1hZGUgbW9yZSBz
ZW5zZSB0aGFuIHR5cGluZyBvdXQgV2ViQ29yZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IKKyAg
ICAgICAgYW5kIHRoZSBsaWtlLiBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCB0aGUgc3RyaW5nIHR5
cGUgYWxpYXNlcyBJbnNwZWN0b3I6OkV4dGVuc2lvbklEIGFuZCBJbnNwZWN0b3I6RXh0ZW5zaW9u
VGFiSUQgYXJlCisgICAgICAgIG5vdyBkZWZpbmVkIGluIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmguCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGQgZ2VuZXJhdGVkIGZpbGVzIGZv
ciBuZXcgbWVzc2FnZSByZWNlaXZlci4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBu
ZXcgZmlsZXMgZm9yIGluc3BlY3RvciBleHRlbnNpb24gY2xpZW50L2RlbGVnYXRlIGJvaWxlcnBs
YXRlIGNsYXNzZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpleHRl
bnNpb25FcnJvclRvU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdGhlc2UgdHlwZXMgYW5kIGhl
bHBlcnMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uOjpzZXRDbGllbnQpOiBBZGQgYSBjbGllbnQgbWVtYmVyIHdoaWNoIGlzIHVzZWQgdG8gY2Fs
bCBvdXQgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuCisgICAgICAgIChBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlVGFiKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHQpOiBGaXggbmFtZXNwYWNlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmguCisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6
ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYik6CisgICAgICAgIEFkZGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3Bl
Y3RvciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHVucmVnaXN0ZXJFeHRlbnNpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEFkanVzdCB0byBuZXcgdHlwZSBzaWduYXR1cmUgdGhh
dCByZXR1cm5zIGFuIGluaXRpYWxpemVkIEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHVucmVnaXN0
ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEFkanVzdCB0byBuZXcg
dHlwZSBzaWduYXR1cmUgdGhhdCByZXR1cm5zIGFuIGluaXRpYWxpemVkIEFQSTo6SW5zcGVjdG9y
RXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbi5oOiBBZGQgdGhlIGRlbGVnYXRlIHByb3BlcnR5IGFuZCB1
cGRhdGUgZG9jdW1lbnRhdGlvbiB0byBtZW50aW9uIGl0cyBpbnRlbmRlZCB1c2FnZS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg6
IEFkZCBkZWxlZ2F0ZSBzdG9yYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24g
ZGVsZWdhdGVdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRl
Ol0pOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24g
Y3JlYXRlVGFiV2l0aE5hbWU6dGFiSWNvblVSTDpzb3VyY2VVUkw6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gZXZh
bHVhdGVTY3JpcHQ6ZnJhbWVVUkw6Y29udGV4dFNlY3VyaXR5T3JpZ2luOnVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6ZGVsZWdhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xp
ZW50OjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Ojp+SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6Cisg
ICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVGhpcyBp
cyBPYmpDLXRvLUMrKyBicmlkZ2UgY29kZSB0byBjb25uZWN0IEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50ICh1c2VkIGJ5IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
KQorICAgICAgICB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSAodXNlZCBieSBjbGll
bnQgY29kZSkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICBNYWtlIHRoaXMgY2xhc3MgYW4gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNpb24gbGlmZWN5Y2xl
IGV2ZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToK
KyAgICAgICAgTWFrZSB0aGlzIGNsYXNzIGFuIElQQzo6TWVzc2FnZVJlY2VpdmVyLiBJdCByZWNl
aXZlcyBtZXNzYWdlcyBmb3IgZXh0ZW5zaW9uIGxpZmVjeWNsZSBldmVudHMuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVy
RXh0ZW5zaW9uKToKKyAgICAgICAgRXhwYW5kIHRoaXMgY29kZSBvdXQgc28gdGhhdCB3ZSBjYW4g
c2F2ZSBBUEk6Okluc3BlY3RvckV4dGVuc2lvbiBpbnN0YW5jZXMgaW50byBvdXIgb3duIG1hcAor
ICAgICAgICBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgY29tcGxldGlvbkhhbmRsZXIuIFRoaXMg
bWFwIGtlZXBzIHN0cm9uZyByZWZlcmVuY2VzIHRvIHRoZSBleHRlbnNpb24KKyAgICAgICAgQVBJ
IG9iamVjdHMgc2luY2UgdGhleSBuZWVkIHRvIGJlIHVzZWQgdG8gc2VuZCBldmVudHMgYXQgYW4g
YXJiaXRyYXJ5IHRpbWUgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgUHJldmlvdXNseSwgdGhleSB3
ZXJlIGtlcHQgYWxpdmUgKG9yIG5vdCkgYnkgdGhlIEFQSSBjbGllbnQuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24pOgorICAgICAgICBXaGVuIHRoZSBleHRlbnNpb24gaXMgbm8gbG9uZ2VyIHJlZ2lz
dGVyZWQsIHJlbW92ZSB0aGUgYXNzb2NpYXRlZCBleHRlbnNpb24gQVBJIG9iamVjdCAoYW5kCisg
ICAgICAgIG91ciBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0KS4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6IEZpeCBu
YW1lc3BhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToK
KyAgICAgICAgQWRkZWQuIFRyeSB0byBsb29rIHVwIHRoZSBhc3NvY2lhdGVkIEFQSSBvYmplY3Qg
Zm9yIHRoZSBleHRlbnNpb24gYW5kIGZvcndhcmQgdGhlIGV2ZW50IHRvCisgICAgICAgIHRoZSBj
bGllbnQgb2YgdGhlIEFQSSBvYmplY3QsIHdoaWNoIGlzIHVsdGltYXRlbHkgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lmg6IEZpeCBVbmlmaWVkU291cmNlcyBmYWxsb3V0LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgQWRkZWQuIERlZmVyIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlciB0byBoYW5kbGUg
ZnVydGhlciBldmVudCBwcm9wYWdhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c3VwcG9y
dHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZFNo
b3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkSGlk
ZUV4dGVuc2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgIEZpeCBuYW1lc3BhY2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBCZSBtb3JlIHByZWNpc2UgYWJvdXQgYXNzb2NpYXRp
bmcgdGhpcyBtZXNzYWdlIHJlY2VpdmVyIHdpdGggdGhlIGluc3BlY3RvciBwYWdlJ3MgaWRlbnRp
Zmllci4KKyAgICAgICAgQWxzbywgc2F2ZSB0aGUgcGFnZSBpZGVudGlmaWVyIHNvIHRoYXQgbWV0
aG9kcyB0aGF0IG5lZWQgdG8gc2VuZCBJUEMgbWVzc2FnZXMgY2FuIHNlbmQKKyAgICAgICAgdGhl
IG1lc3NhZ2UgdG8gdGhlIGNvcnJlY3QgZGVzdGluYXRpb25JRC4KKworICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAg
ICAgICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIp
OgorICAgICAgICBBZGRlZC4KKwogMjAyMS0wMi0yMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGV4cG9zZSB0aGUgV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYXNzb2NpYXRlZCB3aXRoIFdlYiBJbnNwZWN0b3IncyBwYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmlu
ZGV4IGU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4
NzA2NTlhNDk0YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK3VzaW5nIEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJ
RCA9IFdURjo6U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmxvYXRSZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1l
ICovLCBjb25zdCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9
CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwg
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0
NzE5NmU4ZTc3OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNk
Mzk4Y2Q5MGQ3YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5h
bWUsIGNvbnN0IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAK
K2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYg
bV9jbGllbnQtPnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0
ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9u
VGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4
OTNiYjM1NTNhZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi45YWJhODZhNzM0MWQ3NjJmZGU3
N2U5MjVlYjY5NjI3OGM2MTBkODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0xMzYsNiArMTM2LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXlsb2FkKTsKICNlbmRpZgogCisgICAgYm9vbCBzdXBwb3J0c1dlYkV4dGVuc2lv
bnMoKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdm9pZCBkaWRTaG93
RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uVGFiSUQpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVuZCBjbGFzcyBGcm9u
dGVuZE1lbnVQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGwKaW5kZXggMTdlOGY1YjhkMmFlYzg1N2RjNmY1NzE2NGFkZTdh
MTQ3Zjk3NDc2Mi4uMzJjNTc0M2EwZTYzZDU4MjM5OTgxM2RkYzMwMzBhODM0NDI0NzlmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKQEAgLTk1LDYgKzk1LDEwIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBz
dXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JfVEVM
RU1FVFJZXSB1bmRlZmluZWQgbG9nRGlhZ25vc3RpY0V2ZW50KERPTVN0cmluZyBldmVudE5hbWUs
IERPTVN0cmluZyBjb250ZW50KTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1
cHBvcnRzV2ViRXh0ZW5zaW9uczsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lP
TlNdIHVuZGVmaW5lZCBkaWRTaG93RXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwg
RE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VY
VEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNp
b25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4
dE1lbnVJdGVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCmluZGV4IDZm
YmMzN2FlYTdhMTg5M2IxZjcwMmI1NGNiYzI3MDc1OGJlOTVlNTQuLjhlYWZlMDM5MjRkNTk2YWJj
ZGRlYWJjYzFiZWVhMmVjYTNkNDFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVu
c2lvbi5qcwpAQCAtNDAsNyArNDAsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb24KICAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0
aGlzLl9kaXNwbGF5TmFtZTsgfQogfTsKIAotLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5v
bnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IuCisvLyBOb3RlOiB0aGVzZSB2YWx1ZXMgYXJlIHN5bm9ueW1vdXMgd2l0aCB0
aGUgdmFsdWVzIG9mIGVudW0gY2xhc3MgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvci4KIFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUgPSB7CiAgICAgQ29udGV4dERlc3Ryb3llZDog
IkNvbnRleHREZXN0cm95ZWQiLAogICAgIEludGVybmFsRXJyb3I6ICJJbnRlcm5hbEVycm9yIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcuanMKaW5kZXggMzNmZGZhMDBmZDQzY2MwMTlmY2QxNGNmYmU5MDE5ZjU5N2QwYTgzZS4uM2U3
ZmRlOTk1Y2EwZDlhNmMzZTRmM2RlZDJhMDRiNzVmNGU3MDk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNiArNTUs
MjYgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCisgICAgYXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKwor
ICAgICAgICBjb25zb2xlLmxvZyhgRXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRp
c3BsYXlOYW1lfSB3YXMgYXR0YWNoZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0
b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmRpZFNob3dFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVu
c2lvbklkLCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCisgICAgZGV0YWNoZWQoKQor
ICAgIHsKKyAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKKworICAgICAgICBjb25zb2xlLmxvZyhg
RXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRpc3BsYXlOYW1lfSB3YXMgZGV0YWNo
ZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9y
dHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhp
ZGVFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCB0aGlzLl9leHRlbnNp
b25UYWJJRCk7CisgICAgfQorCiAgICAgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYyOTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUu
LjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlmZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFhNjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVj
NzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRjZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAogCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwK
IAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRj
NzBmNDI2NzE2M2VjNTkuLjM1YjI4MGExMGFlMTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1
OCw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdl
TGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pT
Qzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAog
ICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBbJyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAg
J0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclRhcmdldC5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsn
Ikluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGlt
ZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwKQEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJG
aW5kT3B0aW9ucy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRl
JzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApp
bmRleCBiYjNlZWU4OGRlZmJjNGY4NzAwYzkwNTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzEx
ZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1XVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJv
clRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lvbkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2gg
KGVycm9yKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cjoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1
cm4gIkludGVybmFsRXJyb3IiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW52YWxpZFJlcXVlc3Q6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6
CiAgICAgICAgIHJldHVybiAiSW52YWxpZFJlcXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkOgogICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgor
ICAgIGNhc2UgRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0
dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Tm90SW1wbGVtZW50ZWQ6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVt
ZW50ZWQ6CiAgICAgICAgIHJldHVybiAiTm90SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3
Zjg1NzQxNmZkYzRmZmI1MjA5MmYyNTM3NzU2MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkx
ODJiNDU4NGQ4OWViZjFmY2Y3MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3Bl
Y3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1l
bnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworZW51bSBjbGFzcyBFeHRlbnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5n
IEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JF
eHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwotdXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCA9IEV4cGVjdGVkPEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj47Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5z
aW9uSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5nIEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBF
eHBlY3RlZDxFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgRXh0ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIElu
c3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVy
cm9yIDogdWludDhfdCB7CiAgICAgQ29udGV4dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9y
LAogICAgIEludmFsaWRSZXF1ZXN0LApAQCAtNTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07
CiAKLVdURjo6U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3IpOworV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRl
bnNpb25FcnJvcik7CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQs
Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Is
Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
LAotICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25G
YWlsZWQsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxl
bWVudGVkCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6Ok5vdEltcGxlbWVudGVkCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCBlNWRiNmMxOTc1NDVhMTlhMWVlZWJlY2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1
NjZmYzhmYjU4YzRlNjljZTg3MmUyZGEyMWI1NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC00MjIsNiArNDIyLDcgQEAgVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVy
SU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAog
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNz
L0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nl
c3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRkYjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3
MDBkYTFmYWE1NmVjMjNhOTY5YWYzYWExNzZiMzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00
NSwyMCArNDUsMjUgQEAgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3Qg
V1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBX
VEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246
OnNldENsaWVudChVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkK
K3sKKyAgICBtX2NsaWVudCA9IGNsaWVudC5tb3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5j
cmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBz
b3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3Vy
Y2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3Ry
aW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNv
bnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRp
b25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2Qy
ZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0Yzkz
OTdjMzMxODFhYTU3ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lv
bkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NDYsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RG
OjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVS
TCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+
JiYpOworICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlw
dChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVS
TD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9y
aWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJik7CisKKyAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVm
PEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lk
ZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgx
NDIxNTVhMGIzMjEyOGY3OTEyMzEzOGUxODgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lv
bkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3
MGIwNWI0NDMxYmMzMzdmYzJmYzkuLmMyODk3OWVkNzYyNDBlMTVlMmFlOWQ0ZjkzNTVlNmVjMmI1
NTBhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbQpAQCAtMTg2LDEzICsxODYsMTMgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rv
ci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklE
KSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4
dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxh
eU5hbWUsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25v
d24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsK
KyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1
cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3Vs
dC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3Bl
Y3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkpOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5p
bCwgd3JhcHBlcihyZXN1bHQudmFsdWUoKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0
aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CkBAIC0yMDIsOSArMjAyLDkgQEAgLSAo
dm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNw
bGF5TmFtZTooTlNTdHJpbmcgKikKIC0gKHZvaWQpdW5yZWdpc3RlckV4dGVuc2lvbjooX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJF
eHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQp
IG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQmxv
Y2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogV2ViS2l0
OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5l
cnJvcigpKX1dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLmgKaW5kZXggZDExMmEwYzRjMzNiYjYyYmY1YjM2ODMyZjgzMjBiMGYyZTYxZmZhOC4uOWJl
NjEzMDgxOGIyNzBhNThkNjNkMmNkN2M4NzQ5ZTkyZWIwYzBjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
aApAQCAtMzMsNiArMzMsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAcHJvdG9j
b2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKIFdLX0NMQVNTX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSkKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNP
YmplY3QKIApAQCAtNDUsOCArNDcsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKQogICogQHBhcmFtIHRhYkljb25VUkwgVGhlIGxvY2F0aW9uIG9mIGFuIGltYWdlIHJl
c291cmNlIHRvIHVzZSBmb3IgZGlzcGxheSBpbiB0aGUgY3JlYXRlZCB0YWIncyB0aXRsZS4KICAq
IEBwYXJhbSBzb3VyY2VVUkwgVGhlIGxvY2F0aW9uIG9mIHRoZSBtYWluIHJlc291cmNlIHRvIGxv
YWQgaW4gdGhlIG5ldyB0YWIncyBpZnJhbWUgYnJvd3NpbmcgY29udGV4dC4KICAqIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVu
IGNyZWF0aW5nIGEgdGFiIHN1Y2NlZWRzIG9yIGZhaWxzLgorICogQGRpc2N1c3Npb24gVGhlIGlu
c3BlY3RvclRhYklkZW50aWZpZXIgcHJvdmlkZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBj
YW4gYmUgdXNlZCB0byBpZGVudGlmeSB0YWJzCisgKiB0aGF0IGFyZSBwYXNzZWQgYXMgYSBwYXJh
bWV0ZXIgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgbWV0aG9kcy4KICAqLwotLSAo
dm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5T
VVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxhYmxl
IGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpY3JlYXRlVGFiV2l0
aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYkljb25VUkwg
c291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShO
U0Vycm9yICogX051bGxhYmxlLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBpbnNwZWN0b3JUYWJJZGVu
dGlmaWVyKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLyoqCiAgKiBAYWJzdHJhY3QgRXZhbHVhdGVz
IEphdmFTY3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluc3BlY3RlZCBwYWdlIG9uIGJlaGFs
ZiBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgpAQCAtNjMsNiArNjcsMTIgQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBu
b25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNpb25JRDsKIAorLyoqCisgKiBAYWJzdHJhY3QgQWxs
b3dzIHRoZSBjbGllbnQgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlmZWN5Y2xlIGV2ZW50cyB0aGF0
CisgKiBhcmlzZSBmcm9tIHdpdGhpbiBXZWIgSW5zcGVjdG9yLgorICovCitAcHJvcGVydHkgKG5v
bmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDI2N2YwZWY5MzM4Mzk1ODQz
Nzg0MGYwMGMyYmFhNzZiZmQ3OWNmNWUuLjdiY2Y1OGVjOWU1NzFjMGUxMTdkN2Y0N2Q0MWEwYmFm
MWEyMjVmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIK
ICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCkBAIC0z
Myw4ICszNiw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLQogQGltcGxlbWVudGF0aW9u
IF9XS0luc3BlY3RvckV4dGVuc2lvbgogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTQ5LDEzICs1MCwy
NiBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVybiAqX2V4dGVuc2lvbjsK
IH0KIAorLSAoaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQorewor
ICAgIHJldHVybiBfZGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KWRlbGVn
YXRlCit7CisgICAgaWYgKCFkZWxlZ2F0ZSAmJiAhX2RlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisKKyAgICBfZGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGU+KHNlbGYsIGRlbGVnYXRlKTsKK30KKwogLy8gTUFSSzogQVBJCiAKIC0gKHZvaWQp
Y3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAq
KXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwg
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVSTCwgc291
cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02Nyw5
ICs4MSw5IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNl
IGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiB7CiAgICAgT3B0aW9uYWw8VVJMPiBv
cHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBtYWtlT3B0aW9uYWwoVVJMKGZyYW1lVVJMKSkg
OiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbENvbnRleHRTZWN1cml0
eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IG1ha2VPcHRpb25hbChVUkwoY29udGV4
dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgX2V4dGVuc2lvbi0+ZXZhbHVh
dGVTY3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRT
ZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVTY3JpcHQo
c2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1cml0eU9y
aWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktp
dDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmls
KTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmU4
NDE0ZDFmMDgwZmYyNWE4NDE3NGNhM2Q4NjRiZmNkZDIxYjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBUQVJHRVRfT1NfT1NYCisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qKgorICogQGFi
c3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBo
YXMgYmVlbiBzaG93bi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVuc2lvbiB0aGF0IGNy
ZWF0ZWQgdGhlIHNob3duIHRhYi4KKyAqIEBwYXJhbSB0YWJJZGVudGlmaWVyIElkZW50aWZpZXIg
Zm9yIHRoZSB0YWIgdGhhdCB3YXMgc2hvd24uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5z
aW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkU2hvd1RhYldpdGhJZGVu
dGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKKy8qKgorICogQGFic3RyYWN0IENh
bGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbiBoYXMgYmVlbiBo
aWRkZW4uCisgKiBAcGFyYW0gZXh0ZW5zaW9uIFRoZSBleHRlbnNpb24gdGhhdCBjcmVhdGVkIHRo
ZSBoaWRkZW4gdGFiLgorICogQHBhcmFtIHRhYklkZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhl
IHRhYiB0aGF0IHdhcyBoaWRkZW4uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldpdGhJZGVudGlmaWVy
OihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRl
cm5hbC5oCmluZGV4IDBhMGZhYmM4YTM3MDJkMzI3Mjk2ZjU3MTY0MGVjMTcxZmM0NTExZGYuLmFl
MzE2OTg3OWM2OTdiYWYyYjAzMDE5MjEyYWJkM2NiNzA0YjZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2ltcG9ydCAiQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6Okluc3BlY3RvckV4
dGVuc2lvbj4gewpAQCAtNDEsNiArNDUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4
dGVuc2lvbiAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9yYWdl
PEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBfZGVsZWdhdGU7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA4
MjA2NjNhYmQ5YjJhYjI0NzY4NGMzYzgxY2QwYWM5NTcyNjBiYzRiLi5hYTI3MGFiODlmN2VhNzQx
NmQwNTg1ODQ4YTJmODdjYjRjMTdmMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjIsMTMgKzE2MiwxMyBAQCAtICh2b2lkKV9zZXREaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPiBf
TnVsbGFibAogLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRl
bnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShOU0Vycm9yICosIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKSljb21wbGV0
aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3Jl
bW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNp
b24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRh
aW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJv
b2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOwpAQCAtMTc4LDkgKzE3OCw5IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAtICh2
b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIG1fcmVtb3RlSW5zcGVj
dG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVu
c2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9v
bCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3Rl
ckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2Nr
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25v
d24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTkwZWU3MmVhZjY2OWU5ZTUw
NzA4MTQ0OWI2MDA4YjBhOTk2NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb25DbGll
bnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CitAcHJvdG9jb2wgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4pOworICAgIH5JbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAgUmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJ
bnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVuc2lvbkNsaWVudChJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVu
dAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworCisgICAgICAgIElu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOwor
ICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJbnNwZWN0b3JFeHRlbnNpb24+IG1faW5zcGVj
dG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBib29sIGluc3Bl
Y3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllciA6IDE7CisgICAgICAgIGJvb2wg
aW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyIDogMTsKKyAgICB9IG1f
ZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThmYTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4
ZTJiYTdkN2M5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
CisjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFs
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0
b3JFeHRlbnNpb24sIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUp
CisgICAgOiBtX2luc3BlY3RvckV4dGVuc2lvbihpbnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBt
X2RlbGVnYXRlKGRlbGVnYXRlKQoreworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4
dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvckV4dGVuc2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZp
ZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRh
YldpdGhJZGVudGlmaWVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
aW5zcGVjdG9yRXh0ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjopXTsKKworICAgIGlu
c3BlY3RvckV4dGVuc2lvbi0+X2V4dGVuc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5z
cGVjdG9yRXh0ZW5zaW9uQ2xpZW50PigqdGhpcykpOworfQorCitJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZTo6fkluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRh
aW5QdHI8aWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGU6OmRlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsK
K30KKworSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVu
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBk
ZWxlZ2F0ZSkKKyAgICA6IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7
Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGll
bnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNp
b25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7
CisgICAgaWYgKCFtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
Lmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W2RlbGVnYXRlIGluc3BlY3RvckV4dGVuc2lvbjptX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lm1faW5zcGVjdG9yRXh0ZW5zaW9uLmdldCgpLmdldCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmll
cjpleHRlbnNpb25UYWJJRF07Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6
Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5z
aW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
JiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVj
dG9yRXh0ZW5zaW9uOm1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRl
bnNpb24uZ2V0KCkuZ2V0KCkgZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklE
XTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5LmNwcAppbmRleCBhMWVhZDFkMjEzNzQyNzEyMTY2OWMwNDE1MjIzYmI5MWY3ODdk
YWVhLi5kMjM5MTk0MmE2ZTBlMGE1N2Y3N2MxM2EzYWE5NmUyN2U5YTYxNmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTI4LDcg
KzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUg
IkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogCkBAIC0zNyw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9y
UGFnZSkKICAgICA6IG1faW5zcGVjdG9yUGFnZShtYWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkK
IHsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIAog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpCkBAIC00NCw2ICs0Nyw4IEBAIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkoCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CisKICAgICBtX2luc3Bl
Y3RvclBhZ2UgPSBudWxscHRyOwogCiAgICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdl
KG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLCB7IH0pOwpAQCAtNzQsMzUgKzc5LDU0IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZy
b250ZW5kTG9hZGVkKCkKIAogLy8gQVBJCiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lv
bklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3
aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVu
c2lvbklELCBkaXNwbGF5TmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtU
aGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdp
c3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSB9LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpSZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSB9LCBbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29u
dGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb25B
UElPYmplY3QgPSBBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKGV4dGVuc2lvbklELCAq
d2Vha1RoaXMpOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFw
LnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uQVBJT2JqZWN0LmNvcHlSZWYoKSk7CisKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXh0ZW5zaW9uQVBJT2JqZWN0KSk7Cisg
ICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lv
bklEJiBleHRlbnNpb25JRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJv
b2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9y
UGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OlVucmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2V4dGVuc2lvbkFQSU9iamVjdE1hcC50YWtlKGV4dGVu
c2lvbklEKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQp
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJM
JiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250
ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwg
dGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0KSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMCwxNSArMTM0LDE1IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYg
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNj
cmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3Qg
T3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNl
Y3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpD
b250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6RXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24ge2V4dGVuc2lvbklE
LCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRl
bnRTY3JpcHRDb250ZXh0fSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNvbnN0IE9wdGlv
bmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
biB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9y
aWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVm
ZXJlbmNlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWls
cywgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEzNyw2ICsxNjEsMzcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW4KICAg
ICB9KTsKIH0KIAorLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBD
IG1lc3NhZ2VzLgorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmRpZFNob3dFeHRlbnNpb25UYWIoY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIGF1dG8gaXQgPSBtX2V4dGVu
c2lvbkFQSU9iamVjdE1hcC5maW5kKGV4dGVuc2lvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9leHRl
bnNpb25BUElPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxB
UEk6Okluc3BlY3RvckV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gaXQtPnZhbHVlOworICAgIGF1dG8g
ZXh0ZW5zaW9uQ2xpZW50ID0gZXh0ZW5zaW9uLT5jbGllbnQoKTsKKyAgICBpZiAoIWV4dGVuc2lv
bkNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXh0ZW5zaW9uQ2xpZW50LT5kaWRTaG93
RXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklEKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0
b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgYXV0byBpdCA9IG1fZXh0ZW5zaW9uQVBJT2Jq
ZWN0TWFwLmZpbmQoZXh0ZW5zaW9uSUQpOworICAgIGlmIChpdCA9PSBtX2V4dGVuc2lvbkFQSU9i
amVjdE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEFQSTo6SW5zcGVj
dG9yRXh0ZW5zaW9uPiBleHRlbnNpb24gPSBpdC0+dmFsdWU7CisgICAgYXV0byBleHRlbnNpb25D
bGllbnQgPSBleHRlbnNpb24tPmNsaWVudCgpOworICAgIGlmICghZXh0ZW5zaW9uQ2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBleHRlbnNpb25DbGllbnQtPmRpZEhpZGVFeHRlbnNpb25U
YWIoZXh0ZW5zaW9uVGFiSUQpOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IDRkNWIzNWZlNDExNmRkNThmYzY2M2VkNDFmNWI5MjU0YzE2MjA5MWQu
LmE0ZmZmOTczY2JlZGE4YzI2YTAzNmI3ZTJiY2NlNjkxNzQ0MTAzNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0zNCw2ICszNCwxMCBA
QAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1l
c3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbjsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKQEAgLTQ3LDExICs1MSwyMCBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoV2Vi
UGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJh
dGVkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUEkuCi0gICAgdm9pZCByZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVU
YWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcm
IHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJ
RCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9u
YWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwm
IHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRl
eHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
dmFsdWF0aW9uUmVzdWx0KT4mJik7CisKKyAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworI2VuZGlmCiAKICAgICAvLyBOb3RpZmljYXRpb25z
LgogICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsKQEAgLTYwLDYgKzczLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBI
YXNoTWFwPEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVu
c2lvbj4+IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwOwogCiAgICAgLy8gVXNlZCB0byBxdWV1ZSBh
Y3Rpb25zIHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBv
bi4KICAgICAvLyBUaGVyZSdzIG5vIHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9u
dGVuZCBpcyBmdWxseSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMxNmI3NTI4
M2IyMTlmYjI4ZjMxZmViYzA1OGRiOGJmYjZmNzczMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IE5v
dFJlZkNvdW50ZWQgeworICAgIERpZFNob3dFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklE
LCBTdHJpbmcgZXh0ZW5zaW9uVGFiSUQpCisgICAgRGlkSGlkZUV4dGVuc2lvblRhYihTdHJpbmcg
ZXh0ZW5zaW9uSUQsIFN0cmluZyBleHRlbnNpb25UYWJJRCkKK30KKworI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS1ByaW50aW5nVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
UHJpbnRpbmdWaWV3LmgKaW5kZXggNTljOTBlNzkzNDJmYjI4YjQwNTA2OWYwM2Q4ZWMzZGMxNjJi
NGVlZC4uYjY0MjQ5YmQ4OGFiYTM0MzE0M2Q2YmVjNWE5OGE1MmU4YzVkNTA1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogQGNsYXNz
IFdLUHJpbnRpbmdWaWV3RGF0YTsKIEBjbGFzcyBQREZEZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDAwMzIwZjU0
NTAzMzJhZmRjYTkwN2RhYTUxMmJmODJmOTZiZDUuLmEzMjFlMzZmN2E3YzMyNTNmMzkwOTVjYTll
NGZiMTFkYmEwOTE0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTUyMiw2ICsxNTIyLDExIEBACiAJCTk5NTVBNkY1MUM3OTg2RTAw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMg
LyogQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTU1QTZGNjFDNzk4
NkUzMDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZB
OTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3
OTg2RTUwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZB
OTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovOyB9OworCQk5OTZCMkI5ODI1RTI0
NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk2QjJCOTkyNUUy
NDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NkIyQjk2MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTcyNUUy
NDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi87IH07CisJCTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlLmggKi87IH07CisJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25T
ZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk5Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTk5Nzk2NTlGMjUzMTBB
NDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC00ODg0LDYgKzQ4ODksMTQgQEAKIAkJ
OTk1NUE2RjExQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvbkJhY2tlbmREaXNw
YXRjaGVycy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uQmFja2Vu
ZERpc3BhdGNoZXJzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5
NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1dG9tYXRpb25Qcm90b2NvbE9i
amVjdHMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9j
b2xPYmplY3RzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1
NUE2RjMxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3Rz
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5NkIyQjkzMjVFMjQz
MTQwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTYyNUUyNDQ4
MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OTZCMkI5NzI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUIyNUUyNTdFRTAw
NzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyog
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3
ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lv
bkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0Ex
RjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OTY1
OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC03ODU0LDYgKzc4NjcsNyBAQAogCQkJCTkx
OTc5NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAogCQkJ
CTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywK
IAkJCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1t
ICovLAorCQkJCTk5NkIyQkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5oICovLAogCQkJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8sCiAJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQz
NjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCkBAIC05MjAzLDYgKzkyMTcs
OCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIElu
c3BlY3RvckRlbGVnYXRlLmggKi8sCiAJCQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIElu
c3BlY3RvckRlbGVnYXRlLm1tICovLAorCQkJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAorCQkJCTk5NkIyQjlCMjVFMjU3RUUwMDcx
OTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTIyNCw2ICs5MjQwLDcg
QEAKIAkJCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4gKi8sCiAJCQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCAqLywKIAkJCQk5OUIxNjc1QTI1MkJCQURE
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywK
KwkJCQk5OTZCMkI5MzI1RTI0MzE0MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NE
MzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUx
RTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1
MUJENjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC05OTc5LDYgKzk5
OTYsNyBAQAogCQkJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLmggKi8sCiAJCQkJOTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQSUluc3Bl
Y3RvckV4dGVuc2lvbi5jcHAgKi8sCiAJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQ
SUluc3BlY3RvckV4dGVuc2lvbi5oICovLAorCQkJCTk5NkIyQjlFMjVFMjU4MkMwMDcxOTM3OSAv
KiBBUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJD
MDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhF
MjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdD
RTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5o
ICovLApAQCAtMTEwNTQsNiArMTEwNzIsOSBAQAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJOTk3OTY1OUIyNTMxMEE0
ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCisJCQkJOTk2QjJCOTUyNUUyNDQ4
MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk5OTZCMkI5NjI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTk5NkIy
Qjk3MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAv
KiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNCQkU0OUYxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQk1MUYwNjBE
RDE2NTQzMTc1MDBGMzI4MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKQEAgLTExNDc1LDYgKzExNDk2LDcgQEAKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEg
LyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkzNzkg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEw
MEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTc4
MCw2ICsxMTgwMiw3IEBACiAJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRl
eHRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwNTIzREJDNEJCMDAyNTc4OTIg
LyogSW5zcGVjdG9yQnJvd3NlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwMjIz
REJDNDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3Rv
clRhcmdldFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUz
RkEgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJENEQyQzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjI2Niw2ICsxMjI4OSw4IEBACiAJCQkJOTlCMTY3
NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQjk5MjVFMjQ0ODIwMDcxOTM3OSAv
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5OTZCMkI5QTI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVj
dG9yVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2
REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTQ5LDYgKzE0
MTc0LDcgQEAKIAkJCQlDMThGM0ExNTI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJl
ZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk2
QjJCOTgyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc4QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2Vi
S2l0Lm0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggZDEzOTBiZmQ2
ZjZiZTIzMTU2NjdjMDRmZDZiZWMzZDZhYzE1NTJkZC4uYzdhYzVkNmJmZjI2ODA3ZGUzZWQxYmJm
YmE5MmEyYTg4ZjNkNjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTI3Miw3ICsyNzIs
MzAgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGUoYm9vbCBhdmFpbGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlz
cGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUp
IH0pOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
blRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxl
cikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlk
U2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRIaWRlRXh0
ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiBXZWJDb3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6ZnJvbnRlbmRQYWdlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCBiOGRhOWE5
ZjhhNWE3NjZkMTM2MTIyNmFmMGM0ZTg1NjE2NTZiM2Q1Li4wMGEzZWUwMWVkMWY1Njk0MjRhNThk
NWM2NDc2NTBhNGYxOTcxYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0zOSw4ICs0
MywxMCBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlOworI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjsKKyNlbmRpZgogCiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAog
ICAgIDogcHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CkBAIC0xMDksNiAr
MTE1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZTsgfQogICAgIHZv
aWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBjb25zdCBXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7
CiAjZW5kaWYKKyAgICAgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAg
IGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTaG93
RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0
b3I6OkV4dGVuc2lvblRhYklEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggMWEyZDcxMDBhNWViMjhmNzVhODQ1ZWYyOWJh
MDE5MjUyNzM5Y2NlMy4uZWYyZTBmOTYyYWU4YzI2YjAzOGYzNjI1NTY5MGUzYjc3Yjc4MzFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5jcHAKQEAgLTM1NSw3ICszNTUsMzAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0
RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKICAgICBtX2Zyb250
ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXREaWFn
bm9zdGljTG9nZ2luZ0F2YWlsYWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKG1fZGlhZ25v
c3RpY0xvZ2dpbmdBdmFpbGFibGUpIH0pOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUl9URUxFTUVUUlkpCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiti
b29sIFdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7
CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9u
SUQsIGV4dGVuc2lvblRhYklEKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4
dGVuc2lvblRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvblRhYklEKQoreworICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmRpZEhpZGVFeHRlbnNpb25UYWIo
ZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuaAppbmRleCA5OTVjMjIyNDViZmZhNGU1ZGEyODZmM2RjYjY2NjEwNTMzMmRhODIxLi42Mjll
NDVkYzZmODBiYzIwMjUwN2ZiYWE3ODViNDVlMTY0NzIxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICsz
MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lv
blR5cGVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9y
Q29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKQEAgLTE0Nyw2ICsxNTEs
MTIgQEAgcHVibGljOgogICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKSBvdmVy
cmlkZSB7IHJldHVybiBtX2RpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlOyB9CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljRXZlbnQoY29uc3QgV1RGOjpTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSYpIG92ZXJyaWRl
OwogI2VuZGlmCisgICAgICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAg
ICBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2hv
d0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lv
blRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25UYWJJRCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9C
YWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1
cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcAppbmRleCAzYjliZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5
N2RmNzA3Y2QxLi5lYTBhNTFlODNhNzQxNmJmZmQyYWY2NzIzNmVjM2ViYjI5OGRkNDJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FQSUNhc3QuaD4KQEAgLTQ4LDM2ICs0OSwzOCBAQCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJ
bgogICAgIGF1dG8qIHBhZ2UgPSBpbnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKICAg
ICBBU1NFUlQocGFnZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZp
ZXIoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIgPSBXZWJQYWdlOjpm
cm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50
aWZpZXIsICp0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9y
UGFnZUlkZW50aWZpZXIpOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lv
bkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK09wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JF
eHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsK
ICAgICAgICAgc3dpdGNoIChyZXN1bHQuZXJyb3IoKSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpD
b250ZXh0RGVzdHJveWVkOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uRXJyb3I6OkV4ZWN1dGlvblN1c3BlbmRl
ZDoKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcjsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRl
cm5hbEVycm9yOwogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpJbnRlcm5hbEVycm9yOgotICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBBU1NFUlQobV9mcm9udGVuZENsaWVudCk7CiAgICAgYXV0byBnbG9i
YWxPYmplY3QgPSBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9u
dGVuZEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwogCiAgICAg
YXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9y
RXhjZXB0aW9uLmhhc192YWx1ZSgpKSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50
ZXJlZCBleGNlcHRpb24gd2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2
YWx1ZU9yRXhjZXB0aW9uLmVycm9yKCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAg
ICAgCiAgICAgLy8gSWYgdGhlIGV2YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0aGUgZnJv
bnRlbmQgcmV0dXJuZWQgYW4gZXJyb3Igc3RyaW5nLgpAQCAtODcsMTggKzkwLDE4IEBAIE9wdGlv
bmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnBhcnNlSW5zcGVjCiAgICAgaWYgKHNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpIHsKICAg
ICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxP
YmplY3QpOwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJDb250ZXh0RGVzdHJveWVkIl9z
KQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQ7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJy
b3IiX3MpCi0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVy
bmFsRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
SW50ZXJuYWxFcnJvcjsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVl
c3QiX3MpCi0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFs
aWRSZXF1ZXN0OworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0OwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRp
b25GYWlsZWQiX3MpCi0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OlJlZ2lzdHJhdGlvbkZhaWxlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcg
PT0gIk5vdEltcGxlbWVudGVkIl9zKQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpOb3RJbXBsZW1lbnRlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpOb3RJbXBsZW1lbnRlZDsKIAogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5h
bEVycm9yOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJu
YWxFcnJvcjsKICAgICB9CiAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2LDEwICsx
MDksMTAgQEAgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWMKIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcy4KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lv
bklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lv
bklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTExOSw3ICsxMjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaQogICAg
IH07CiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0
Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShh
cmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERl
c3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzMiwxNyArMTM1LDE3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3JFeHRlbnNpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklE
JiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeyBKU09O
OjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lvbklEKSB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQtPmZy
b250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5y
ZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9u
UmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVz
dWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE2NywxMCArMTcwLDEwIEBAIEpTQzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjo6dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0CiAgICAgcmV0dXJuIHZh
bHVlT3JFeGNlcHRpb24udmFsdWUoKS5nZXRPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29u
c3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9m
cm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgyLDcgKzE4
NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5
bmMoImNyZWF0ZVRhYkZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9u
UmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVz
dWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE5NSwxNCArMTk4LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgICAgIGF1dG8g
b2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChy
ZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9HKElu
c3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3Bl
Y3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludGVybmFsRXJyb3IpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFs
T2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hl
cigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmb3VuZFBy
b3BlcnR5ID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImV4dGVuc2lv
blRhYklEIl9zKSk7CiAgICAgICAgIGlmICghZm91bmRQcm9wZXJ0eSB8fCAhZm91bmRQcm9wZXJ0
eS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6SW50ZXJuYWxFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTIxMCwxMCArMjEzLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25h
bDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
bklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlv
bmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlP
cmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X2Zyb250ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpu
dWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0y
MzMsMTMgKzIzNiwxMyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVu
ZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dEFzeW5jKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMp
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpF
dmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIElu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpDb250ZXh0RGVzdHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRl
bmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7
CiAgICAgICAgIGlmICghZnJvbnRlbmRHbG9iYWxPYmplY3QpIHsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdU
Rjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzI1Nyw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1Ro
aXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAo
IW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQg
bm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0
ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBBU1NFUlQocmVzdWx0LnZhbHVlKCkpOwpAQCAtMjYyLDcgKzI2
NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJv
clBheWxvYWQgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3Ii
X3MpKTsKICAgICAgICAgaWYgKCFlcnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgewogICAgICAg
ICAgICAgaWYgKCFlcnJvclBheWxvYWQuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Ip
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjczLDcgKzI3
Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1
bHRQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgInJlc3Vs
dCJfcykpOwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVk
UmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZnJvbnRlbmRHbG9i
YWxPYmplY3QsIHJlc3VsdFBheWxvYWQpOwogICAgICAgICBpZiAoIXNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0yODEsNiArMjg0LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRh
YiB7IGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhp
ZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQs
IGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRIaWRl
RXh0ZW5zaW9uVGFiIHsgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9y
UGFnZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5oCmluZGV4IGYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNj
YjM2MTcuLjI0MjE4NGVlZTNkZmI0NmMxMTg5ZWJkNjMwOGQyODFmMzRjNzkyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+CkBAIC02MywxNiArNjQsMjMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAv
LyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgotICAgIHZv
aWQgcmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2ws
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBj
cmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBT
dHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VV
UkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFi
SUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3Jp
cHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlv
bmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZv
aWQgcmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6
RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9p
ZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1l
VVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+Jik+JiYpOworCisgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgorI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
VGFiSUQmKTsKKyAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpF
eHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyNlbmRpZgog
CiBwcml2YXRlOgogICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09i
amVjdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25S
ZXN1bHQpOwotICAgIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsKKyAgICBPcHRpb25hbDxJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0KTsKIAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbgppbmRleCBkMTc0MDYwMjhmYWYzN2I1MDY0MTQyNWZiNjBkOGZmMGUyM2M0NDU0Li42
ZTgwYzcwZGZjYjVkYmI0NTgyMTUxZDA5YjU2NTM0ZjMyMzU5ZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMs
MTEgKzIzLDExIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiBtZXNzYWdl
cyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7Ci0g
ICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5h
bWUpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBy
ZXN1bHQpIEFzeW5jCi0gICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQp
IC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1
bHQpIEFzeW5jCisgICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJp
bmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPiByZXN1bHQpIEFzeW5jCisgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQpIC0+IChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1
bHQpIEFzeW5jCiAKLSAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklE
LCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBl
Y3RlZDxTdHJpbmcsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5
bmMKLSAgICBFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0
cmluZyBzY3JpcHRTb3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4g
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvbkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3Ry
aW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3Vy
Y2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJl
c3VsdCkgQXN5bmMKKyAgICBFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIFN0cmluZyBzY3JpcHRTb3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlv
bmFsPFVSTD4gY29udGV4dFNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50
U2NyaXB0Q29udGV4dCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421217</attachid>
            <date>2021-02-22 11:52:42 -0800</date>
            <delta_ts>2021-02-22 12:11:04 -0800</delta_ts>
            <desc>Patch v2.0</desc>
            <filename>bug-222252-20210222115242.patch</filename>
            <type>text/plain</type>
            <size>115970</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJlYjllZWQ4YThlMzJh
ZDk5NzgzOTMyZTQ5MGM4ZmMxNmQ0ZjA1ZS4uZDA1NThjYTZiYjhhNTZkZDU2N2Y0NGI2YTY0ZTIz
MmM3MDhiNGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIxICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM4NTM2NWMyZjExYmRmNjdlOGJl
NWE2ZDgwMTIwY2QwMzA3ZTNjZWMuLmU2NDAwYjE1OGI4ZmZlY2E4Njc4Y2FiYWYxYzc2NWUwYWMw
OWZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAy
LTIxICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIElu
c3BlY3RvcjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2
aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzEyMDY2ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6IFVwZGF0
ZSBjb21tZW50IGZvciBuYW1lc3BhY2UgY2hhbmdlLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hl
ZCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuZGV0YWNoZWQpOgorICAgICAgICBXaGVuIGFuIGV4dGVuc2lvbiB0YWIgaXMgc2hvd24g
b3IgaGlkZGVuLCBub3RpZnkgdGhlIGZyb250ZW5kIGhvc3QgYWJvdXQgdGhlIGV2ZW50LgorCiAy
MDIxLTAyLTE5ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENTUyBHcmlkIEluc3BlY3RvcjogdXNlIGEgY29sb3IgcGFsZXR0
ZSBmb3IgZGVmYXVsdCBncmlkIG92ZXJsYXkgY29sb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NjUxZGI3ZjU2
YzhjZjQxMjBmNTk3ZmM0YWVlOTJmM2FkZDljYjUuLmFlMzg5MGFiYjk0MWU4ZGMzYzVlNmY0ZDdm
MzQ4YTI1MGM1NTE3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU2IEBACisyMDIxLTAyLTIxICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rv
cjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2
ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNsaWVudHMgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlm
ZWN5Y2xlIGV2ZW50cy4gRm9yIG5vdyB0aGlzIGluY2x1ZGVzCisgICAgICAgIGV4dGVuc2lvbiB0
YWIgc2hvd24vaGlkZGVuLCBidXQgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUgcGFnZSBuYXZpZ2F0
aW9ucyBhbmQgb3RoZXIgZXZlbnRzIGV4cG9zZWQKKyAgICAgICAgdmlhIFdlYiBFeHRlbnNpb25z
IEFQSS4KKworICAgICAgICBUaGlzIGlzIGltcGxlbWVudGVkIGF0IHRoZSBXZWJLaXQgbGV2ZWwg
dmlhIG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBtZXRob2RzLiBUaGlzIGdldHMgcGlwZWQg
dG8KKyAgICAgICAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdmlhIElQ
Qywgd2hpY2ggdGhlbiBwYXNzZXMgb24gdGhlIGV2ZW50IHRvIF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLgorCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlIGlzIGEg
ZGVsZWdhdGUgb2YgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLiBJdCdzIGZvciByZWNlaXZpbmcgbGlm
ZWN5Y2xlIGV2ZW50cywgYW5kCisgICAgICAgIGlzIGltcGxlbWVudGVkIHNpbWlsYXJseSB0byBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkgbm93IGtlZXBzIGEgbWFwIG9mCisgICAgICAgIGV4dGVuc2lvbiBBUEkgb2JqZWN0cyBzbyB0
aGF0IGl0IGNhbiBjYWxsIG91dCB0byB0aGUgdGhlIGFwcHJvcHJpYXRlIGV4dGVuc2lvbiBBUEkg
b2JqZWN0J3MgY2xpZW50L2RlbGVnYXRlLgorCisgICAgICAgIFRvIGJldHRlciBoYW5kbGUgdGhl
IHNpdHVhdGlvbiB3aGVyZSBjbGllbnQgY29tcGxldGlvbiBoYW5kbGVycyBtYXkgYmUgaW52b2tl
ZCBhZnRlciB0aGUgaW5zcGVjdG9yIHBhZ2UgaGFzIGJlZW4gdG9ybiBkb3duLAorICAgICAgICBz
d2l0Y2ggV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdG8gYmUgUmVmQ291
bnRlZCBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0ciBzbyB0aGF0IHRoZSBhcHByb3ByaWF0ZQor
ICAgICAgICBBUEkgb2JqZWN0IGNhbiBiZSByZXRyaWV2ZWQgaW4gdGhlIGFzeW5jIElQQyByZXBs
eSBibG9jay4gKElQQyBtZXNzYWdlIHJlY2VpdmVyIGNvZGUga25vd3MgaG93IHRvIHJlZiB0aGUg
cmVjZWl2ZXIKKyAgICAgICAgaWYgaXQgZXhwZWN0cyB0byBkZWxpdmVyIGEgcmVzcG9uc2UpLgor
CisgICAgICAgIExhc3RseSwgc2luY2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIGF0IHRoZSBXZWJDb3JlIGxldmVsLCBJIGRlY2lkZWQgdG8gbW92ZSB0aGUg
Y29udGVudHMKKyAgICAgICAgb2YgSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCB0byB0aGUgSW5z
cGVjdG9yIG5hbWVzcGFjZS4gSXQgbWFkZSBtb3JlIHNlbnNlIHRoYW4gdHlwaW5nIG91dCBXZWJD
b3JlOjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcgorICAgICAgICBhbmQgdGhlIGxpa2UuIEFzIHBh
cnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSBzdHJpbmcgdHlwZSBhbGlhc2VzIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQgYW5kIEluc3BlY3RvcjpFeHRlbnNpb25UYWJJRCBhcmUKKyAgICAgICAgbm93IGRl
ZmluZWQgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaC4KKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgIEFkZCBnZW5lcmF0ZWQgZmlsZXMgZm9yIG5ldyBtZXNzYWdlIHJlY2VpdmVyLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyBmb3IgaW5zcGVjdG9yIGV4
dGVuc2lvbiBjbGllbnQvZGVsZWdhdGUgYm9pbGVycGxhdGUgY2xhc3Nlcy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JF
eHRlbnNpb25UeXBlcy5oOgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZSB0aGVzZSB0eXBlcyBhbmQgaGVscGVycyB0byBJbnNwZWN0b3IgbmFtZXNw
YWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudCk6IEFkZCBhIGNs
aWVudCBtZW1iZXIgd2hpY2ggaXMgdXNlZCB0byBjYWxsIG91dCB0byBfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVU
YWIpOiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpl
dmFsdWF0ZVNjcmlwdCk6IEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaC4KKyAgICAgICAg
KEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFi
KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tJbnNw
ZWN0b3IgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVybnMgYW4gaW5pdGlhbGl6ZWQg
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpk
aXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVy
bnMgYW4gaW5pdGlhbGl6ZWQgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6
IEFkZCB0aGUgZGVsZWdhdGUgcHJvcGVydHkgYW5kIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIG1l
bnRpb24gaXRzIGludGVuZGVkIHVzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDogQWRkIGRlbGVnYXRlIHN0b3JhZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtf
V0tJbnNwZWN0b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgIEFkZGVkLgorCisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTp0YWJJY29u
VVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRml4IG5hbWVzcGFjZXMuCisgICAg
ICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpmcmFtZVVSTDpjb250
ZXh0U2VjdXJpdHlPcmlnaW46dXNlQ29udGVudFNjcmlwdENvbnRleHQ6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6ICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIE9iakMtdG8tQysrIGJyaWRnZSBjb2Rl
IHRvIGNvbm5lY3QgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgKHVzZWQgYnkgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpCisgICAgICAgIHRvIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlICh1c2VkIGJ5IGNsaWVudCBjb2RlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aDogRml4IG5hbWVzcGFjZXMuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgIE1ha2UgdGhpcyBjbGFzcyBhbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gSXQgcmVjZWl2ZXMg
bWVzc2FnZXMgZm9yIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOgorICAgICAgICBNYWtlIHRoaXMgY2xhc3Mg
YW4gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBFeHBh
bmQgdGhpcyBjb2RlIG91dCBzbyB0aGF0IHdlIGNhbiBzYXZlIEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uIGluc3RhbmNlcyBpbnRvIG91ciBvd24gbWFwCisgICAgICAgIGJlZm9yZSBzZW5kaW5nIGl0
IHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4gVGhpcyBtYXAga2VlcHMgc3Ryb25nIHJlZmVyZW5j
ZXMgdG8gdGhlIGV4dGVuc2lvbgorICAgICAgICBBUEkgb2JqZWN0cyBzaW5jZSB0aGV5IG5lZWQg
dG8gYmUgdXNlZCB0byBzZW5kIGV2ZW50cyBhdCBhbiBhcmJpdHJhcnkgdGltZSBpbiB0aGUgZnV0
dXJlLgorICAgICAgICBQcmV2aW91c2x5LCB0aGV5IHdlcmUga2VwdCBhbGl2ZSAob3Igbm90KSBi
eSB0aGUgQVBJIGNsaWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIFdoZW4g
dGhlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVnaXN0ZXJlZCwgcmVtb3ZlIHRoZSBhc3NvY2lh
dGVkIGV4dGVuc2lvbiBBUEkgb2JqZWN0IChhbmQKKyAgICAgICAgb3VyIHN0cm9uZyByZWZlcmVu
Y2UgdG8gaXQpLgorCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOiBGaXggbmFtZXNwYWNlcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRTaG93RXh0ZW5z
aW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVHJ5IHRvIGxv
b2sgdXAgdGhlIGFzc29jaWF0ZWQgQVBJIG9iamVjdCBmb3IgdGhlIGV4dGVuc2lvbiBhbmQgZm9y
d2FyZCB0aGUgZXZlbnQgdG8KKyAgICAgICAgdGhlIGNsaWVudCBvZiB0aGUgQVBJIG9iamVjdCwg
d2hpY2ggaXMgdWx0aW1hdGVseSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaDogRml4IFVuaWZpZWRTb3VyY2Vz
IGZhbGxvdXQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcubW06CisgICAgICAgICgtW1dLRm9jdXNlZEZvcm1Db250cm9sVmlldyBfd2hlZWxD
aGFuZ2VkV2l0aEV2ZW50Ol0pOiBGaXggVW5pZmllZFNvdXJjZXMgZmFsbG91dC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25U
YWIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xs
ZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gRGVmZXIgdG8gdGhl
IGV4dGVuc2lvbiBjb250cm9sbGVyIHRvIGhhbmRsZSBmdXJ0aGVyIGV2ZW50IHByb3BhZ2F0aW9u
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBGaXggbmFtZXNw
YWNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgQmUgbW9yZSBwcmVjaXNlIGFi
b3V0IGFzc29jaWF0aW5nIHRoaXMgbWVzc2FnZSByZWNlaXZlciB3aXRoIHRoZSBpbnNwZWN0b3Ig
cGFnZSdzIGlkZW50aWZpZXIuCisgICAgICAgIEFsc28sIHNhdmUgdGhlIHBhZ2UgaWRlbnRpZmll
ciBzbyB0aGF0IG1ldGhvZHMgdGhhdCBuZWVkIHRvIHNlbmQgSVBDIG1lc3NhZ2VzIGNhbiBzZW5k
CisgICAgICAgIHRoZSBtZXNzYWdlIHRvIHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uSUQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUlu
c3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKToKKyAgICAgICAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRIaWRl
RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuCisKIDIwMjEtMDItMjAgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcGRhdGUgV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjIHdpdGggc29tZSBuZXcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGU4ZDEz
YTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4NzA2NTlhNDk0
YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK3VzaW5n
IEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6
U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRS
ZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1lICovLCBjb25z
dCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYK
KyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
JiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0NzE5NmU4ZTc3
OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNkMzk4Y2Q5MGQ3
YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0
IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAKK2Jvb2wgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQt
PnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFi
KGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4OTNiYjM1NTNh
ZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi45YWJhODZhNzM0MWQ3NjJmZGU3N2U5MjVlYjY5
NjI3OGM2MTBkODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oCkBAIC0xMzYsNiArMTM2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
Z0RpYWdub3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgU3RyaW5nJiBw
YXlsb2FkKTsKICNlbmRpZgogCisgICAgYm9vbCBzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKTsKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFi
SUQpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVuZCBjbGFzcyBGcm9udGVuZE1lbnVQ
cm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5pZGwKaW5kZXggMTdlOGY1YjhkMmFlYzg1N2RjNmY1NzE2NGFkZTdhMTQ3Zjk3NDc2
Mi4uMzJjNTc0M2EwZTYzZDU4MjM5OTgxM2RkYzMwMzBhODM0NDI0NzlmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKQEAgLTk1
LDYgKzk1LDEwIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0Rp
YWdub3N0aWNMb2dnaW5nOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JfVEVMRU1FVFJZXSB1
bmRlZmluZWQgbG9nRGlhZ25vc3RpY0V2ZW50KERPTVN0cmluZyBldmVudE5hbWUsIERPTVN0cmlu
ZyBjb250ZW50KTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1cHBvcnRzV2Vi
RXh0ZW5zaW9uczsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIHVuZGVm
aW5lZCBkaWRTaG93RXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwgRE9NU3RyaW5n
IGV4dGVuc2lvblRhYklEKTsKKyAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNd
IHVuZGVmaW5lZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwgRE9N
U3RyaW5nIGV4dGVuc2lvblRhYklEKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4dE1lbnVJdGVt
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCmluZGV4IDZmYmMzN2FlYTdh
MTg5M2IxZjcwMmI1NGNiYzI3MDc1OGJlOTVlNTQuLjhlYWZlMDM5MjRkNTk2YWJjZGRlYWJjYzFi
ZWVhMmVjYTNkNDFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwpA
QCAtNDAsNyArNDAsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBXZWJJbnNw
ZWN0b3JFeHRlbnNpb24KICAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0aGlzLl9kaXNw
bGF5TmFtZTsgfQogfTsKIAotLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5vbnltb3VzIHdp
dGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3IuCisvLyBOb3RlOiB0aGVzZSB2YWx1ZXMgYXJlIHN5bm9ueW1vdXMgd2l0aCB0aGUgdmFsdWVz
IG9mIGVudW0gY2xhc3MgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvci4KIFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbi5FcnJvckNvZGUgPSB7CiAgICAgQ29udGV4dERlc3Ryb3llZDogIkNvbnRleHRE
ZXN0cm95ZWQiLAogICAgIEludGVybmFsRXJyb3I6ICJJbnRlcm5hbEVycm9yIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3Rv
ckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKaW5k
ZXggMzNmZGZhMDBmZDQzY2MwMTlmY2QxNGNmYmU5MDE5ZjU5N2QwYTgzZS4uM2U3ZmRlOTk1Y2Ew
ZDlhNmMzZTRmM2RlZDJhMDRiNzVmNGU3MDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNiArNTUsMjYgQEAgV0ku
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50VmkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAg
YXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKworICAgICAgICBj
b25zb2xlLmxvZyhgRXh0ZW5zaW9uIHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRpc3BsYXlOYW1l
fSB3YXMgYXR0YWNoZWQ6IGAsIHRoaXMpOworCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmRpZFNob3dFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCB0
aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCisgICAgZGV0YWNoZWQoKQorICAgIHsKKyAg
ICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKKworICAgICAgICBjb25zb2xlLmxvZyhgRXh0ZW5zaW9u
IHRhYiBmb3IgJHt0aGlzLl90YWJJbmZvLmRpc3BsYXlOYW1lfSB3YXMgZGV0YWNoZWQ6IGAsIHRo
aXMpOworCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRl
bnNpb25zKQorICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhpZGVFeHRlbnNp
b25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCB0aGlzLl9leHRlbnNpb25UYWJJRCk7
CisgICAgfQorCiAgICAgdGFiSW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGFi
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IDQ2MzU1YTExOGYyOTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUuLjY4YTI2ZDZh
NDZjNzlkMDc4NzQ5YjJhNTlmZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclByb3h5
TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCBjYjA0ZTFhNjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVjNzJhLi41YmEy
ODgxYTU2ZTNiMmIzNDM4MmRjZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKIAlVSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkgXAogCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CmluZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRjNzBmNDI2NzE2
M2VjNTkuLjM1YjI4MGExMGFlMTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1OCw5IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBb
JzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2Fn
ZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAn
SVBDOjpTZW1hcGhvcmUnOiBbJyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAgJ0luc3BlY3Rv
cjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdl
dC5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3Rv
ckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bDo6Q29ubmVjdGlvblR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaD4nXSwKKyAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsn
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcic6
IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGltZSc6IFsnPHd0
Zi9NZWRpYVRpbWUuaD4nXSwKQEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9u
cy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2Vz
dHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVy
ZVR5cGVzLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzog
WyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCBiYjNl
ZWU4OGRlZmJjNGY4NzAwYzkwNTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzExZGJhNzE0ZWFh
MDE1ZjNmMjZmOWY3ZDZjMjdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCi1XVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5n
KEluc3BlY3RvckV4dGVuc2lvbkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJy
b3JUb1N0cmluZyhFeHRlbnNpb25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICBj
YXNlIEV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1cm4gIkludGVy
bmFsRXJyb3IiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJl
cXVlc3Q6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CiAgICAgICAg
IHJldHVybiAiSW52YWxpZFJlcXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkOgogICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgorICAgIGNhc2Ug
RXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0dXJuICJSZWdp
c3RyYXRpb25GYWlsZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Tm90
SW1wbGVtZW50ZWQ6CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAg
ICAgICAgIHJldHVybiAiTm90SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3Zjg1NzQxNmZk
YzRmZmI1MjA5MmYyNTM3NzU2MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkxODJiNDU4NGQ4
OWViZjFmY2Y3MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JF
eHRlbnNpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVu
c2lvblR5cGVzLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgRXhjZXB0aW9uRGV0YWlsczsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNz
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworZW51bSBjbGFzcyBFeHRlbnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEluc3BlY3Rv
ckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JFeHRlbnNpb25J
RCA9IFdURjo6U3RyaW5nOwotdXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3Vs
dCA9IEV4cGVjdGVkPEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj47Cit1
c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBX
VEY6OlN0cmluZzsKK3VzaW5nIEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxF
eHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiwgRXh0ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIDogdWludDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVycm9yIDogdWlu
dDhfdCB7CiAgICAgQ29udGV4dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9yLAogICAgIElu
dmFsaWRSZXF1ZXN0LApAQCAtNTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IgOiB1aW50OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07CiAKLVdURjo6
U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3IpOworV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJv
cik7CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAK
IG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8Ci0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0gICAgICAgIFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCi0gICAgICAg
IFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCi0gICAgICAg
IFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAotICAgICAg
ICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCi0g
ICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCisg
ICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I6OkludGVybmFsRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I6OkludmFsaWRSZXF1ZXN0LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpS
ZWdpc3RyYXRpb25GYWlsZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5v
dEltcGxlbWVudGVkCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlNWRi
NmMxOTc1NDVhMTlhMWVlZWJlY2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1NjZmYzhmYjU4
YzRlNjljZTg3MmUyZGEyMWI1NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjIsNiAr
NDIyLDcgQEAgVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBV
SVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNz
L0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNzL0luc3BlY3Rv
ci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nlc3MvSW5zcGVj
dG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
aW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmlu
ZGV4IDA3YmU4OTQ4ZGMyZmRkYjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3MDBkYTFmYWE1
NmVjMjNhOTY5YWYzYWExNzZiMzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00NSwyMCArNDUs
MjUgQEAgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUo
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bnNwZWN0b3JFeHRlbnNpb24oaWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJp
bmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYg
c291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVu
dChVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudCA9IGNsaWVudC5tb3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JF
eHRlbnNpb246OmNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RG
OjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5jcmVhdGVUYWJG
b3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkws
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JFeHRlbnNp
b246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYg
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNj
cmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJ
bnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3Jp
cHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlv
bmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29s
PiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2QyZTc4ZTVkNjEz
OTEwNWFlOGVhN2ZhZjllMGQ2Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0YzkzOTdjMzMxODFh
YTU3ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckV4dGVuc2lvbi5oCkBAIC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5
cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsMTQgKzQ4
LDE4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBX
VEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdU
Rjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3Qg
T3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAg
IHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVS
TCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBX
VEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1l
VVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29u
c3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7
CisKKyAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbkNsaWVudD4mJik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRXh0ZW5zaW9u
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7
CiAgICAgV2Vha1B0cjxXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgxNDIxNTVhMGIz
MjEyOGY3OTEyMzEzOGUxODgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNp
b25UeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgewor
CitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lvbkNsaWVudCgp
ID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlk
ZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgeyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3MGIwNWI0NDMx
YmMzMzdmYzJmYzkuLjZkYTYzN2VhMjlkYTAzOTBkOGNiNDUwMzMzYTk4MjY5YjlhNzhiOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3Iu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5t
bQpAQCAtMTg2LDEzICsxODYsMTkgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIC0gKHZv
aWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxh
eU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
TlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFt
ZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVu
c2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNh
bGwgdGhpcyBtZXRob2QgcHJpb3IgdG8gY3JlYXRpbmcgYSBmcm9udGVuZCAoaS5lLiwgd2l0aCAt
Y29ubmVjdCBvciAtc2hvdykuCisgICAgaWYgKCFfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9s
bGVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3Ry
aW5nKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KX1dLCBuaWwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJv
bGxlcigpLT5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVu
c2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAg
IGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29k
ZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJv
cktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1d
LCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FwdHVy
ZWRCbG9jayhuaWwsIHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90
ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpKSkpOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihy
ZXN1bHQudmFsdWUoKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihb
TlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3du
IHVzZXJJbmZvOm5pbF0sIG5pbCk7CkBAIC0yMDIsOSArMjA4LDE1IEBAIC0gKHZvaWQpcmVnaXN0
ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5T
U3RyaW5nICopCiAtICh2b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVu
c2lvbiAqKWV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAg
IF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4
dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNh
cHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8
Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAvLyBJdCBpcyBhbiBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHByaW9yIHRvIGNyZWF0
aW5nIGEgZnJvbnRlbmQgKGkuZS4sIHdpdGggLWNvbm5lY3Qgb3IgLXNob3cpLgorICAgIGlmICgh
X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
clVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IElu
c3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCl9XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfaW5z
cGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCktPnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5z
aW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVy
ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29s
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5T
TG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lv
bkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgY2FwdHVyZWRC
bG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JV
bmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNw
ZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCBkMTEyYTBj
NGMzM2JiNjJiZjViMzY4MzJmODMyMGIwZjJlNjFmZmE4Li45YmU2MTMwODE4YjI3MGE1OGQ2M2Qy
Y2Q3Yzg3NDllOTJlYjBjMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0zMyw2ICszMyw4IEBA
CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZTsKKwogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQog
QGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdAogCkBAIC00NSw4ICs0
NywxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAgKiBAcGFyYW0g
dGFiSWNvblVSTCBUaGUgbG9jYXRpb24gb2YgYW4gaW1hZ2UgcmVzb3VyY2UgdG8gdXNlIGZvciBk
aXNwbGF5IGluIHRoZSBjcmVhdGVkIHRhYidzIHRpdGxlLgogICogQHBhcmFtIHNvdXJjZVVSTCBU
aGUgbG9jYXRpb24gb2YgdGhlIG1haW4gcmVzb3VyY2UgdG8gbG9hZCBpbiB0aGUgbmV3IHRhYidz
IGlmcmFtZSBicm93c2luZyBjb250ZXh0LgogICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRo
ZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gY3JlYXRpbmcgYSB0YWIgc3Vj
Y2VlZHMgb3IgZmFpbHMuCisgKiBAZGlzY3Vzc2lvbiBUaGUgaW5zcGVjdG9yVGFiSWRlbnRpZmll
ciBwcm92aWRlZCB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGNhbiBiZSB1c2VkIHRvIGlkZW50
aWZ5IHRhYnMKKyAqIHRoYXQgYXJlIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byBfV0tJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZSBtZXRob2RzLgogICovCi0tICh2b2lkKWNyZWF0ZVRhYldpdGhO
YW1lOihOU1N0cmluZyAqKXRhYk5hbWUgdGFiSWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNv
dXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNF
cnJvciAqIF9OdWxsYWJsZSwgTlNTdHJpbmcgKiBfTnVsbGFibGUgaW5zcGVjdG9yVGFiSUQpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0
YWJOYW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICop
c291cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUs
IE5TU3RyaW5nICogX051bGxhYmxlIGluc3BlY3RvclRhYklkZW50aWZpZXIpKWNvbXBsZXRpb25I
YW5kbGVyOwogCiAvKioKICAqIEBhYnN0cmFjdCBFdmFsdWF0ZXMgSmF2YVNjcmlwdCBpbiB0aGUg
Y29udGV4dCBvZiB0aGUgaW5zcGVjdGVkIHBhZ2Ugb24gYmVoYWxmIG9mIHRoZSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24uCkBAIC02Myw2ICs2NywxMiBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSkpCiAKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcg
KmV4dGVuc2lvbklEOwogCisvKioKKyAqIEBhYnN0cmFjdCBBbGxvd3MgdGhlIGNsaWVudCB0byBy
ZWNlaXZlIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzIHRoYXQKKyAqIGFyaXNlIGZyb20gd2l0
aGluIFdlYiBJbnNwZWN0b3IuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+IGRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4
dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0KaW5kZXggMjY3ZjBlZjkzMzgzOTU4NDM3ODQwZjAwYzJiYWE3NmJmZDc5
Y2Y1ZS4uN2JjZjU4ZWM5ZTU3MWMwZTExN2Q3ZjQ3ZDQxYTBiYWYxYTIyNWYzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLm1tCkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgi
CiAjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgogI2ltcG9ydCAiV0tFcnJvci5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTMzLDggKzM2LDYgQEAKICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQotCiBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uCiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtNDksMTMgKzUwLDI2IEBAIC0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0CiAgICAgcmV0dXJuICpfZXh0ZW5zaW9uOwogfQogCistIChpZCA8X1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0
ZS0+ZGVsZWdhdGUoKS5hdXRvcmVsZWFzZSgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihp
ZDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBpZiAoIWRl
bGVnYXRlICYmICFfZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIF9kZWxlZ2F0ZSA9
IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4oc2VsZiwgZGVs
ZWdhdGUpOworfQorCiAvLyBNQVJLOiBBUEkKIAogLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZToo
TlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VV
Ukw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3Ig
KiwgTlNTdHJpbmcgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfZXh0ZW5zaW9uLT5jcmVh
dGVUYWIodGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9leHRlbnNp
b24tPmNyZWF0ZVRhYih0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVz
dWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6
ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JU
b1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxv
Y2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVj
dG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTY3LDkgKzgxLDkgQEAgLSAodm9pZCll
dmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICop
ZnJhbWVVUkwgY29udGUKIHsKICAgICBPcHRpb25hbDxVUkw+IG9wdGlvbmFsRnJhbWVVUkwgPSBm
cmFtZVVSTCA/IG1ha2VPcHRpb25hbChVUkwoZnJhbWVVUkwpKSA6IFdURjo6bnVsbG9wdDsKICAg
ICBPcHRpb25hbDxVUkw+IG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNl
Y3VyaXR5T3JpZ2luID8gbWFrZU9wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6
IFdURjo6bnVsbG9wdDsKLSAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3Vy
Y2UsIG9wdGlvbmFsRnJhbWVVUkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNh
cHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAo
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlv
bmFsRnJhbWVVUkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxv
Y2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9y
OjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBO
U0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNp
b25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgY2Fw
dHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5
OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5p
bCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZTg0MTRkMWYwODBmZjI1YTg0MTc0
Y2EzZDg2NGJmY2RkMjFiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFRBUkdFVF9PU19PU1gKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tJbnNw
ZWN0b3JFeHRlbnNpb247CisKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZSA8TlNPYmplY3Q+CitAb3B0aW9uYWwKKworLyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4g
YSB0YWIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uIGhhcyBiZWVuIHNob3duLgorICog
QHBhcmFtIGV4dGVuc2lvbiBUaGUgZXh0ZW5zaW9uIHRoYXQgY3JlYXRlZCB0aGUgc2hvd24gdGFi
LgorICogQHBhcmFtIHRhYklkZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhlIHRhYiB0aGF0IHdh
cyBzaG93bi4KKyAqLworLSAodm9pZClpbnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4
dGVuc2lvbiAqKWV4dGVuc2lvbiBkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICop
dGFiSWRlbnRpZmllcjsKKworLyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uIGhhcyBiZWVuIGhpZGRlbi4KKyAqIEBwYXJhbSBl
eHRlbnNpb24gVGhlIGV4dGVuc2lvbiB0aGF0IGNyZWF0ZWQgdGhlIGhpZGRlbiB0YWIuCisgKiBA
cGFyYW0gdGFiSWRlbnRpZmllciBJZGVudGlmaWVyIGZvciB0aGUgdGFiIHRoYXQgd2FzIGhpZGRl
bi4KKyAqLworLSAodm9pZClpbnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lv
biAqKWV4dGVuc2lvbiBkaWRIaWRlVGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRl
bnRpZmllcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFRB
UkdFVF9PU19PU1gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKaW5kZXggMGEwZmFi
YzhhMzcwMmQzMjcyOTZmNTcxNjQwZWMxNzFmYzQ1MTFkZi4uYWUzMTY5ODc5YzY5N2JhZjJiMDMw
MTkyMTJhYmQzY2I3MDRiNmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgK
QEAgLTMwLDYgKzMwLDEwIEBACiAjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKICNp
bXBvcnQgIldLT2JqZWN0LmgiCiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CkBAIC00MSw2
ICs0NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JF
eHRlbnNpb24+IHsKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICgpIDxXS09iamVj
dD4gewogQHBhY2thZ2UKICAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+IF9leHRlbnNpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmluZGV4IDgyMDY2M2FiZDliMmFiMjQ3Njg0
YzNjODFjZDBhYzk1NzI2MGJjNGIuLjU2YjVlZTg2ZWNhOTY0OTA4NGQ1MzM1MDhmYmVlMzM1MGZh
ZDQ1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0K
QEAgLTE1OSwxNiArMTU5LDIyIEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+IF9OdWxsYWJsCiAKIC8vIE1BUks6
IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcwogCi0tICh2b2lkKXJlZ2lzdGVyRXh0
ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmlu
ZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXJlZ2lzdGVy
RXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0
cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcgogewog
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3BlY3RvclBy
b3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQs
IGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRhaW5QdHIoZXh0ZW5zaW9u
SUQpLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSWYgdGhpcyBt
ZXRob2QgaXMgY2FsbGVkIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgd2l0aCAtbG9hZEZv
ckRlYnVnZ2FibGU6YmFja2VuZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBub3Qgc3VjY2VlZC4KKyAg
ICBpZiAoIW1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVy
ZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpfV0sIG5pbCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250
cm9sbGVyKCktPnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3By
b3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChFeHBlY3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
IXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9j
YWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJl
ZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
clVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IElu
c3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2so
bmlsLCB3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0
ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4
dGVuc2lvbkNvbnRyb2xsZXIoKSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBw
ZXIocmVzdWx0LnZhbHVlKCkpKTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpAQCAtMTc4LDkgKzE4NCwxNCBAQCAtICh2b2lkKXJl
Z2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1l
OihOU1N0cmluZyAqKQogLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JF
eHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
LSAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHByaW9yIHRv
IGNyZWF0aW5nIGEgZnJvbnRlbmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2VuZENvbW1h
bmRzVVJMOiwgaXQgd2lsbCBub3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5zcGVjdG9y
UHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtu
b3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0
b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3QpfV0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVtb3RlSW5z
cGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckV4dGVuc2lvbihl
eHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBj
YXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVk
PGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAgICAgICAgICBjYXB0
dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6
IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTkwZWU3MmVhZjY2OWU5ZTUwNzA4MTQ0OWI2MDA4
YjBhOTk2NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorCisjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBv
cnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFz
cyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxf
V0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZSgpOworCisgICAgUmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZT4+IGRlbGVnYXRlKCk7CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQg
eworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAg
IGV4cGxpY2l0IEluc3BlY3RvckV4dGVuc2lvbkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZSYpOworICAgICAgICB+SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICAvLyBBUEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2
b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlJiBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAg
ICBXZWFrT2JqQ1B0cjxfV0tJbnNwZWN0b3JFeHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9u
OworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1f
ZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lv
bkRpZFNob3dUYWJXaXRoSWRlbnRpZmllciA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0
ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRo
b2RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMThmYTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4ZTJiYTdkN2M5MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2Nv
YS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJX
ZWJJbnNwZWN0b3JQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24s
IGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2lu
c3BlY3RvckV4dGVuc2lvbihpbnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRl
bGVnYXRlKQoreworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNo
b3dUYWJXaXRoSWRlbnRpZmllciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGluc3BlY3RvckV4dGVuc2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlm
aWVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0
ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVu
c2lvbi0+X2V4dGVuc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50PigqdGhpcykpOworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fklu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9X
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6
OmRlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAg
ICA6IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0
b3JFeHRlbnNpb25DbGllbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4
dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7
CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGlu
c3BlY3RvckV4dGVuc2lvbjptX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9y
RXh0ZW5zaW9uLmdldCgpLmdldCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25U
YWJJRF07Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4
dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRh
YldpdGhJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9
IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVn
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9u
Om1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCku
Z2V0KCkgZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmNWEwMjJlYTJlMGM5NzNkYjgzMjlm
MDg4YzU4YzcwMTkzYjA5M2IyLi43ZTAzMDNkZGE5ZTJiZTY3ZmQ2OTRkMjZhNTZmYThhYTI4MTUw
N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQog
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Km1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9leHRlbnNpb25Db250
cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eT4oKm1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZSgqbV9pbnNwZWN0b3JQYWdl
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDBmMWMwOThmNDM1OWQ0
M2U1YmU4NWRmMTdiNmI4NjUzZjEwZWI0MTAuLmE0Mzg5ODRhNjUzNzJlNDdiMTI5OWY1NGM2NmU0
ZWQ1Nzk3NzQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorICAgIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9leHRlbnNpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICAgICAKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkq
IG1faW5zcGVjdG9yUGFnZSB7IG51bGxwdHIgfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKICNl
bmRpZgogICAgIAogICAgIFJlZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5jcHAKaW5kZXggMjUwMTAyMjlhYmNkMjY4NGRmNWVjMGJlOWNjNTAyYWFjMzQ0
NzFkZi4uMWJjNjljOTVmNTNkYjYwMWZkMmQ0ZmZmNTZlMjBiMDc3ZDYyNWQwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
RnJvbnRlbmRQYWdlKCkKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JCYXNlVVJMKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworICAgIG1fZXh0ZW5zaW9uQ29u
dHJvbGxlciA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGUo
Km1faW5zcGVjdG9yUGFnZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxM2JlYjg5YTdj
NzlhYzEyMWI4NTRhNzk2ODYyNmFkNDViNTJlYzRjLi42YWI3Y2E0ZDEzODAxYjc2MGYzY2M0ODcy
NGQ5ZmM1MDQxYTU2MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvclBhZ2U7IH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigp
IGNvbnN0IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyAgICBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSogZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXh0ZW5zaW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBi
b29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KQEAg
LTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3Bl
Y3RvckNsaWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CiAj
ZW5kaWYKICAgICAKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGExZWFkMWQy
MTM3NDI3MTIxNjY5YzA0MTUyMjNiYjkxZjc4N2RhZWEuLjQ1ZmU1NjA1NzI1OTkyMzA3MGI4OGEx
ZWExOTY2YWQxMzRhMjM4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQogCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAKQEAgLTM3LDE4ICszOSwyNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpCiAgICAgOiBtX2luc3BlY3RvclBh
Z2UobWFrZVdlYWtQdHIoaW5zcGVjdG9yUGFnZSkpCiB7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQog
eworICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2Fs
bGJhY2tRdWV1ZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQor
ICAgICAgICBjYWxsYmFjaygpOworCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAg
ICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tzID0g
c3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKLSAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjaygpOworUmVm
PFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFn
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eShpbnNwZWN0b3JQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCkBAIC03NCwzNSArODMsNTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQogCiAv
LyBBUEkKIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRl
ZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1l
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFn
ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgd2hlbkZyb250ZW5kSGFz
TG9hZGVkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghdGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lz
dGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJF
eHRlbnNpb24geyBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgW3RoaXMsIHN0cm9uZ1RoaXMg
PSBXVEZNb3ZlKHN0cm9uZ1RoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8QVBJOjpJbnNw
ZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbkFQSU9iamVjdCA9IEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uOjpjcmVhdGUoZXh0ZW5zaW9uSUQsIHN0cm9uZ1RoaXMuZ2V0KCkpOworICAgICAgICAgICAg
bV9leHRlbnNpb25BUElPYmplY3RNYXAuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25BUElPYmpl
Y3QuY29weVJlZigpKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShl
eHRlbnNpb25BUElPYmplY3QpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYg
ZXh0ZW5zaW9uSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
d2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRl
bnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3Bl
Y3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0ZW5z
aW9uIHsgZXh0ZW5zaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAg
ICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7
IGV4dGVuc2lvbklEIH0sIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBleHRlbnNpb25J
RCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9u
QVBJT2JqZWN0TWFwLnRha2UoZXh0ZW5zaW9uSUQpOworCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3Ry
aW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJM
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9u
VGFiSUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0
IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJj
ZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGV4dGVuc2lvbklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTEwLDE1ICsx
MzgsMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3Jl
YXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJp
bmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29u
c3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlv
bmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0
ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6
OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0
eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9u
UmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2Fk
ZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBzY3JpcHRTb3Vy
Y2UsIGZyYW1lVVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9y
UGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRT
ZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYgZGV0YWlscywgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9y
KSBtdXRhYmxlIHsKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uIHtleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFt
ZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0sIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+JiBkZXRhaWxzLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1
ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM3LDYgKzE2NSwzNyBAQCB2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbihjb25zdCBJbgogICAgIH0pOwogfQogCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
ZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNp
b25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7
CisgICAgYXV0byBpdCA9IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmZpbmQoZXh0ZW5zaW9uSUQp
OworICAgIGlmIChpdCA9PSBtX2V4dGVuc2lvbkFQSU9iamVjdE1hcC5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb24g
PSBpdC0+dmFsdWU7CisgICAgYXV0byBleHRlbnNpb25DbGllbnQgPSBleHRlbnNpb24tPmNsaWVu
dCgpOworICAgIGlmICghZXh0ZW5zaW9uQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBl
eHRlbnNpb25DbGllbnQtPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBhdXRv
IGl0ID0gbV9leHRlbnNpb25BUElPYmplY3RNYXAuZmluZChleHRlbnNpb25JRCk7CisgICAgaWYg
KGl0ID09IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbiA9IGl0LT52YWx1
ZTsKKyAgICBhdXRvIGV4dGVuc2lvbkNsaWVudCA9IGV4dGVuc2lvbi0+Y2xpZW50KCk7CisgICAg
aWYgKCFleHRlbnNpb25DbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGV4dGVuc2lvbkNs
aWVudC0+ZGlkSGlkZUV4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKaW5kZXggNGQ1YjM1ZmU0MTE2ZGQ1OGZj
NjYzZWQ0MWY1YjkyNTRjMTYyMDkxZC4uZDYxMWY4ZDNhZjczOTcwZTg2MmU5YWM3MmY0MGUzZGRi
NTgxN2E2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmgKQEAgLTM0LDMyICszNCw0OSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckV4dGVu
c2lvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAog
Y2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgZmluYWwKLSAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+CisgICAgLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAgIHN0YXRp
YyBSZWY8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOwogICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KCk7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0
ZWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKKwogICAgIC8vIEFQSS4KLSAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGNyZWF0ZVRh
YkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
dGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklE
LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rv
ckV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5z
cGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2
b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYg
dGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBj
b25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4
dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENv
bnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmKTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5IElQQyBtZXNzYWdlcy4KKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCisgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CisgICAgdm9pZCBkaWRI
aWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CisjZW5kaWYKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMu
CiAgICAgdm9pZCBpbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOwogCiBwcml2YXRlOgorICAgIGV4
cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94
eSYgaW5zcGVjdG9yUGFnZSk7CisKICAgICB2b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5j
dGlvbjx2b2lkKCk+JiYpOwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9y
UGFnZTsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Oklu
c3BlY3RvckV4dGVuc2lvbj4+IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwOwogCiAgICAgLy8gVXNl
ZCB0byBxdWV1ZSBhY3Rpb25zIHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhh
cHBlbiBlYXJseSBvbi4KICAgICAvLyBUaGVyZSdzIG5vIHBvaW50IHNlbmRpbmcgdGhlc2UgYmVm
b3JlIHRoZSBmcm9udGVuZCBpcyBmdWxseSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjAyZmJiYTcyNmZiM2M1YWJlYmFmMjg2NzMwMmE4YzI3YTY1NDZhMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5IHsKKyAgICBEaWRTaG93RXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25JRCwg
U3RyaW5nIGV4dGVuc2lvblRhYklEKQorICAgIERpZEhpZGVFeHRlbnNpb25UYWIoU3RyaW5nIGV4
dGVuc2lvbklELCBTdHJpbmcgZXh0ZW5zaW9uVGFiSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQppbmRleCBlNjZk
Zjg0YTIyYjgzODEzYmVlZTQ1MTBkNWI5ZWVlNzg4MDIyNWY2Li41MTZmYmFlMWZmODQ3NTMwODRh
NzNjOWVkY2Y2Y2FjYWJiOWY2Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KQEAgLTE5
OSw3ICsxOTksNyBAQCAtICh2b2lkKWhhbmRsZVRhcAogICAgIFtzZWxmIGRpZERpc21pc3NdOwog
fQogCi0tICh2b2lkKV93aGVlbENoYW5nZWRXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAorLSAo
dm9pZClfd2hlZWxDaGFuZ2VkV2l0aEV2ZW50Oig6OlVJRXZlbnQgKilldmVudAogewogICAgIFtz
dXBlciBfd2hlZWxDaGFuZ2VkV2l0aEV2ZW50OmV2ZW50XTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaAppbmRleCA1OWM5MGU3OTM0MmZiMjhiNDA1MDY5
ZjAzZDhlYzNkYzE2MmI0ZWVkLi5iNjQyNDliZDg4YWJhMzQzMTQzZDZiZWM1YTk4YTUyZThjNWQ1
MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1Zp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaApA
QCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgogCiBAY2xhc3MgV0tQcmludGluZ1ZpZXdEYXRhOwogQGNsYXNzIFBERkRlc3RpbmF0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMzhkMDAzMjBmNTQ1MDMzMmFmZGNhOTA3ZGFhNTEyYmY4MmY5NmJkNS4uYTMyMWUzNmY3YTdj
MzI1M2YzOTA5NWNhOWU0ZmIxMWRiYTA5MTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIyLDYgKzE1MjIsMTEgQEAKIAkJOTk1
NUE2RjUxQzc5ODZFMDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYxMUM3
OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggKi87IH07CiAJ
CTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYy
MUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsK
IAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYz
MUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CisJ
CTk5NkIyQjk4MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCMkI5NTI1RTI0NDgxMDA3MTkzNzkgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owor
CQk5OTZCMkI5OTI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJOTk2QjJCOUEyNUUyNDQ4
MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTZCMkI5NzI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJOTk2QjJCOUQyNUUyNTdGRjAw
NzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCMkI5QzI1RTI1N0VFMDA3MTkzNzkgLyog
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAqLzsgfTsKKwkJOTk2QjJCQTEyNUUyNTkxMTAw
NzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTc4OEFDQjFGNDIxRERBMDBDMDgwMDAgLyog
X1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dL
QXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJ
OTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTQ4ODQsNiAr
NDg4OSwxNCBAQAogCQk5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJhY2tl
bmREaXNwYXRjaGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0
aW9uQmFja2VuZERpc3BhdGNoZXJzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1
dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJOTk1NUE2RjIxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2Nv
bE9iamVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1
dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29s
T2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25Q
cm90b2NvbE9iamVjdHMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
OTk2QjJCOTMyNUUyNDMxNDAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OTZCMkI5NTI1RTI0NDgxMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTZCMkI5NjI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQjk3MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZC
MkI5QjI1RTI1N0VFMDA3MTkzNzkgLyogSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQjlFMjVFMjU4
MkMwMDcxOTM3OSAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Np
b25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1
dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTc4OEFDQTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25m
aWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
QXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTc4NTQsNiArNzg2
Nyw3IEBACiAJCQkJOTE5Nzk0MEIyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVn
YXRlLmggKi8sCiAJCQkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbi5oICovLAogCQkJCTk5QjE2NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0gKi8sCisJCQkJOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi8sCiAJCQkJOTk3OTY1QTIyNTMxMjhDNzAwQjMx
QUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLywKIAkJCQk5OUIxNjc1NTI1MkJC
N0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLywKIAkJCQk1
Q0FGREU0NDIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLywKQEAg
LTkyMDMsNiArOTIxNyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MTk3OTQwMDIzREJDNDkw
MDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUuaCAqLywKIAkJCQk5MTk3OTNGRjIzREJDNDkw
MDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkJOTk2QjJCOUMyNUUyNTdF
RTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi8sCisJCQkJOTk2QjJC
OUIyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05
MjI0LDYgKzkyNDAsNyBAQAogCQkJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQk5OUIxNjc1RDI1MkJCRTBBMDA3MzE0MEUg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwICovLAogCQkJCTk5
QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5oICovLAorCQkJCTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlBNTVCQTgy
NzFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlB
NTVCQTgyODFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggKi8sCiAJ
CQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLywK
QEAgLTk5NzksNiArOTk5Niw3IEBACiAJCQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQ
SUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUw
QTQgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk5OUJFM0IxMjI1NDIyRjQx
MDBDNjU1MUMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCisJCQkJOTk2QjJCOUUyNUUy
NTgyQzAwNzE5Mzc5IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oICovLAogCQkJCTMx
QjM2MjkwMjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8s
CiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJl
LmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50LmggKi8sCkBAIC0xMTA1NCw2ICsxMTA3Miw5IEBACiAJCQkJMUNBOEI5NDQx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQk5
OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJCQk5
OTZCMkI5NTI1RTI0NDgxMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTk5NkIyQjk2MjVFMjQ0ODIwMDcx
OTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgg
Ki8sCisJCQkJOTk2QjJCOTcyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMUNCQkU0OUUxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICov
LAogCQkJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLApAQCAtMTE0NzUsNiArMTE0OTYsNyBAQAogCQkJCTk5MDM2QUUyMjNB
OTQ5Q0YwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9y
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QjE2NzU3MjUyQkI3RTEwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQkExMjVF
MjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QjE2NzU4MjUyQkI3RTEwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNB
RkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKQEAgLTExNzgwLDYgKzExODAyLDcgQEAKIAkJCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3
OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDA1MjNE
QkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkxOTc5NDAyMjNEQkM0OTAwMDI1Nzg5MiAvKiBJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTk2QjJCOUQyNUUyNTdGRjAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZC
MzEgLyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURG
MUM1MDc2NkEwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEyMjY2LDYgKzEyMjg5LDgg
QEAKIAkJCQk5OUIxNjc2NDI1MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5NjU5RTI1MzEwQTQ5MDBCMzFB
RTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5QjE2NzVCMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2QjJCOTkyNUUy
NDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3Rv
clVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODJCMUJBMzhFNjEwMDdDRDMz
RCAvKiBXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0NEEw
MTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApA
QCAtMTQxNDksNiArMTQxNzQsNyBAQAogCQkJCUMxOEYzQTE1MjU2MzMzNDMwMDc5N0U2NiAvKiBX
ZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4
Qjk0NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5OTZCMkI5ODI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhBMjEyQjZBQjEwMEY0OTNGRCAvKiBX
ZWJLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjI4MEYzMTkxOTk4MkEw
MDZBRDlGOSAvKiBXZWJLaXQubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcApp
bmRleCBkMTM5MGJmZDZmNmJlMjMxNTY2N2MwNGZkNmJlYzNkNmFjMTU1MmRkLi5jN2FjNWQ2YmZm
MjY4MDdkZTNlZDFiYmZiYTkyYTJhODhmM2Q2NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcApA
QCAtMjcyLDcgKzI3MiwzMCBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzZXREaWFnbm9z
dGljTG9nZ2luZ0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKIAogICAgIG1fZnJvbnRlbmRBUElE
aXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInNldERpYWdub3N0aWNM
b2dnaW5nQXZhaWxhYmxlIl9zLCB7IEpTT046OlZhbHVlOjpjcmVhdGUobV9kaWFnbm9zdGljTG9n
Z2luZ0F2YWlsYWJsZSkgfSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
X1RFTEVNRVRSWSkKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK2Jvb2wgUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25U
YWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIGlmICghbV9leHRl
bnNpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9leHRlbnNpb25D
b250cm9sbGVyLT5kaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJ
RCk7Cit9CisKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIGlmICghbV9leHRlbnNp
b25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xs
ZXItPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIFdlYkNvcmU6OlBhZ2Uq
IFJlbW90ZVdlYkluc3BlY3RvclVJOjpmcm9udGVuZFBhZ2UoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5o
CmluZGV4IGI4ZGE5YTlmOGE1YTc2NmQxMzYxMjI2YWYwYzRlODU2MTY1NmIzZDUuLjAwYTNlZTAx
ZWQxZjU2OTQyNGE1OGQ1YzY0NzY1MGE0ZjE5NzFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKQEAg
LTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEZsb2F0UmVj
dDsKQEAgLTM5LDggKzQzLDEwIEBAIGNsYXNzIEZsb2F0UmVjdDsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKIGNsYXNzIFdl
YlBhZ2U7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCiAKIGNsYXNzIFJlbW90ZVdlYkluc3Bl
Y3RvclVJIGZpbmFsCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0b3JV
ST4KQEAgLTEwOSw2ICsxMTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoKSBvdmVycmlkZSB7IHJldHVybiBtX2RpYWdub3N0aWNMb2dnaW5nQXZhaWxh
YmxlOyB9CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5h
bWUsIGNvbnN0IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rpb25h
cnkmKSBvdmVycmlkZTsKICNlbmRpZgorICAgICAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgYm9vbCBzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYs
IGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgYm9vbCBj
YW5TYXZlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNVbmRlclRlc3Qo
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCAxYTJkNzEwMGE1ZWIy
OGY3NWE4NDVlZjI5YmEwMTkyNTI3MzljY2UzLi5lZjJlMGY5NjJhZThjMjZiMDM4ZjM2MjU1Njkw
ZTNiNzdiNzgzMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcApAQCAtMzU1LDcgKzM1NSwzMCBAQCB2b2lkIFdlYklu
c3BlY3RvclVJOjpzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkK
IAogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0
QXN5bmMoInNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlIl9zLCB7IEpTT046OlZhbHVlOjpj
cmVhdGUobV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSkgfSk7CiB9Ci0jZW5kaWYKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SX1RFTEVNRVRSWSkKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dF
eHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkU2hvd0V4dGVuc2lv
blRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xs
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkSGlk
ZUV4dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hv
d0NvbnNvbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDk5NWMyMjI0NWJmZmE0ZTVkYTI4NmYzZGNiNjY2MTA1
MzMyZGE4MjEuLjYyOWU0NWRjNmY4MGJjMjAyNTA3ZmJhYTc4NWI0NWUxNjQ3MjEwMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
LmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwpA
QCAtMTQ3LDYgKzE1MSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWFnbm9zdGljTG9nZ2luZ0F2
YWlsYWJsZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGU7
IH0KICAgICB2b2lkIGxvZ0RpYWdub3N0aWNFdmVudChjb25zdCBXVEY6OlN0cmluZyYgZXZlbnRO
YW1lLCBjb25zdCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9u
YXJ5Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyAgICAgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQm
LCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIo
KSBmaW5hbCB7IHJldHVybiBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDNiOWJkMDAwZjI5YTE5NmYx
ODYzYmNmMjk5ZjMxODk3ZGY3MDdjZDEuLmVhMGE1MWU4M2E3NDE2YmZmZDJhZjY3MjM2ZWMzZWJi
Mjk4ZGQ0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgiCisj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtNDgsMzYgKzQ5LDM4IEBAIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyKFdlYkNvcmU6OkluCiAgICAgYXV0byogcGFnZSA9IGluc3BlY3RvckZyb250ZW5kLmZyb250
ZW5kUGFnZSgpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgq
cGFnZSkuaWRlbnRpZmllcigpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmll
ciA9IFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgqcGFnZSkuaWRlbnRpZmllcigpOworCisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNw
ZWN0b3JQYWdlSWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcik7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQorT3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpw
YXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkgewogICAgICAgICBzd2l0Y2ggKHJlc3VsdC5lcnJvcigpKSB7CiAgICAgICAg
IGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25FcnJvcjo6RXhl
Y3V0aW9uU3VzcGVuZGVkOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uRXJyb3I6OkludGVybmFsRXJyb3I6Ci0g
ICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcjsKICAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsK
ICAgICBhdXRvIGdsb2JhbE9iamVjdCA9IG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlz
cGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3Qp
Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0
cm95ZWQ7CiAKICAgICBhdXRvIHZhbHVlT3JFeGNlcHRpb24gPSByZXN1bHQudmFsdWUoKTsKICAg
ICBpZiAoIXZhbHVlT3JFeGNlcHRpb24uaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgTE9HKEluc3Bl
Y3RvciwgIkVuY291bnRlcmVkIGV4Y2VwdGlvbiB3aGlsZSBldmFsdWF0aW5nIHVwb24gdGhlIGZy
b250ZW5kOiAlcyIsIHZhbHVlT3JFeGNlcHRpb24uZXJyb3IoKS5tZXNzYWdlLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJy
b3I7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVy
cm9yOwogICAgIH0KICAgICAKICAgICAvLyBJZiB0aGUgZXZhbHVhdGlvbiByZXN1bHQgaXMgYSBz
dHJpbmcsIHRoZSBmcm9udGVuZCByZXR1cm5lZCBhbiBlcnJvciBzdHJpbmcuCkBAIC04NywxOCAr
OTAsMTggQEAgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWMKICAgICBpZiAoc2NyaXB0VmFsdWUuaXNT
dHJpbmcoKSkgewogICAgICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IHNjcmlwdFZhbHVlLnRvV1RG
U3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkNvbnRl
eHREZXN0cm95ZWQiX3MpCi0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9
PSAiSW50ZXJuYWxFcnJvciJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09
ICJJbnZhbGlkUmVxdWVzdCJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6SW52YWxpZFJlcXVlc3Q7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcg
PT0gIlJlZ2lzdHJhdGlvbkZhaWxlZCJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDsKICAgICAgICAgaWYg
KHJlc3VsdFN0cmluZyA9PSAiTm90SW1wbGVtZW50ZWQiX3MpCi0gICAgICAgICAgICByZXR1cm4g
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkOworICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkOwogCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CkBAIC0xMDYsMTAgKzEwOSwxMCBAQCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlYwogCiAvLyBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgogCi12b2lkIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5LDcgKzEyMiw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
b3JFeHRlbnNpCiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3Bh
dGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInJlZ2lzdGVyRXh0ZW5zaW9u
Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTMyLDE3ICsxMzUsMTcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFy
Z3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CiAgICAgbV9mcm9u
dGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJl
c3VsdEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTY3LDEwICsxNzAsMTAgQEAgSlNDOjpKU09iamVjdCogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QK
ICAgICByZXR1cm4gdmFsdWVPckV4Y2VwdGlvbi52YWx1ZSgpLmdldE9iamVjdCgpOwogfQogCi12
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5n
JiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFi
SUQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcm
IHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xODIsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQKICAgICB9OwogICAg
IG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFu
ZFdpdGhSZXN1bHRBc3luYygiY3JlYXRlVGFiRm9yRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTk1LDE0ICsxOTgsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQK
ICAgICAgICAgYXV0byBvYmplY3RSZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJl
c3VsdEFzT2JqZWN0KHJlc3VsdCk7CiAgICAgICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CiAgICAg
ICAgICAgICBMT0coSW5zcGVjdG9yLCAiVW5leHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVy
bmVkIGZyb20gSW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byog
ZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRl
bmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgSlNDOjpK
U1ZhbHVlIGZvdW5kUHJvcGVydHkgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9i
amVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52
bSgpLCAiZXh0ZW5zaW9uVGFiSUQiX3MpKTsKICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5IHx8
ICFmb3VuZFByb3BlcnR5LmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9y
KSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMjEwLDEwICsyMTMsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBl
eHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVS
TD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4s
IGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVu
c2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJj
ZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNv
bnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0
aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTIzMywxMyArMjM2LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAK
ICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENv
bW1hbmRXaXRoUmVzdWx0QXN5bmMoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uIl9zLCBXVEZN
b3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdU
Rjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFr
VGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRH
bG9iYWxPYmplY3QoKTsKICAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgewotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250
ZXh0RGVzdHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNTQs
NyArMjU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1
YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgYXV0byBvYmplY3RS
ZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3VsdCk7
CiAgICAgICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CiAgICAgICAgICAgICBMT0coSW5zcGVjdG9y
LCAiVW5leHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9yRnJv
bnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Oklu
dGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51
bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChyZXN1bHQudmFsdWUoKSk7
CkBAIC0yNjIsNyArMjY1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlND
OjpKU1ZhbHVlIGVycm9yUGF5bG9hZCA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFs
T2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3Qt
PnZtKCksICJlcnJvciJfcykpOwogICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1N0cmluZygpKSB7Ci0gICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
SW50ZXJuYWxFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CkBAIC0yNzMsNyArMjc2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlND
OjpKU1ZhbHVlIHJlc3VsdFBheWxvYWQgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2Jh
bE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0
LT52bSgpLCAicmVzdWx0Il9zKSk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KCpmcm9udGVuZEdsb2JhbE9iamVjdCwgcmVzdWx0UGF5bG9hZCk7CiAgICAgICAgIGlmICghc2Vy
aWFsaXplZFJlc3VsdFZhbHVlKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0s
IFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTI4MSw2ICsyODQsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QK
ICAgICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRp
ZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQorewor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRT
aG93RXh0ZW5zaW9uVGFiIHsgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVj
dG9yUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9u
VGFiSUQpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OkRpZEhpZGVFeHRlbnNpb25UYWIgeyBleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQg
fSwgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggZjEzNDFkY2QyNzZkMGMxMDFlNDRi
ZGRhMTdjZTQwYjhhM2NiMzYxNy4uMjQyMTg0ZWVlM2RmYjQ2YzExODllYmQ2MzA4ZDI4MWYzNGM3
OTIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTYzLDE2ICs2NCwyMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAogICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVz
c2FnZXMuCi0gICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNp
b25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYm
KTsKLSAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNp
b25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25z
dCBVUkwmIHNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0
b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9p
ZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVS
TCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRp
b25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4m
KT4mJik7CisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZv
aWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPik+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNv
blVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4p
PiYmKTsKKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9u
YWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9y
aWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CisKKyAgICAvLyBDYWxsYmFja3MgZnJvbSB0aGUgZnJv
bnRlbmQuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hv
d0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZhbHVh
dGlvblJlc3VsdEFzT2JqZWN0KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6RXZhbHVhdGlvblJlc3VsdCk7Ci0gICAgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+IHBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwor
ICAgIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwogCiAgICAgV2Vha1B0cjxXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKKyAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IGQxNzQwNjAyOGZhZjM3YjUwNjQxNDI1ZmI2MGQ4
ZmYwZTIzYzQ0NTQuLjZlODBjNzBkZmNiNWRiYjQ1ODIxNTFkMDliNTY1MzRmMzIzNTllNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3Nh
Z2VzLmluCkBAIC0yMywxMSArMjMsMTEgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RS
ZWZDb3VudGVkIHsKLSAgICBSZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0
cmluZyBkaXNwbGF5TmFtZSkgLT4gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmlu
ZyBleHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICBSZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0
ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFtZSkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9u
KFN0cmluZyBleHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKIAotICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJp
bmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJj
ZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cj4gcmVzdWx0KSBBc3luYwotICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBl
eHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwg
T3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNv
bnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIENyZWF0ZVRhYkZv
ckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNv
blVSTCwgVVJMIHNvdXJjZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYworICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBm
cmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJv
b2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlv
bmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQo=
</data>
<flag name="commit-queue"
          id="440022"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421221</attachid>
            <date>2021-02-22 12:01:49 -0800</date>
            <delta_ts>2021-02-22 12:21:18 -0800</delta_ts>
            <desc>Patch v2.1</desc>
            <filename>bug-222252-20210222120148.patch</filename>
            <type>text/plain</type>
            <size>116066</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJlYjllZWQ4YThlMzJh
ZDk5NzgzOTMyZTQ5MGM4ZmMxNmQ0ZjA1ZS4uZDA1NThjYTZiYjhhNTZkZDU2N2Y0NGI2YTY0ZTIz
MmM3MDhiNGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIxICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM4NTM2NWMyZjExYmRmNjdlOGJl
NWE2ZDgwMTIwY2QwMzA3ZTNjZWMuLmU2NDAwYjE1OGI4ZmZlY2E4Njc4Y2FiYWYxYzc2NWUwYWMw
OWZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAy
LTIxICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIElu
c3BlY3RvcjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2
aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzEyMDY2ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6IFVwZGF0
ZSBjb21tZW50IGZvciBuYW1lc3BhY2UgY2hhbmdlLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hl
ZCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuZGV0YWNoZWQpOgorICAgICAgICBXaGVuIGFuIGV4dGVuc2lvbiB0YWIgaXMgc2hvd24g
b3IgaGlkZGVuLCBub3RpZnkgdGhlIGZyb250ZW5kIGhvc3QgYWJvdXQgdGhlIGV2ZW50LgorCiAy
MDIxLTAyLTE5ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENTUyBHcmlkIEluc3BlY3RvcjogdXNlIGEgY29sb3IgcGFsZXR0
ZSBmb3IgZGVmYXVsdCBncmlkIG92ZXJsYXkgY29sb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NjUxZGI3ZjU2
YzhjZjQxMjBmNTk3ZmM0YWVlOTJmM2FkZDljYjUuLmFlMzg5MGFiYjk0MWU4ZGMzYzVlNmY0ZDdm
MzQ4YTI1MGM1NTE3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU2IEBACisyMDIxLTAyLTIxICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rv
cjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2
ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNsaWVudHMgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlm
ZWN5Y2xlIGV2ZW50cy4gRm9yIG5vdyB0aGlzIGluY2x1ZGVzCisgICAgICAgIGV4dGVuc2lvbiB0
YWIgc2hvd24vaGlkZGVuLCBidXQgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUgcGFnZSBuYXZpZ2F0
aW9ucyBhbmQgb3RoZXIgZXZlbnRzIGV4cG9zZWQKKyAgICAgICAgdmlhIFdlYiBFeHRlbnNpb25z
IEFQSS4KKworICAgICAgICBUaGlzIGlzIGltcGxlbWVudGVkIGF0IHRoZSBXZWJLaXQgbGV2ZWwg
dmlhIG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBtZXRob2RzLiBUaGlzIGdldHMgcGlwZWQg
dG8KKyAgICAgICAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdmlhIElQ
Qywgd2hpY2ggdGhlbiBwYXNzZXMgb24gdGhlIGV2ZW50IHRvIF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLgorCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlIGlzIGEg
ZGVsZWdhdGUgb2YgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLiBJdCdzIGZvciByZWNlaXZpbmcgbGlm
ZWN5Y2xlIGV2ZW50cywgYW5kCisgICAgICAgIGlzIGltcGxlbWVudGVkIHNpbWlsYXJseSB0byBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkgbm93IGtlZXBzIGEgbWFwIG9mCisgICAgICAgIGV4dGVuc2lvbiBBUEkgb2JqZWN0cyBzbyB0
aGF0IGl0IGNhbiBjYWxsIG91dCB0byB0aGUgdGhlIGFwcHJvcHJpYXRlIGV4dGVuc2lvbiBBUEkg
b2JqZWN0J3MgY2xpZW50L2RlbGVnYXRlLgorCisgICAgICAgIFRvIGJldHRlciBoYW5kbGUgdGhl
IHNpdHVhdGlvbiB3aGVyZSBjbGllbnQgY29tcGxldGlvbiBoYW5kbGVycyBtYXkgYmUgaW52b2tl
ZCBhZnRlciB0aGUgaW5zcGVjdG9yIHBhZ2UgaGFzIGJlZW4gdG9ybiBkb3duLAorICAgICAgICBz
d2l0Y2ggV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdG8gYmUgUmVmQ291
bnRlZCBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0ciBzbyB0aGF0IHRoZSBhcHByb3ByaWF0ZQor
ICAgICAgICBBUEkgb2JqZWN0IGNhbiBiZSByZXRyaWV2ZWQgaW4gdGhlIGFzeW5jIElQQyByZXBs
eSBibG9jay4gKElQQyBtZXNzYWdlIHJlY2VpdmVyIGNvZGUga25vd3MgaG93IHRvIHJlZiB0aGUg
cmVjZWl2ZXIKKyAgICAgICAgaWYgaXQgZXhwZWN0cyB0byBkZWxpdmVyIGEgcmVzcG9uc2UpLgor
CisgICAgICAgIExhc3RseSwgc2luY2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIGF0IHRoZSBXZWJDb3JlIGxldmVsLCBJIGRlY2lkZWQgdG8gbW92ZSB0aGUg
Y29udGVudHMKKyAgICAgICAgb2YgSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCB0byB0aGUgSW5z
cGVjdG9yIG5hbWVzcGFjZS4gSXQgbWFkZSBtb3JlIHNlbnNlIHRoYW4gdHlwaW5nIG91dCBXZWJD
b3JlOjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcgorICAgICAgICBhbmQgdGhlIGxpa2UuIEFzIHBh
cnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSBzdHJpbmcgdHlwZSBhbGlhc2VzIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQgYW5kIEluc3BlY3RvcjpFeHRlbnNpb25UYWJJRCBhcmUKKyAgICAgICAgbm93IGRl
ZmluZWQgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaC4KKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgIEFkZCBnZW5lcmF0ZWQgZmlsZXMgZm9yIG5ldyBtZXNzYWdlIHJlY2VpdmVyLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyBmb3IgaW5zcGVjdG9yIGV4
dGVuc2lvbiBjbGllbnQvZGVsZWdhdGUgYm9pbGVycGxhdGUgY2xhc3Nlcy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JF
eHRlbnNpb25UeXBlcy5oOgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZSB0aGVzZSB0eXBlcyBhbmQgaGVscGVycyB0byBJbnNwZWN0b3IgbmFtZXNw
YWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudCk6IEFkZCBhIGNs
aWVudCBtZW1iZXIgd2hpY2ggaXMgdXNlZCB0byBjYWxsIG91dCB0byBfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVU
YWIpOiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpl
dmFsdWF0ZVNjcmlwdCk6IEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaC4KKyAgICAgICAg
KEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFi
KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tJbnNw
ZWN0b3IgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVybnMgYW4gaW5pdGlhbGl6ZWQg
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpk
aXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVy
bnMgYW4gaW5pdGlhbGl6ZWQgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6
IEFkZCB0aGUgZGVsZWdhdGUgcHJvcGVydHkgYW5kIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIG1l
bnRpb24gaXRzIGludGVuZGVkIHVzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDogQWRkIGRlbGVnYXRlIHN0b3JhZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtf
V0tJbnNwZWN0b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgIEFkZGVkLgorCisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTp0YWJJY29u
VVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRml4IG5hbWVzcGFjZXMuCisgICAg
ICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpmcmFtZVVSTDpjb250
ZXh0U2VjdXJpdHlPcmlnaW46dXNlQ29udGVudFNjcmlwdENvbnRleHQ6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6ICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIE9iakMtdG8tQysrIGJyaWRnZSBjb2Rl
IHRvIGNvbm5lY3QgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgKHVzZWQgYnkgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpCisgICAgICAgIHRvIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlICh1c2VkIGJ5IGNsaWVudCBjb2RlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aDogRml4IG5hbWVzcGFjZXMuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgIE1ha2UgdGhpcyBjbGFzcyBhbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gSXQgcmVjZWl2ZXMg
bWVzc2FnZXMgZm9yIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOgorICAgICAgICBNYWtlIHRoaXMgY2xhc3Mg
YW4gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBFeHBh
bmQgdGhpcyBjb2RlIG91dCBzbyB0aGF0IHdlIGNhbiBzYXZlIEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uIGluc3RhbmNlcyBpbnRvIG91ciBvd24gbWFwCisgICAgICAgIGJlZm9yZSBzZW5kaW5nIGl0
IHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4gVGhpcyBtYXAga2VlcHMgc3Ryb25nIHJlZmVyZW5j
ZXMgdG8gdGhlIGV4dGVuc2lvbgorICAgICAgICBBUEkgb2JqZWN0cyBzaW5jZSB0aGV5IG5lZWQg
dG8gYmUgdXNlZCB0byBzZW5kIGV2ZW50cyBhdCBhbiBhcmJpdHJhcnkgdGltZSBpbiB0aGUgZnV0
dXJlLgorICAgICAgICBQcmV2aW91c2x5LCB0aGV5IHdlcmUga2VwdCBhbGl2ZSAob3Igbm90KSBi
eSB0aGUgQVBJIGNsaWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIFdoZW4g
dGhlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVnaXN0ZXJlZCwgcmVtb3ZlIHRoZSBhc3NvY2lh
dGVkIGV4dGVuc2lvbiBBUEkgb2JqZWN0IChhbmQKKyAgICAgICAgb3VyIHN0cm9uZyByZWZlcmVu
Y2UgdG8gaXQpLgorCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOiBGaXggbmFtZXNwYWNlcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRTaG93RXh0ZW5z
aW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVHJ5IHRvIGxv
b2sgdXAgdGhlIGFzc29jaWF0ZWQgQVBJIG9iamVjdCBmb3IgdGhlIGV4dGVuc2lvbiBhbmQgZm9y
d2FyZCB0aGUgZXZlbnQgdG8KKyAgICAgICAgdGhlIGNsaWVudCBvZiB0aGUgQVBJIG9iamVjdCwg
d2hpY2ggaXMgdWx0aW1hdGVseSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaDogRml4IFVuaWZpZWRTb3VyY2Vz
IGZhbGxvdXQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcubW06CisgICAgICAgICgtW1dLRm9jdXNlZEZvcm1Db250cm9sVmlldyBfd2hlZWxD
aGFuZ2VkV2l0aEV2ZW50Ol0pOiBGaXggVW5pZmllZFNvdXJjZXMgZmFsbG91dC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25U
YWIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xs
ZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gRGVmZXIgdG8gdGhl
IGV4dGVuc2lvbiBjb250cm9sbGVyIHRvIGhhbmRsZSBmdXJ0aGVyIGV2ZW50IHByb3BhZ2F0aW9u
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBGaXggbmFtZXNw
YWNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgQmUgbW9yZSBwcmVjaXNlIGFi
b3V0IGFzc29jaWF0aW5nIHRoaXMgbWVzc2FnZSByZWNlaXZlciB3aXRoIHRoZSBpbnNwZWN0b3Ig
cGFnZSdzIGlkZW50aWZpZXIuCisgICAgICAgIEFsc28sIHNhdmUgdGhlIHBhZ2UgaWRlbnRpZmll
ciBzbyB0aGF0IG1ldGhvZHMgdGhhdCBuZWVkIHRvIHNlbmQgSVBDIG1lc3NhZ2VzIGNhbiBzZW5k
CisgICAgICAgIHRoZSBtZXNzYWdlIHRvIHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uSUQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUlu
c3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKToKKyAgICAgICAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRIaWRl
RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuCisKIDIwMjEtMDItMjAgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcGRhdGUgV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjIHdpdGggc29tZSBuZXcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGU4ZDEz
YTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4NzA2NTlhNDk0
YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK3VzaW5n
IEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6
U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRS
ZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1lICovLCBjb25z
dCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYK
KyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
JiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0NzE5NmU4ZTc3
OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNkMzk4Y2Q5MGQ3
YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0
IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAKK2Jvb2wgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQt
PnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFi
KGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4OTNiYjM1NTNh
ZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi40NTA2NmI5YTgxYWMzM2NkN2JiODc3YWI4OTE5
MmYyYjAzNWRjZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDYgKzEzNiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYg
cGF5bG9hZCk7CiAjZW5kaWYKIAorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCk7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lv
blRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRh
YklEKTsKKyAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNp
b25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51
UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsCmluZGV4IDE3ZThmNWI4ZDJhZWM4NTdkYzZmNTcxNjRhZGU3YTE0N2Y5NzQ3
NjIuLjMyYzU3NDNhMGU2M2Q1ODIzOTk4MTNkZGMzMDMwYTgzNDQyNDc5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC05
NSw2ICs5NSwxMCBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNE
aWFnbm9zdGljTG9nZ2luZzsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX1RFTEVNRVRSWV0g
dW5kZWZpbmVkIGxvZ0RpYWdub3N0aWNFdmVudChET01TdHJpbmcgZXZlbnROYW1lLCBET01TdHJp
bmcgY29udGVudCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c1dl
YkV4dGVuc2lvbnM7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRl
ZmluZWQgZGlkU2hvd0V4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmlu
ZyBleHRlbnNpb25UYWJJRCk7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05T
XSB1bmRlZmluZWQgZGlkSGlkZUV4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERP
TVN0cmluZyBleHRlbnNpb25UYWJJRCk7CiB9OwogCiBkaWN0aW9uYXJ5IENvbnRleHRNZW51SXRl
bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwppbmRleCA2ZmJjMzdhZWE3
YTE4OTNiMWY3MDJiNTRjYmMyNzA3NThiZTk1ZTU0Li44ZWFmZTAzOTI0ZDU5NmFiY2RkZWFiY2Mx
YmVlYTJlY2EzZDQxYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMK
QEAgLTQwLDcgKzQwLDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xhc3MgV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fZGlz
cGxheU5hbWU7IH0KIH07CiAKLS8vIE5vdGU6IHRoZXNlIHZhbHVlcyBhcmUgc3lub255bW91cyB3
aXRoIHRoZSB2YWx1ZXMgb2YgZW51bSBjbGFzcyBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVy
cm9yLgorLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5vbnltb3VzIHdpdGggdGhlIHZhbHVl
cyBvZiBlbnVtIGNsYXNzIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IuCiBXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb24uRXJyb3JDb2RlID0gewogICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0
RGVzdHJveWVkIiwKICAgICBJbnRlcm5hbEVycm9yOiAiSW50ZXJuYWxFcnJvciIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDMzZmRmYTAwZmQ0M2NjMDE5ZmNkMTRjZmJlOTAxOWY1OTdkMGE4M2UuLjNiMDZhMGE4MDBi
OTQ5OWNiOWNiNmRmN2MwYTIzMjY5OTJmM2VmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDIyIEBAIFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IGF0dGFjaGVkKCkKKyAgICB7CisgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAg
aWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCisgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRl
bnNpb24uZXh0ZW5zaW9uSWQsIHRoaXMuX2V4dGVuc2lvblRhYklEKTsKKyAgICB9CisKKyAgICBk
ZXRhY2hlZCgpCisgICAgeworICAgICAgICBzdXBlci5kZXRhY2hlZCgpOworCisgICAgICAgIGlm
IChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhpZGVFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5z
aW9uLmV4dGVuc2lvbklkLCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCiAgICAgdGFi
SW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYy
OTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUuLjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlm
ZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJ
TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFh
NjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVjNzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRj
ZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgs
NiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAog
CVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRjNzBmNDI2NzE2M2VjNTkuLjM1YjI4MGExMGFl
MTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1OCw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBl
KHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9D
b25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBb
JyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAorICAgICAgICAn
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgi
J10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUn
OiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAg
ICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGltZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwK
QEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAg
J1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAgICAn
V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAg
ICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzog
WyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3Rp
bmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYWdl
U3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCBiYjNlZWU4OGRlZmJjNGY4NzAwYzkw
NTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzExZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdk
OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1XVEY6
OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNp
b25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7Ci0gICAgY2FzZSBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7Ci0gICAg
Y2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CisgICAgY2FzZSBF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CiAgICAgICAgIHJldHVybiAiSW52YWxpZFJl
cXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgogICAgICAg
ICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgorICAgIGNhc2UgRXh0ZW5zaW9uRXJyb3I6OlJl
Z2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CisgICAg
Y2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAgICAgICAgIHJldHVybiAiTm90
SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3Zjg1NzQxNmZkYzRmZmI1MjA5MmYyNTM3NzU2
MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkxODJiNDU4NGQ4OWViZjFmY2Y3MmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTM3
LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWls
czsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworZW51bSBjbGFzcyBFeHRl
bnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0g
V1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwot
dXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCA9IEV4cGVjdGVkPEV4cGVj
dGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj47Cit1c2luZyBFeHRlbnNpb25UYWJJ
RCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5n
IEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxFeHBlY3RlZDxSZWZQdHI8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgRXh0
ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWlu
dDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CiAgICAgQ29udGV4
dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9yLAogICAgIEludmFsaWRSZXF1ZXN0LApAQCAt
NTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50
OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07CiAKLVdURjo6U3RyaW5nIGluc3BlY3RvckV4
dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworV1RGOjpTdHJp
bmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvcik7CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKIG5hbWVzcGFjZSBXVEYgewog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAotICAgICAgICBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCisgICAgICAgIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRl
eHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQs
CisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCiAgICAg
PjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlNWRiNmMxOTc1NDVhMTlhMWVlZWJl
Y2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1NjZmYzhmYjU4YzRlNjljZTg3MmUyZGEyMWI1
NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjIsNiArNDIyLDcgQEAgVUlQcm9jZXNz
L0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9t
YWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRk
YjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3MDBkYTFmYWE1NmVjMjNhOTY5YWYzYWExNzZi
MzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00NSwyMCArNDUsMjUgQEAgUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24o
aWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25U
YWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudChVbmlxdWVSZWY8SW5zcGVj
dG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudC5t
b3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5jcmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVu
dGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0
KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJM
PiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246
OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9w
dGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29u
dGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlw
dENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lv
bkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9l
eHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2QyZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2
Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0YzkzOTdjMzMxODFhYTU3ZWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBA
IC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAor
I2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFt
ZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkws
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAg
IHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29u
c3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+
JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50
U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiKGNv
bnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29u
c3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4m
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisKKyAgICBJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9
CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4m
Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgxNDIxNTVhMGIzMjEyOGY3OTEyMzEzOGUxODgw
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3MGIwNWI0NDMxYmMzMzdmYzJmYzkuLjZkYTYz
N2VhMjlkYTAzOTBkOGNiNDUwMzMzYTk4MjY5YjlhNzhiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMTg2LDEzICsxODYs
MTkgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNp
b25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICop
ZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJl
Z2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVu
c2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQp
IG11dGFibGUgeworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgcHJp
b3IgdG8gY3JlYXRpbmcgYSBmcm9udGVuZCAoaS5lLiwgd2l0aCAtY29ubmVjdCBvciAtc2hvdyku
CisgICAgaWYgKCFfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KX1dLCBuaWwpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT5yZWdpc3RlckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1
c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpl
eHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBw
ZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5n
ZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkp
OworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihyZXN1bHQudmFsdWUoKSkpOwog
ICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5p
bCk7CkBAIC0yMDIsOSArMjA4LDE1IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6
KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAtICh2b2lk
KXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIF9pbnNwZWN0b3ItPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25J
RCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAvLyBJdCBpcyBhbiBl
cnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgKGku
ZS4sIHdpdGggLWNvbm5lY3Qgb3IgLXNob3cpLgorICAgIGlmICghX2luc3BlY3Rvci0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCl9
XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25D
b250cm9sbGVyKCktPnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRv
bWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJl
YXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVz
dWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7
IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCBkMTEyYTBjNGMzM2JiNjJiZjViMzY4MzJm
ODMyMGIwZjJlNjFmZmE4Li45YmU2MTMwODE4YjI3MGE1OGQ2M2QyY2Q3Yzg3NDllOTJlYjBjMGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0zMyw2ICszMyw4IEBACiAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTsKKwog
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogQGludGVyZmFjZSBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdAogCkBAIC00NSw4ICs0NywxMCBAQCBXS19DTEFTU19B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAgKiBAcGFyYW0gdGFiSWNvblVSTCBUaGUgbG9j
YXRpb24gb2YgYW4gaW1hZ2UgcmVzb3VyY2UgdG8gdXNlIGZvciBkaXNwbGF5IGluIHRoZSBjcmVh
dGVkIHRhYidzIHRpdGxlLgogICogQHBhcmFtIHNvdXJjZVVSTCBUaGUgbG9jYXRpb24gb2YgdGhl
IG1haW4gcmVzb3VyY2UgdG8gbG9hZCBpbiB0aGUgbmV3IHRhYidzIGlmcmFtZSBicm93c2luZyBj
b250ZXh0LgogICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgdG8gYmUgY2FsbGVkIHdoZW4gY3JlYXRpbmcgYSB0YWIgc3VjY2VlZHMgb3IgZmFpbHMuCisg
KiBAZGlzY3Vzc2lvbiBUaGUgaW5zcGVjdG9yVGFiSWRlbnRpZmllciBwcm92aWRlZCB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRhYnMKKyAqIHRoYXQg
YXJlIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZSBtZXRob2RzLgogICovCi0tICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmluZyAqKXRh
Yk5hbWUgdGFiSWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNvdXJjZVVSTDooTlNVUkwgKilz
b3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwg
TlNTdHJpbmcgKiBfTnVsbGFibGUgaW5zcGVjdG9yVGFiSUQpKWNvbXBsZXRpb25IYW5kbGVyOwor
LSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6
KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxh
YmxlIGluc3BlY3RvclRhYklkZW50aWZpZXIpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAvKioKICAq
IEBhYnN0cmFjdCBFdmFsdWF0ZXMgSmF2YVNjcmlwdCBpbiB0aGUgY29udGV4dCBvZiB0aGUgaW5z
cGVjdGVkIHBhZ2Ugb24gYmVoYWxmIG9mIHRoZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCkBAIC02
Myw2ICs2NywxMiBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAKIEBw
cm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOwogCisv
KioKKyAqIEBhYnN0cmFjdCBBbGxvd3MgdGhlIGNsaWVudCB0byByZWNlaXZlIGV4dGVuc2lvbiBs
aWZlY3ljbGUgZXZlbnRzIHRoYXQKKyAqIGFyaXNlIGZyb20gd2l0aGluIFdlYiBJbnNwZWN0b3Iu
CisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGU+IGRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkp
OworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5k
ZXggMjY3ZjBlZjkzMzgzOTU4NDM3ODQwZjAwYzJiYWE3NmJmZDc5Y2Y1ZS4uN2JjZjU4ZWM5ZTU3
MWMwZTExN2Q3ZjQ3ZDQxYTBiYWYxYTIyNWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0y
Niw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisK
KyNpbXBvcnQgIkluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3SW50ZXJuYWwuaCIKQEAgLTMzLDggKzM2LDYgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotCiBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCiAKIC0gKHZvaWQpZGVh
bGxvYwpAQCAtNDksMTMgKzUwLDI2IEBAIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiAgICAg
cmV0dXJuICpfZXh0ZW5zaW9uOwogfQogCistIChpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS0+ZGVsZWdhdGUoKS5hdXRv
cmVsZWFzZSgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZDxfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBpZiAoIWRlbGVnYXRlICYmICFfZGVsZWdh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIF9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4oc2VsZiwgZGVsZWdhdGUpOworfQorCiAvLyBN
QVJLOiBBUEkKIAogLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1l
IHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNl
VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgTlNTdHJpbmcgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFi
SWNvblVSTCwgc291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9leHRlbnNpb24tPmNyZWF0ZVRhYih0YWJO
YW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4
cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAg
ICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNv
ZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJy
b3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBO
U0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJv
clRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTY3LDkgKzgxLDkgQEAgLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGUKIHsK
ICAgICBPcHRpb25hbDxVUkw+IG9wdGlvbmFsRnJhbWVVUkwgPSBmcmFtZVVSTCA/IG1ha2VPcHRp
b25hbChVUkwoZnJhbWVVUkwpKSA6IFdURjo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxVUkw+IG9w
dGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gbWFr
ZU9wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IFdURjo6bnVsbG9wdDsKLSAg
ICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVV
UkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5z
aW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVVUkwsIG9wdGlv
bmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVu
c2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmZTg0MTRkMWYwODBmZjI1YTg0MTc0Y2EzZDg2NGJmY2RkMjFiNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFRBUkdFVF9PU19PU1gKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CisK
K0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+CitAb3B0
aW9uYWwKKworLyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgZXh0ZW5zaW9uIGhhcyBiZWVuIHNob3duLgorICogQHBhcmFtIGV4dGVuc2lvbiBU
aGUgZXh0ZW5zaW9uIHRoYXQgY3JlYXRlZCB0aGUgc2hvd24gdGFiLgorICogQHBhcmFtIHRhYklk
ZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhlIHRhYiB0aGF0IHdhcyBzaG93bi4KKyAqLworLSAo
dm9pZClpbnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcjsKKwor
LyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
ZXh0ZW5zaW9uIGhhcyBiZWVuIGhpZGRlbi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVu
c2lvbiB0aGF0IGNyZWF0ZWQgdGhlIGhpZGRlbiB0YWIuCisgKiBAcGFyYW0gdGFiSWRlbnRpZmll
ciBJZGVudGlmaWVyIGZvciB0aGUgdGFiIHRoYXQgd2FzIGhpZGRlbi4KKyAqLworLSAodm9pZClp
bnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBkaWRI
aWRlVGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcjsKKworQGVuZAor
CitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKaW5kZXggMGEwZmFiYzhhMzcwMmQzMjcyOTZmNTcx
NjQwZWMxNzFmYzQ1MTFkZi4uYWUzMTY5ODc5YzY5N2JhZjJiMDMwMTkyMTJhYmQzY2I3MDRiNmQy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKQEAgLTMwLDYgKzMwLDEwIEBA
CiAjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKICNpbXBvcnQgIldLT2JqZWN0Lmgi
CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CkBAIC00MSw2ICs0NSw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIEBpbnRl
cmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IF9leHRlbnNpb247
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
IF9kZWxlZ2F0ZTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCmluZGV4IDgyMDY2M2FiZDliMmFiMjQ3Njg0YzNjODFjZDBhYzk1NzI2MGJj
NGIuLjU2YjVlZTg2ZWNhOTY0OTA4NGQ1MzM1MDhmYmVlMzM1MGZhZDQ1N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTE1OSwxNiArMTU5LDIy
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+IF9OdWxsYWJsCiAKIC8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QgbWV0aG9kcwogCi0tICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0
cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihO
U1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250
cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJv
dGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRhaW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHBy
aW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2Vu
ZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBub3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5z
cGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJ
bnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpfV0sIG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCktPnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOwpAQCAtMTc4LDkgKzE4NCwxNCBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogLSAo
dm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNp
b24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRl
bnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJv
b2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRl
bmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2VuZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBu
b3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNv
bnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5T
TG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9y
VG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpfV0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9u
SUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTkwZWU3MmVhZjY2OWU5ZTUwNzA4MTQ0OWI2MDA4YjBhOTk2NmI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0
ICJBUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5o
IgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRl
bnNpb247CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAg
UmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7
CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3Rv
ckV4dGVuc2lvbkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBB
UEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNp
b25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpIG92ZXJyaWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJ
bnNwZWN0b3JFeHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRy
PGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBz
dHJ1Y3QgeworICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRl
bnRpZmllciA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThm
YTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4ZTJiYTdkN2M5MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9X
S0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24sIGlkIDxfV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2luc3BlY3RvckV4dGVuc2lvbihp
bnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQoreworICAgIG1f
ZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmll
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvckV4dGVu
c2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
aW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0ZW5zaW9uOmRpZEhpZGVUYWJX
aXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVuc2lvbi0+X2V4dGVuc2lvbi0+
c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PigqdGhpcykp
OworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fkluc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KElu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1faW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQo
KQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJX
aXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGluc3BlY3RvckV4dGVuc2lvbjpt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9yRXh0ZW5zaW9uLmdldCgpLmdl
dCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25UYWJJRF07Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNp
b25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxl
Z2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9uOm1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkuZ2V0KCkgZGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAppbmRleCBmNWEwMjJlYTJlMGM5NzNkYjgzMjlmMDg4YzU4YzcwMTkzYjA5M2Iy
Li43ZTAzMDNkZGE5ZTJiZTY3ZmQ2OTRkMjZhNTZmYThhYTI4MTUwN2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwg
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1
ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4oKm1faW5zcGVjdG9yUGFn
ZSk7CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OmNyZWF0ZSgqbV9pbnNwZWN0b3JQYWdlKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDBmMWMwOThmNDM1OWQ0M2U1YmU4NWRmMTdiNmI4NjUz
ZjEwZWI0MTAuLmE0Mzg5ODRhNjUzNzJlNDdiMTI5OWY1NGM2NmU0ZWQ1Nzk3NzQzZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5z
aW9uQ29udHJvbGxlcjsgfQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25Db250
cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNTgs
NyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZSB7
IG51bGxwdHIgfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0
ZW5zaW9uQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKICNlbmRpZgogICAgIAogICAgIFJl
ZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5k
ZXggMjUwMTAyMjlhYmNkMjY4NGRmNWVjMGJlOWNjNTAyYWFjMzQ0NzFkZi4uMWJjNjljOTVmNTNk
YjYwMWZkMmQ0ZmZmNTZlMjBiMDc3ZDYyNWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC00MjYsNyAr
NDI2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKCkKICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCpt
X2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+
KCptX2luc3BlY3RvclBhZ2UpOworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGUoKm1faW5zcGVjdG9yUGFnZSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxM2JlYjg5YTdjNzlhYzEyMWI4NTRhNzk2ODYy
NmFkNDViNTJlYzRjLi42YWI3Y2E0ZDEzODAxYjc2MGYzY2M0ODcyNGQ5ZmM1MDQxYTU2MGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2U7IH0KIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSogZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5z
aW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4gbV9pbnNw
ZWN0b3JDbGllbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4
dGVuc2lvbkNvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CiAjZW5kaWYKICAgICAKICAgICBi
b29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGExZWFkMWQyMTM3NDI3MTIxNjY5YzA0MTUy
MjNiYjkxZjc4N2RhZWEuLjQ1ZmU1NjA1NzI1OTkyMzA3MGI4OGExZWExOTY2YWQxMzRhMjM4ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNw
cApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQog
CisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKQEAgLTM3LDE4ICszOSwy
NSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJv
eHkmIGluc3BlY3RvclBhZ2UpCiAgICAgOiBtX2luc3BlY3RvclBhZ2UobWFrZVdlYWtQdHIoaW5z
cGVjdG9yUGFnZSkpCiB7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpLCAq
dGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQogeworICAgIGF1dG8gY2FsbGJh
Y2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsK
KyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjaygp
OworCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zy
b250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjaygpOworUmVmPFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5PiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShpbnNw
ZWN0b3JQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CkBAIC03NCwzNSArODMsNTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQogCiAvLyBBUEkKIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5z
cGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt0aGlzLCBzdHJv
bmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghdGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNp
b25JRCwgZGlzcGxheU5hbWUgfSwgW3RoaXMsIHN0cm9uZ1RoaXMgPSBXVEZNb3ZlKHN0cm9uZ1Ro
aXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IGV4
dGVuc2lvbkFQSU9iamVjdCA9IEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoZXh0ZW5z
aW9uSUQsIHN0cm9uZ1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgbV9leHRlbnNpb25BUElPYmpl
Y3RNYXAuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25BUElPYmplY3QuY29weVJlZigpKTsKKwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleHRlbnNpb25BUElPYmplY3Qp
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0
ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9h
ZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Qp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQg
fSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLnRha2Uo
ZXh0ZW5zaW9uSUQpOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3aGVu
RnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lv
bklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTEwLDE1ICsxMzgsMTUgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpV
Ukw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBj
b25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0
aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiB7ZXh0ZW5z
aW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNl
Q29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWlscywgY29uc3Qg
T3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAg
ICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uIHtleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0sIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBk
ZXRhaWxzLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTM3LDYgKzE2NSwzNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bgogICAgIH0pOwogfQogCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSBJUEMgbWVzc2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQordm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZGlkU2hvd0V4dGVuc2lvblRh
Yihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgYXV0byBpdCA9IG1f
ZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmZpbmQoZXh0ZW5zaW9uSUQpOworICAgIGlmIChpdCA9PSBt
X2V4dGVuc2lvbkFQSU9iamVjdE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb24gPSBpdC0+dmFsdWU7CisgICAg
YXV0byBleHRlbnNpb25DbGllbnQgPSBleHRlbnNpb24tPmNsaWVudCgpOworICAgIGlmICghZXh0
ZW5zaW9uQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBleHRlbnNpb25DbGllbnQtPmRp
ZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBhdXRvIGl0ID0gbV9leHRlbnNpb25B
UElPYmplY3RNYXAuZmluZChleHRlbnNpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZXh0ZW5zaW9u
QVBJT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJOjpJ
bnNwZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbiA9IGl0LT52YWx1ZTsKKyAgICBhdXRvIGV4dGVu
c2lvbkNsaWVudCA9IGV4dGVuc2lvbi0+Y2xpZW50KCk7CisgICAgaWYgKCFleHRlbnNpb25DbGll
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGV4dGVuc2lvbkNsaWVudC0+ZGlkSGlkZUV4dGVu
c2lvblRhYihleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggNGQ1YjM1ZmU0MTE2ZGQ1OGZjNjYzZWQ0MWY1YjkyNTRjMTYy
MDkxZC4uZDYxMWY4ZDNhZjczOTcwZTg2MmU5YWM3MmY0MGUzZGRiNTgxN2E2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTM0LDMyICsz
NCw0OSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgZmluYWwKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+CisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShX
ZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmIGluc3BlY3Rv
clBhZ2UpOwogICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KCk7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
KwogICAgIC8vIEFQSS4KLSAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
ckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYp
OwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJM
JiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
SUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+
JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBj
b25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYm
KTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IElQQyBt
ZXNzYWdlcy4KKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdm9pZCBkaWRT
aG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJik7CisjZW5kaWYKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMuCiAgICAgdm9pZCBpbnNwZWN0
b3JGcm9udGVuZExvYWRlZCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSk7
CisKICAgICB2b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBIYXNoTWFw
PEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4+
IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwOwogCiAgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25z
IHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KICAg
ICAvLyBUaGVyZSdzIG5vIHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBp
cyBmdWxseSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAyZmJiYTcyNmZiM2M1
YWJlYmFmMjg2NzMwMmE4YzI3YTY1NDZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK21l
c3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IHsKKyAgICBE
aWRTaG93RXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIGV4dGVuc2lvblRh
YklEKQorICAgIERpZEhpZGVFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcg
ZXh0ZW5zaW9uVGFiSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQppbmRleCBlNjZkZjg0YTIyYjgzODEzYmVlZTQ1
MTBkNWI5ZWVlNzg4MDIyNWY2Li41MTZmYmFlMWZmODQ3NTMwODRhNzNjOWVkY2Y2Y2FjYWJiOWY2
Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KQEAgLTE5OSw3ICsxOTksNyBAQCAtICh2
b2lkKWhhbmRsZVRhcAogICAgIFtzZWxmIGRpZERpc21pc3NdOwogfQogCi0tICh2b2lkKV93aGVl
bENoYW5nZWRXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAorLSAodm9pZClfd2hlZWxDaGFuZ2Vk
V2l0aEV2ZW50Oig6OlVJRXZlbnQgKilldmVudAogewogICAgIFtzdXBlciBfd2hlZWxDaGFuZ2Vk
V2l0aEV2ZW50OmV2ZW50XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLUHJpbnRpbmdWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmlu
dGluZ1ZpZXcuaAppbmRleCA1OWM5MGU3OTM0MmZiMjhiNDA1MDY5ZjAzZDhlYzNkYzE2MmI0ZWVk
Li5iNjQyNDliZDg4YWJhMzQzMTQzZDZiZWM1YTk4YTUyZThjNWQ1MDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaApAQCAtMzIsNiArMzIsNyBAQAog
I2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiBAY2xhc3MgV0tQ
cmludGluZ1ZpZXdEYXRhOwogQGNsYXNzIFBERkRlc3RpbmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzhkMDAzMjBmNTQ1MDMz
MmFmZGNhOTA3ZGFhNTEyYmY4MmY5NmJkNS4uYTMyMWUzNmY3YTdjMzI1M2YzOTA5NWNhOWU0ZmIx
MWRiYTA5MTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNTIyLDYgKzE1MjIsMTEgQEAKIAkJOTk1NUE2RjUxQzc5ODZFMDAwRUI2
QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYxMUM3OTg2NjQwMEVCNkE5MyAvKiBB
dXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggKi87IH07CiAJCTk5NTVBNkY2MUM3OTg2RTMw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZF
NTAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CisJCTk5NkIyQjk4MjVFMjQ0ODIw
MDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTZCMkI5NTI1RTI0NDgxMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5OTZCMkI5OTI1RTI0NDgy
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJC
OTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJOTk2QjJCOUEyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCMkI5NzI1RTI0NDgy
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLzsgfTsKKwkJOTk2QjJCOUQyNUUyNTdGRjAwNzE5Mzc5IC8qIEluc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTZCMkI5QzI1RTI1N0VFMDA3MTkzNzkgLyogSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUuaCAqLzsgfTsKKwkJOTk2QjJCQTEyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5OTc4OEFDQjFGNDIxRERBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Np
b25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25D
b25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTk3OTY1OUYyNTMxMEE0OTAw
QjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5
NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTQ4ODQsNiArNDg4OSwxNCBAQAogCQk5OTU1
QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25CYWNrZW5kRGlz
cGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1NUE2
RjIxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0
cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25Qcm90b2NvbE9i
amVjdHMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTU1QTZG
MzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk2QjJCOTMyNUUyNDMxNDAw
NzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZC
MkI5NTI1RTI0NDgxMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5NjI1RTI0NDgyMDA3
MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5NkIyQjk3MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5QjI1RTI1N0VFMDA3MTkz
NzkgLyogSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQjlFMjVFMjU4MkMwMDcxOTM3OSAvKiBBUElJ
bnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NkIyQkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTc4OEFD
OTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29u
ZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTc4OEFDQTFGNDIx
RENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXV0b21hdGlvblNlc3Npb25D
b25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTc5NjU5QTI1
MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTc4NTQsNiArNzg2Nyw3IEBACiAJCQkJOTE5Nzk0
MEIyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggKi8sCiAJCQkJOTlC
MTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovLAogCQkJ
CTk5QjE2NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8s
CisJCQkJOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlLmggKi8sCiAJCQkJOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QuaCAqLywKIAkJCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0FGREU0NDIxMzA4NDM2MDBC
MUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLywKQEAgLTkyMDMsNiArOTIxNyw4IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MTk3OTQwMDIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVj
dG9yRGVsZWdhdGUuaCAqLywKIAkJCQk5MTk3OTNGRjIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVj
dG9yRGVsZWdhdGUubW0gKi8sCisJCQkJOTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi8sCisJCQkJOTk2QjJCOUIyNUUyNTdFRTAwNzE5Mzc5
IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBD
b2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05MjI0LDYgKzkyNDAsNyBAQAog
CQkJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdl
cy5pbiAqLywKIAkJCQk5OUIxNjc1RDI1MkJCRTBBMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwICovLAogCQkJCTk5QjE2NzVBMjUyQkJBREQwMDcz
MTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICovLAorCQkJ
CTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlBNTVCQTgyNzFCQTM4RTFFMDA3Q0QzM0Qg
LyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlBNTVCQTgyODFCQTM4RTFFMDA3
Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggKi8sCiAJCQkJQTVFQzZBRDIyMTUxQkQ2
OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLywKQEAgLTk5NzksNiArOTk5Niw3
IEBACiAJCQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uaCAqLywKIAkJCQk5OTlCN0Y0RjI1NTRCQTNGMDBGNDUwQTQgLyogQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk5OUJFM0IxMjI1NDIyRjQxMDBDNjU1MUMgLyogQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uLmggKi8sCisJCQkJOTk2QjJCOUUyNUUyNTgyQzAwNzE5Mzc5IC8qIEFQ
SUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQx
RUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQy
MDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8s
CkBAIC0xMTA1NCw2ICsxMTA3Miw5IEBACiAJCQkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8q
IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQk5OTc5NjU5QjI1MzEwQTQ4MDBC
MzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQk5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJCQk5OTZCMkI5NTI1RTI0NDgxMDA3
MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCTk5NkIyQjk2MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJOTk2QjJCOTcy
NUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdl
Ykluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0JCRTQ5RjE5QjY2QzUz
MDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJCTUxRjA2MEREMTY1
NDMxNzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtMTE0NzUsNiArMTE0OTYsNyBAQAogCQkJCTk5MDM2QUUyMjNBOTQ5Q0YwMDAwQjA2QSAvKiBf
V0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5QjE2NzU3MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3OTY1
QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5QjE2NzU4MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDcyMTMwODQ2QTAwQjFG
N0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTExNzgwLDYg
KzExODAyLDcgQEAKIAkJCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDA1MjNEQkM0QkIwMDI1Nzg5MiAvKiBJ
bnNwZWN0b3JCcm93c2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDAyMjNEQkM0
OTAwMDI1Nzg5MiAvKiBJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2
QjJCOUQyNUUyNTdGRjAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFy
Z2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNGQSAv
KiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTEyMjY2LDYgKzEyMjg5LDggQEAKIAkJCQk5OUIxNjc2NDI1
MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTc5NjU5RTI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QjE2
NzVCMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2QjJCOTkyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NUJBODJCMUJBMzhFNjEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0NEEwMTg4NEU0RjAwMEVEODZEQiAv
KiBXZWJJT1NFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMTQxNDksNiArMTQxNzQs
NyBAQAogCQkJCUMxOEYzQTE1MjU2MzMzNDMwMDc5N0U2NiAvKiBXZWJJbnNwZWN0b3JQcmVmZXJl
bmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1NzZD
MkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTZCMkI5
ODI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNCQkU0QTAxOUI2NkM1
MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzhBMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJLZXlib2FyZEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjI4MEYzMTkxOTk4MkEwMDZBRDlGOSAvKiBXZWJLaXQu
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCBkMTM5MGJmZDZmNmJl
MjMxNTY2N2MwNGZkNmJlYzNkNmFjMTU1MmRkLi5jN2FjNWQ2YmZmMjY4MDdkZTNlZDFiYmZiYTky
YTJhODhmM2Q2NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcApAQCAtMjcyLDcgKzI3MiwzMCBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZShib29sIGF2YWlsYWJsZSkKIAogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRj
aENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlIl9z
LCB7IEpTT046OlZhbHVlOjpjcmVhdGUobV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSkgfSk7
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX1RFTEVNRVRSWSkKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK2Jvb2wgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFi
SUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRTaG93
RXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpF
eHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQm
IGV4dGVuc2lvblRhYklEKQoreworICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmRpZEhpZGVFeHRlbnNp
b25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIFdlYkNvcmU6OlBhZ2UqIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpmcm9udGVuZFBhZ2UoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCmluZGV4IGI4ZGE5YTlmOGE1
YTc2NmQxMzYxMjI2YWYwYzRlODU2MTY1NmIzZDUuLjAwYTNlZTAxZWQxZjU2OTQyNGE1OGQ1YzY0
NzY1MGE0ZjE5NzFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJJ
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTM5LDggKzQzLDEw
IEBAIGNsYXNzIEZsb2F0UmVjdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYlBhZ2U7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOworI2VuZGlmCiAKIGNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclVJIGZpbmFsCiAgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0b3JVST4KQEAgLTEwOSw2ICsxMTUs
MTIgQEAgcHVibGljOgogICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKSBvdmVy
cmlkZSB7IHJldHVybiBtX2RpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlOyB9CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rpb25hcnkmKSBvdmVycmlkZTsKICNl
bmRpZgorICAgICAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgYm9v
bCBzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNob3dFeHRl
bnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uVGFiSUQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
VGFiSUQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJLmNwcAppbmRleCAxYTJkNzEwMGE1ZWIyOGY3NWE4NDVlZjI5YmEwMTky
NTI3MzljY2UzLi5lZjJlMGY5NjJhZThjMjZiMDM4ZjM2MjU1NjkwZTNiNzdiNzgzMWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJLmNwcApAQCAtMzU1LDcgKzM1NSwzMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpzZXREaWFn
bm9zdGljTG9nZ2luZ0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKIAogICAgIG1fZnJvbnRlbmRB
UElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInNldERpYWdub3N0
aWNMb2dnaW5nQXZhaWxhYmxlIl9zLCB7IEpTT046OlZhbHVlOjpjcmVhdGUobV9kaWFnbm9zdGlj
TG9nZ2luZ0F2YWlsYWJsZSkgfSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX1RFTEVNRVRSWSkKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK2Jvb2wg
V2ViSW5zcGVjdG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCkKK3sKKyAg
ICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkU2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25JRCwg
ZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5z
aW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
VGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkSGlkZUV4dGVuc2lvblRhYihleHRl
bnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
CmluZGV4IDk5NWMyMjI0NWJmZmE0ZTVkYTI4NmYzZGNiNjY2MTA1MzMyZGE4MjEuLjYyOWU0NWRj
NmY4MGJjMjAyNTA3ZmJhYTc4NWI0NWUxNjQ3MjEwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTMyLDYgKzMyLDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JDb250
cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwpAQCAtMTQ3LDYgKzE1MSwxMiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBkaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSgpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGU7IH0KICAgICB2b2lkIGxvZ0Rp
YWdub3N0aWNFdmVudChjb25zdCBXVEY6OlN0cmluZyYgZXZlbnROYW1lLCBjb25zdCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7CiAj
ZW5kaWYKKyAgICAgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIGJv
b2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTaG93RXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvblRhYklEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFi
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
blRhYklEJikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tl
bmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSBmaW5hbCB7IHJldHVybiBt
X2Zyb250ZW5kQVBJRGlzcGF0Y2hlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwCmluZGV4IDNiOWJkMDAwZjI5YTE5NmYxODYzYmNmMjk5ZjMxODk3ZGY3
MDdjZDEuLmVhMGE1MWU4M2E3NDE2YmZmZDJhZjY3MjM2ZWMzZWJiMjk4ZGQ0MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJQ2FzdC5oPgpAQCAtNDgsMzYgKzQ5LDM4IEBAIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OkluCiAg
ICAgYXV0byogcGFnZSA9IGluc3BlY3RvckZyb250ZW5kLmZyb250ZW5kUGFnZSgpOwogICAgIEFT
U0VSVChwYWdlKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgqcGFnZSkuaWRlbnRpZmllcigp
LCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllciA9IFdlYlBhZ2U6OmZyb21D
b3JlUGFnZSgqcGFnZSkuaWRlbnRpZmllcigpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmll
ciwgKnRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdl
SWRlbnRpZmllcik7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2
YWx1YXRpb25SZXN1bHQgcmVzdWx0KQorT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVu
c2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAg
ICAgICBzd2l0Y2ggKHJlc3VsdC5lcnJvcigpKSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uRXJyb3I6OkNvbnRleHREZXN0
cm95ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRl
eHREZXN0cm95ZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6Q29udGV4dERlc3Ryb3llZDsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25FcnJvcjo6RXhlY3V0aW9uU3VzcGVuZGVkOgot
ICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9y
OworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3I7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpFdmFsdWF0aW9uRXJyb3I6OkludGVybmFsRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4g
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIEFTU0VSVChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBhdXRvIGdsb2JhbE9i
amVjdCA9IG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5k
R2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVybiBJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CiAKICAgICBhdXRv
IHZhbHVlT3JFeGNlcHRpb24gPSByZXN1bHQudmFsdWUoKTsKICAgICBpZiAoIXZhbHVlT3JFeGNl
cHRpb24uaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgTE9HKEluc3BlY3RvciwgIkVuY291bnRlcmVk
IGV4Y2VwdGlvbiB3aGlsZSBldmFsdWF0aW5nIHVwb24gdGhlIGZyb250ZW5kOiAlcyIsIHZhbHVl
T3JFeGNlcHRpb24uZXJyb3IoKS5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgIH0KICAgICAK
ICAgICAvLyBJZiB0aGUgZXZhbHVhdGlvbiByZXN1bHQgaXMgYSBzdHJpbmcsIHRoZSBmcm9udGVu
ZCByZXR1cm5lZCBhbiBlcnJvciBzdHJpbmcuCkBAIC04NywxOCArOTAsMTggQEAgT3B0aW9uYWw8
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjo6cGFyc2VJbnNwZWMKICAgICBpZiAoc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAg
ICBhdXRvIHJlc3VsdFN0cmluZyA9IHNjcmlwdFZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkNvbnRleHREZXN0cm95ZWQiX3MpCi0g
ICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95
ZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZDsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW50ZXJuYWxFcnJvciJf
cykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcjsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRl
cm5hbEVycm9yOwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJJbnZhbGlkUmVxdWVzdCJf
cykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJl
cXVlc3Q7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3Q7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIlJlZ2lzdHJhdGlvbkZh
aWxlZCJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVn
aXN0cmF0aW9uRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAi
Tm90SW1wbGVtZW50ZWQiX3MpCi0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I6Ok5vdEltcGxlbWVudGVkOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJy
b3I7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVy
cm9yOwogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDYsMTAgKzEwOSwx
MCBAQCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlYwogCiAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgogCi12b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQm
IGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQs
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVl
c3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTE5LDcgKzEyMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpCiAgICAgfTsK
ICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENv
bW1hbmRXaXRoUmVzdWx0QXN5bmMoInJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNw
ZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTMyLDE3ICsxMzUsMTcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
ckV4dGVuc2kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4
dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZh
bHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRl
bmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lz
dGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250
ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY3
LDEwICsxNzAsMTAgQEAgSlNDOjpKU09iamVjdCogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QKICAgICByZXR1cm4gdmFsdWVP
ckV4Y2VwdGlvbi52YWx1ZSgpLmdldE9iamVjdCgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
ckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBV
UkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVS
TCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250
ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKElu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODIsNyArMTg1LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQKICAgICB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQt
PmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygi
Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250
ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTk1
LDE0ICsxOTgsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNy
ZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQKICAgICAgICAgYXV0byBvYmpl
Y3RSZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3Vs
dCk7CiAgICAgICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CiAgICAgICAgICAgICBMT0coSW5zcGVj
dG9yLCAiVW5leHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9y
RnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50
ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmpl
Y3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCku
ZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIGZvdW5kUHJvcGVy
dHkgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXh0ZW5zaW9uVGFi
SUQiX3MpKTsKICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5IHx8ICFmb3VuZFByb3BlcnR5Lmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKSk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MjEwLDEwICsyMTMsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25z
dCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJv
b2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQm
IGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8
VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdp
biwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZnJv
bnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxv
cHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnZhbGlkUmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzMywx
MyArMjM2LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAKICAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5
bmMoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1
YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENs
aWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAg
ICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250
ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpu
dWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNTQsNyArMjU3LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgYXV0byBvYmplY3RSZXN1bHQgPSB3ZWFrVGhpcy0+
dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3VsdCk7CiAgICAgICAgIGlmICghb2Jq
ZWN0UmVzdWx0KSB7CiAgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAiVW5leHBlY3RlZCBub24t
b2JqZWN0IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFi
Rm9yRXh0ZW5zaW9uKCkuIik7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdU
Rjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVChyZXN1bHQudmFsdWUoKSk7CkBAIC0yNjIsNyArMjY1LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlNDOjpKU1ZhbHVlIGVycm9yUGF5
bG9hZCA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3QtPnZtKCksICJlcnJvciJfcykp
OwogICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAg
ICBpZiAoIWVycm9yUGF5bG9hZC5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJ
bnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdU
Rjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yNzMsNyArMjc2LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFBh
eWxvYWQgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAicmVzdWx0Il9z
KSk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9i
amVjdCwgcmVzdWx0UGF5bG9hZCk7CiAgICAgICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVl
KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4
MSw2ICsyODQsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZFNob3dFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRTaG93RXh0ZW5zaW9uVGFiIHsg
ZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZGlkSGlkZUV4
dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OkRpZEhpZGVFeHRl
bnNpb25UYWIgeyBleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQgfSwgbV9pbnNwZWN0b3JQYWdl
SWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmgKaW5kZXggZjEzNDFkY2QyNzZkMGMxMDFlNDRiZGRhMTdjZTQwYjhhM2NiMzYx
Ny4uMjQyMTg0ZWVlM2RmYjQ2YzExODllYmQ2MzA4ZDI4MWYzNGM3OTIwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KQEAgLTYzLDE2ICs2NCwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCi0gICAgdm9pZCBy
ZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGNyZWF0
ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmlu
ZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwg
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8
VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29u
dGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBj
b25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJik7CisgICAgdm9pZCBy
ZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgdW5yZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZv
aWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBj
b25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBz
b3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRl
bnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkws
IGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9u
YWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4m
KT4mJik7CisKKyAgICAvLyBDYWxsYmFja3MgZnJvbSB0aGUgZnJvbnRlbmQuCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3Vs
dCk7Ci0gICAgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOworICAgIE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZh
bHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2
YWx1YXRpb25SZXN1bHQpOwogCiAgICAgV2Vha1B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBt
X2luc3BlY3RvclBhZ2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCmluZGV4IGQxNzQwNjAyOGZhZjM3YjUwNjQxNDI1ZmI2MGQ4ZmYwZTIzYzQ0NTQuLjZlODBj
NzBkZmNiNWRiYjQ1ODIxNTFkMDliNTY1MzRmMzIzNTllNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yMywxMSAr
MjMsMTEgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIG1lc3NhZ2VzIC0+
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKLSAgICBS
ZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFtZSkg
LT4gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3Vs
dCkgQXN5bmMKLSAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4g
KEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
QXN5bmMKKyAgICBSZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBk
aXNwbGF5TmFtZSkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
IHJlc3VsdCkgQXN5bmMKKyAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25J
RCkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
QXN5bmMKIAotICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0
cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVSTCkgLT4gKEV4cGVjdGVk
PFN0cmluZywgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYwot
ICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5n
IHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0
KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcg
ZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVS
TCkgLT4gKEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBBc3luYworICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25J
RCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8
VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQo=
</data>
<flag name="commit-queue"
          id="440025"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421223</attachid>
            <date>2021-02-22 12:12:46 -0800</date>
            <delta_ts>2021-02-22 13:22:37 -0800</delta_ts>
            <desc>Patch v2.2 - try to fix watchOS build</desc>
            <filename>bug-222252-20210222121245.patch</filename>
            <type>text/plain</type>
            <size>116340</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJlYjllZWQ4YThlMzJh
ZDk5NzgzOTMyZTQ5MGM4ZmMxNmQ0ZjA1ZS4uZDA1NThjYTZiYjhhNTZkZDU2N2Y0NGI2YTY0ZTIz
MmM3MDhiNGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIxICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM4NTM2NWMyZjExYmRmNjdlOGJl
NWE2ZDgwMTIwY2QwMzA3ZTNjZWMuLmU2NDAwYjE1OGI4ZmZlY2E4Njc4Y2FiYWYxYzc2NWUwYWMw
OWZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAy
LTIxICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIElu
c3BlY3RvcjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2
aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzEyMDY2ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6IFVwZGF0
ZSBjb21tZW50IGZvciBuYW1lc3BhY2UgY2hhbmdlLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hl
ZCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuZGV0YWNoZWQpOgorICAgICAgICBXaGVuIGFuIGV4dGVuc2lvbiB0YWIgaXMgc2hvd24g
b3IgaGlkZGVuLCBub3RpZnkgdGhlIGZyb250ZW5kIGhvc3QgYWJvdXQgdGhlIGV2ZW50LgorCiAy
MDIxLTAyLTE5ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENTUyBHcmlkIEluc3BlY3RvcjogdXNlIGEgY29sb3IgcGFsZXR0
ZSBmb3IgZGVmYXVsdCBncmlkIG92ZXJsYXkgY29sb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NjUxZGI3ZjU2
YzhjZjQxMjBmNTk3ZmM0YWVlOTJmM2FkZDljYjUuLmFlMzg5MGFiYjk0MWU4ZGMzYzVlNmY0ZDdm
MzQ4YTI1MGM1NTE3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU2IEBACisyMDIxLTAyLTIxICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rv
cjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2
ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNsaWVudHMgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlm
ZWN5Y2xlIGV2ZW50cy4gRm9yIG5vdyB0aGlzIGluY2x1ZGVzCisgICAgICAgIGV4dGVuc2lvbiB0
YWIgc2hvd24vaGlkZGVuLCBidXQgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUgcGFnZSBuYXZpZ2F0
aW9ucyBhbmQgb3RoZXIgZXZlbnRzIGV4cG9zZWQKKyAgICAgICAgdmlhIFdlYiBFeHRlbnNpb25z
IEFQSS4KKworICAgICAgICBUaGlzIGlzIGltcGxlbWVudGVkIGF0IHRoZSBXZWJLaXQgbGV2ZWwg
dmlhIG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBtZXRob2RzLiBUaGlzIGdldHMgcGlwZWQg
dG8KKyAgICAgICAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdmlhIElQ
Qywgd2hpY2ggdGhlbiBwYXNzZXMgb24gdGhlIGV2ZW50IHRvIF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLgorCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlIGlzIGEg
ZGVsZWdhdGUgb2YgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLiBJdCdzIGZvciByZWNlaXZpbmcgbGlm
ZWN5Y2xlIGV2ZW50cywgYW5kCisgICAgICAgIGlzIGltcGxlbWVudGVkIHNpbWlsYXJseSB0byBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkgbm93IGtlZXBzIGEgbWFwIG9mCisgICAgICAgIGV4dGVuc2lvbiBBUEkgb2JqZWN0cyBzbyB0
aGF0IGl0IGNhbiBjYWxsIG91dCB0byB0aGUgdGhlIGFwcHJvcHJpYXRlIGV4dGVuc2lvbiBBUEkg
b2JqZWN0J3MgY2xpZW50L2RlbGVnYXRlLgorCisgICAgICAgIFRvIGJldHRlciBoYW5kbGUgdGhl
IHNpdHVhdGlvbiB3aGVyZSBjbGllbnQgY29tcGxldGlvbiBoYW5kbGVycyBtYXkgYmUgaW52b2tl
ZCBhZnRlciB0aGUgaW5zcGVjdG9yIHBhZ2UgaGFzIGJlZW4gdG9ybiBkb3duLAorICAgICAgICBz
d2l0Y2ggV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdG8gYmUgUmVmQ291
bnRlZCBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0ciBzbyB0aGF0IHRoZSBhcHByb3ByaWF0ZQor
ICAgICAgICBBUEkgb2JqZWN0IGNhbiBiZSByZXRyaWV2ZWQgaW4gdGhlIGFzeW5jIElQQyByZXBs
eSBibG9jay4gKElQQyBtZXNzYWdlIHJlY2VpdmVyIGNvZGUga25vd3MgaG93IHRvIHJlZiB0aGUg
cmVjZWl2ZXIKKyAgICAgICAgaWYgaXQgZXhwZWN0cyB0byBkZWxpdmVyIGEgcmVzcG9uc2UpLgor
CisgICAgICAgIExhc3RseSwgc2luY2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIGF0IHRoZSBXZWJDb3JlIGxldmVsLCBJIGRlY2lkZWQgdG8gbW92ZSB0aGUg
Y29udGVudHMKKyAgICAgICAgb2YgSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCB0byB0aGUgSW5z
cGVjdG9yIG5hbWVzcGFjZS4gSXQgbWFkZSBtb3JlIHNlbnNlIHRoYW4gdHlwaW5nIG91dCBXZWJD
b3JlOjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcgorICAgICAgICBhbmQgdGhlIGxpa2UuIEFzIHBh
cnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSBzdHJpbmcgdHlwZSBhbGlhc2VzIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQgYW5kIEluc3BlY3RvcjpFeHRlbnNpb25UYWJJRCBhcmUKKyAgICAgICAgbm93IGRl
ZmluZWQgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaC4KKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgIEFkZCBnZW5lcmF0ZWQgZmlsZXMgZm9yIG5ldyBtZXNzYWdlIHJlY2VpdmVyLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyBmb3IgaW5zcGVjdG9yIGV4
dGVuc2lvbiBjbGllbnQvZGVsZWdhdGUgYm9pbGVycGxhdGUgY2xhc3Nlcy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JF
eHRlbnNpb25UeXBlcy5oOgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZSB0aGVzZSB0eXBlcyBhbmQgaGVscGVycyB0byBJbnNwZWN0b3IgbmFtZXNw
YWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudCk6IEFkZCBhIGNs
aWVudCBtZW1iZXIgd2hpY2ggaXMgdXNlZCB0byBjYWxsIG91dCB0byBfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVU
YWIpOiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpl
dmFsdWF0ZVNjcmlwdCk6IEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaC4KKyAgICAgICAg
KEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFi
KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tJbnNw
ZWN0b3IgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVybnMgYW4gaW5pdGlhbGl6ZWQg
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpk
aXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVy
bnMgYW4gaW5pdGlhbGl6ZWQgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6
IEFkZCB0aGUgZGVsZWdhdGUgcHJvcGVydHkgYW5kIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIG1l
bnRpb24gaXRzIGludGVuZGVkIHVzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDogQWRkIGRlbGVnYXRlIHN0b3JhZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtf
V0tJbnNwZWN0b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgIEFkZGVkLgorCisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTp0YWJJY29u
VVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRml4IG5hbWVzcGFjZXMuCisgICAg
ICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpmcmFtZVVSTDpjb250
ZXh0U2VjdXJpdHlPcmlnaW46dXNlQ29udGVudFNjcmlwdENvbnRleHQ6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6ICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIE9iakMtdG8tQysrIGJyaWRnZSBjb2Rl
IHRvIGNvbm5lY3QgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgKHVzZWQgYnkgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpCisgICAgICAgIHRvIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlICh1c2VkIGJ5IGNsaWVudCBjb2RlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aDogRml4IG5hbWVzcGFjZXMuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgIE1ha2UgdGhpcyBjbGFzcyBhbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gSXQgcmVjZWl2ZXMg
bWVzc2FnZXMgZm9yIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOgorICAgICAgICBNYWtlIHRoaXMgY2xhc3Mg
YW4gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBFeHBh
bmQgdGhpcyBjb2RlIG91dCBzbyB0aGF0IHdlIGNhbiBzYXZlIEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uIGluc3RhbmNlcyBpbnRvIG91ciBvd24gbWFwCisgICAgICAgIGJlZm9yZSBzZW5kaW5nIGl0
IHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4gVGhpcyBtYXAga2VlcHMgc3Ryb25nIHJlZmVyZW5j
ZXMgdG8gdGhlIGV4dGVuc2lvbgorICAgICAgICBBUEkgb2JqZWN0cyBzaW5jZSB0aGV5IG5lZWQg
dG8gYmUgdXNlZCB0byBzZW5kIGV2ZW50cyBhdCBhbiBhcmJpdHJhcnkgdGltZSBpbiB0aGUgZnV0
dXJlLgorICAgICAgICBQcmV2aW91c2x5LCB0aGV5IHdlcmUga2VwdCBhbGl2ZSAob3Igbm90KSBi
eSB0aGUgQVBJIGNsaWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIFdoZW4g
dGhlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVnaXN0ZXJlZCwgcmVtb3ZlIHRoZSBhc3NvY2lh
dGVkIGV4dGVuc2lvbiBBUEkgb2JqZWN0IChhbmQKKyAgICAgICAgb3VyIHN0cm9uZyByZWZlcmVu
Y2UgdG8gaXQpLgorCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOiBGaXggbmFtZXNwYWNlcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRTaG93RXh0ZW5z
aW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVHJ5IHRvIGxv
b2sgdXAgdGhlIGFzc29jaWF0ZWQgQVBJIG9iamVjdCBmb3IgdGhlIGV4dGVuc2lvbiBhbmQgZm9y
d2FyZCB0aGUgZXZlbnQgdG8KKyAgICAgICAgdGhlIGNsaWVudCBvZiB0aGUgQVBJIG9iamVjdCwg
d2hpY2ggaXMgdWx0aW1hdGVseSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaDogRml4IFVuaWZpZWRTb3VyY2Vz
IGZhbGxvdXQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcubW06CisgICAgICAgICgtW1dLRm9jdXNlZEZvcm1Db250cm9sVmlldyBfd2hlZWxD
aGFuZ2VkV2l0aEV2ZW50Ol0pOiBGaXggVW5pZmllZFNvdXJjZXMgZmFsbG91dC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25U
YWIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xs
ZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gRGVmZXIgdG8gdGhl
IGV4dGVuc2lvbiBjb250cm9sbGVyIHRvIGhhbmRsZSBmdXJ0aGVyIGV2ZW50IHByb3BhZ2F0aW9u
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBGaXggbmFtZXNw
YWNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgQmUgbW9yZSBwcmVjaXNlIGFi
b3V0IGFzc29jaWF0aW5nIHRoaXMgbWVzc2FnZSByZWNlaXZlciB3aXRoIHRoZSBpbnNwZWN0b3Ig
cGFnZSdzIGlkZW50aWZpZXIuCisgICAgICAgIEFsc28sIHNhdmUgdGhlIHBhZ2UgaWRlbnRpZmll
ciBzbyB0aGF0IG1ldGhvZHMgdGhhdCBuZWVkIHRvIHNlbmQgSVBDIG1lc3NhZ2VzIGNhbiBzZW5k
CisgICAgICAgIHRoZSBtZXNzYWdlIHRvIHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uSUQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUlu
c3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKToKKyAgICAgICAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRIaWRl
RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuCisKIDIwMjEtMDItMjAgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcGRhdGUgV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjIHdpdGggc29tZSBuZXcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGU4ZDEz
YTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4NzA2NTlhNDk0
YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK3VzaW5n
IEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6
U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRS
ZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1lICovLCBjb25z
dCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYK
KyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
JiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0NzE5NmU4ZTc3
OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNkMzk4Y2Q5MGQ3
YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0
IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAKK2Jvb2wgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQt
PnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFi
KGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4OTNiYjM1NTNh
ZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi40NTA2NmI5YTgxYWMzM2NkN2JiODc3YWI4OTE5
MmYyYjAzNWRjZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDYgKzEzNiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYg
cGF5bG9hZCk7CiAjZW5kaWYKIAorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCk7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lv
blRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRh
YklEKTsKKyAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNp
b25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51
UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsCmluZGV4IDE3ZThmNWI4ZDJhZWM4NTdkYzZmNTcxNjRhZGU3YTE0N2Y5NzQ3
NjIuLjMyYzU3NDNhMGU2M2Q1ODIzOTk4MTNkZGMzMDMwYTgzNDQyNDc5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC05
NSw2ICs5NSwxMCBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNE
aWFnbm9zdGljTG9nZ2luZzsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX1RFTEVNRVRSWV0g
dW5kZWZpbmVkIGxvZ0RpYWdub3N0aWNFdmVudChET01TdHJpbmcgZXZlbnROYW1lLCBET01TdHJp
bmcgY29udGVudCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c1dl
YkV4dGVuc2lvbnM7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRl
ZmluZWQgZGlkU2hvd0V4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmlu
ZyBleHRlbnNpb25UYWJJRCk7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05T
XSB1bmRlZmluZWQgZGlkSGlkZUV4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERP
TVN0cmluZyBleHRlbnNpb25UYWJJRCk7CiB9OwogCiBkaWN0aW9uYXJ5IENvbnRleHRNZW51SXRl
bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwppbmRleCA2ZmJjMzdhZWE3
YTE4OTNiMWY3MDJiNTRjYmMyNzA3NThiZTk1ZTU0Li44ZWFmZTAzOTI0ZDU5NmFiY2RkZWFiY2Mx
YmVlYTJlY2EzZDQxYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMK
QEAgLTQwLDcgKzQwLDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xhc3MgV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fZGlz
cGxheU5hbWU7IH0KIH07CiAKLS8vIE5vdGU6IHRoZXNlIHZhbHVlcyBhcmUgc3lub255bW91cyB3
aXRoIHRoZSB2YWx1ZXMgb2YgZW51bSBjbGFzcyBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVy
cm9yLgorLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5vbnltb3VzIHdpdGggdGhlIHZhbHVl
cyBvZiBlbnVtIGNsYXNzIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IuCiBXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb24uRXJyb3JDb2RlID0gewogICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0
RGVzdHJveWVkIiwKICAgICBJbnRlcm5hbEVycm9yOiAiSW50ZXJuYWxFcnJvciIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDMzZmRmYTAwZmQ0M2NjMDE5ZmNkMTRjZmJlOTAxOWY1OTdkMGE4M2UuLjNiMDZhMGE4MDBi
OTQ5OWNiOWNiNmRmN2MwYTIzMjY5OTJmM2VmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDIyIEBAIFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IGF0dGFjaGVkKCkKKyAgICB7CisgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAg
aWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCisgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRl
bnNpb24uZXh0ZW5zaW9uSWQsIHRoaXMuX2V4dGVuc2lvblRhYklEKTsKKyAgICB9CisKKyAgICBk
ZXRhY2hlZCgpCisgICAgeworICAgICAgICBzdXBlci5kZXRhY2hlZCgpOworCisgICAgICAgIGlm
IChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhpZGVFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5z
aW9uLmV4dGVuc2lvbklkLCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCiAgICAgdGFi
SW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYy
OTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUuLjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlm
ZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJ
TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFh
NjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVjNzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRj
ZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgs
NiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAog
CVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRjNzBmNDI2NzE2M2VjNTkuLjM1YjI4MGExMGFl
MTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1OCw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBl
KHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9D
b25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBb
JyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAorICAgICAgICAn
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgi
J10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUn
OiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAg
ICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGltZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwK
QEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAg
J1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAgICAn
V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAg
ICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzog
WyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3Rp
bmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYWdl
U3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCBiYjNlZWU4OGRlZmJjNGY4NzAwYzkw
NTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzExZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdk
OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1XVEY6
OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNp
b25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7Ci0gICAgY2FzZSBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7Ci0gICAg
Y2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CisgICAgY2FzZSBF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CiAgICAgICAgIHJldHVybiAiSW52YWxpZFJl
cXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgogICAgICAg
ICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgorICAgIGNhc2UgRXh0ZW5zaW9uRXJyb3I6OlJl
Z2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CisgICAg
Y2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAgICAgICAgIHJldHVybiAiTm90
SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3Zjg1NzQxNmZkYzRmZmI1MjA5MmYyNTM3NzU2
MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkxODJiNDU4NGQ4OWViZjFmY2Y3MmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTM3
LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWls
czsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworZW51bSBjbGFzcyBFeHRl
bnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0g
V1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwot
dXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCA9IEV4cGVjdGVkPEV4cGVj
dGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj47Cit1c2luZyBFeHRlbnNpb25UYWJJ
RCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5n
IEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxFeHBlY3RlZDxSZWZQdHI8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgRXh0
ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWlu
dDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CiAgICAgQ29udGV4
dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9yLAogICAgIEludmFsaWRSZXF1ZXN0LApAQCAt
NTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50
OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07CiAKLVdURjo6U3RyaW5nIGluc3BlY3RvckV4
dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworV1RGOjpTdHJp
bmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvcik7CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKIG5hbWVzcGFjZSBXVEYgewog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAotICAgICAgICBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCisgICAgICAgIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRl
eHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQs
CisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCiAgICAg
PjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlNWRiNmMxOTc1NDVhMTlhMWVlZWJl
Y2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1NjZmYzhmYjU4YzRlNjljZTg3MmUyZGEyMWI1
NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjIsNiArNDIyLDcgQEAgVUlQcm9jZXNz
L0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9t
YWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRk
YjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3MDBkYTFmYWE1NmVjMjNhOTY5YWYzYWExNzZi
MzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00NSwyMCArNDUsMjUgQEAgUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24o
aWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25U
YWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudChVbmlxdWVSZWY8SW5zcGVj
dG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudC5t
b3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5jcmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVu
dGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0
KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJM
PiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246
OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9w
dGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29u
dGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlw
dENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lv
bkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9l
eHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2QyZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2
Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0YzkzOTdjMzMxODFhYTU3ZWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBA
IC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAor
I2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFt
ZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkws
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAg
IHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29u
c3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+
JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50
U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiKGNv
bnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29u
c3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4m
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisKKyAgICBJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9
CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4m
Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgxNDIxNTVhMGIzMjEyOGY3OTEyMzEzOGUxODgw
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3MGIwNWI0NDMxYmMzMzdmYzJmYzkuLjZkYTYz
N2VhMjlkYTAzOTBkOGNiNDUwMzMzYTk4MjY5YjlhNzhiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMTg2LDEzICsxODYs
MTkgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNp
b25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICop
ZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJl
Z2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVu
c2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQp
IG11dGFibGUgeworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgcHJp
b3IgdG8gY3JlYXRpbmcgYSBmcm9udGVuZCAoaS5lLiwgd2l0aCAtY29ubmVjdCBvciAtc2hvdyku
CisgICAgaWYgKCFfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KX1dLCBuaWwpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT5yZWdpc3RlckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1
c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpl
eHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBw
ZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5n
ZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkp
OworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihyZXN1bHQudmFsdWUoKSkpOwog
ICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5p
bCk7CkBAIC0yMDIsOSArMjA4LDE1IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6
KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAtICh2b2lk
KXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIF9pbnNwZWN0b3ItPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25J
RCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAvLyBJdCBpcyBhbiBl
cnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgKGku
ZS4sIHdpdGggLWNvbm5lY3Qgb3IgLXNob3cpLgorICAgIGlmICghX2luc3BlY3Rvci0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCl9
XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25D
b250cm9sbGVyKCktPnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRv
bWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJl
YXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVz
dWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7
IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCBkMTEyYTBjNGMzM2JiNjJiZjViMzY4MzJm
ODMyMGIwZjJlNjFmZmE4Li45YmU2MTMwODE4YjI3MGE1OGQ2M2QyY2Q3Yzg3NDllOTJlYjBjMGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0zMyw2ICszMyw4IEBACiAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTsKKwog
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogQGludGVyZmFjZSBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdAogCkBAIC00NSw4ICs0NywxMCBAQCBXS19DTEFTU19B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAgKiBAcGFyYW0gdGFiSWNvblVSTCBUaGUgbG9j
YXRpb24gb2YgYW4gaW1hZ2UgcmVzb3VyY2UgdG8gdXNlIGZvciBkaXNwbGF5IGluIHRoZSBjcmVh
dGVkIHRhYidzIHRpdGxlLgogICogQHBhcmFtIHNvdXJjZVVSTCBUaGUgbG9jYXRpb24gb2YgdGhl
IG1haW4gcmVzb3VyY2UgdG8gbG9hZCBpbiB0aGUgbmV3IHRhYidzIGlmcmFtZSBicm93c2luZyBj
b250ZXh0LgogICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgdG8gYmUgY2FsbGVkIHdoZW4gY3JlYXRpbmcgYSB0YWIgc3VjY2VlZHMgb3IgZmFpbHMuCisg
KiBAZGlzY3Vzc2lvbiBUaGUgaW5zcGVjdG9yVGFiSWRlbnRpZmllciBwcm92aWRlZCB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRhYnMKKyAqIHRoYXQg
YXJlIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZSBtZXRob2RzLgogICovCi0tICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmluZyAqKXRh
Yk5hbWUgdGFiSWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNvdXJjZVVSTDooTlNVUkwgKilz
b3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwg
TlNTdHJpbmcgKiBfTnVsbGFibGUgaW5zcGVjdG9yVGFiSUQpKWNvbXBsZXRpb25IYW5kbGVyOwor
LSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6
KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxh
YmxlIGluc3BlY3RvclRhYklkZW50aWZpZXIpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAvKioKICAq
IEBhYnN0cmFjdCBFdmFsdWF0ZXMgSmF2YVNjcmlwdCBpbiB0aGUgY29udGV4dCBvZiB0aGUgaW5z
cGVjdGVkIHBhZ2Ugb24gYmVoYWxmIG9mIHRoZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCkBAIC02
Myw2ICs2NywxMiBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAKIEBw
cm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOwogCisv
KioKKyAqIEBhYnN0cmFjdCBBbGxvd3MgdGhlIGNsaWVudCB0byByZWNlaXZlIGV4dGVuc2lvbiBs
aWZlY3ljbGUgZXZlbnRzIHRoYXQKKyAqIGFyaXNlIGZyb20gd2l0aGluIFdlYiBJbnNwZWN0b3Iu
CisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGU+IGRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkp
OworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5k
ZXggMjY3ZjBlZjkzMzgzOTU4NDM3ODQwZjAwYzJiYWE3NmJmZDc5Y2Y1ZS4uN2JjZjU4ZWM5ZTU3
MWMwZTExN2Q3ZjQ3ZDQxYTBiYWYxYTIyNWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0y
Niw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisK
KyNpbXBvcnQgIkluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3SW50ZXJuYWwuaCIKQEAgLTMzLDggKzM2LDYgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotCiBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCiAKIC0gKHZvaWQpZGVh
bGxvYwpAQCAtNDksMTMgKzUwLDI2IEBAIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiAgICAg
cmV0dXJuICpfZXh0ZW5zaW9uOwogfQogCistIChpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS0+ZGVsZWdhdGUoKS5hdXRv
cmVsZWFzZSgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZDxfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBpZiAoIWRlbGVnYXRlICYmICFfZGVsZWdh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIF9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4oc2VsZiwgZGVsZWdhdGUpOworfQorCiAvLyBN
QVJLOiBBUEkKIAogLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1l
IHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNl
VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgTlNTdHJpbmcgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFi
SWNvblVSTCwgc291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9leHRlbnNpb24tPmNyZWF0ZVRhYih0YWJO
YW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4
cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAg
ICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNv
ZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJy
b3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBO
U0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJv
clRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTY3LDkgKzgxLDkgQEAgLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGUKIHsK
ICAgICBPcHRpb25hbDxVUkw+IG9wdGlvbmFsRnJhbWVVUkwgPSBmcmFtZVVSTCA/IG1ha2VPcHRp
b25hbChVUkwoZnJhbWVVUkwpKSA6IFdURjo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxVUkw+IG9w
dGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gbWFr
ZU9wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IFdURjo6bnVsbG9wdDsKLSAg
ICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVV
UkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5z
aW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVVUkwsIG9wdGlv
bmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVu
c2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmZTg0MTRkMWYwODBmZjI1YTg0MTc0Y2EzZDg2NGJmY2RkMjFiNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFRBUkdFVF9PU19PU1gKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CisK
K0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+CitAb3B0
aW9uYWwKKworLyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgZXh0ZW5zaW9uIGhhcyBiZWVuIHNob3duLgorICogQHBhcmFtIGV4dGVuc2lvbiBU
aGUgZXh0ZW5zaW9uIHRoYXQgY3JlYXRlZCB0aGUgc2hvd24gdGFiLgorICogQHBhcmFtIHRhYklk
ZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhlIHRhYiB0aGF0IHdhcyBzaG93bi4KKyAqLworLSAo
dm9pZClpbnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcjsKKwor
LyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
ZXh0ZW5zaW9uIGhhcyBiZWVuIGhpZGRlbi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVu
c2lvbiB0aGF0IGNyZWF0ZWQgdGhlIGhpZGRlbiB0YWIuCisgKiBAcGFyYW0gdGFiSWRlbnRpZmll
ciBJZGVudGlmaWVyIGZvciB0aGUgdGFiIHRoYXQgd2FzIGhpZGRlbi4KKyAqLworLSAodm9pZClp
bnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBkaWRI
aWRlVGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcjsKKworQGVuZAor
CitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKaW5kZXggMGEwZmFiYzhhMzcwMmQzMjcyOTZmNTcx
NjQwZWMxNzFmYzQ1MTFkZi4uYWUzMTY5ODc5YzY5N2JhZjJiMDMwMTkyMTJhYmQzY2I3MDRiNmQy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKQEAgLTMwLDYgKzMwLDEwIEBA
CiAjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKICNpbXBvcnQgIldLT2JqZWN0Lmgi
CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CkBAIC00MSw2ICs0NSw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIEBpbnRl
cmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IF9leHRlbnNpb247
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
IF9kZWxlZ2F0ZTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCmluZGV4IDgyMDY2M2FiZDliMmFiMjQ3Njg0YzNjODFjZDBhYzk1NzI2MGJj
NGIuLjU2YjVlZTg2ZWNhOTY0OTA4NGQ1MzM1MDhmYmVlMzM1MGZhZDQ1N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTE1OSwxNiArMTU5LDIy
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+IF9OdWxsYWJsCiAKIC8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QgbWV0aG9kcwogCi0tICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0
cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihO
U1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250
cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJv
dGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRhaW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHBy
aW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2Vu
ZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBub3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5z
cGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJ
bnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpfV0sIG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCktPnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOwpAQCAtMTc4LDkgKzE4NCwxNCBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogLSAo
dm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNp
b24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRl
bnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJv
b2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRl
bmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2VuZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBu
b3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNv
bnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5T
TG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9y
VG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpfV0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9u
SUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTkwZWU3MmVhZjY2OWU5ZTUwNzA4MTQ0OWI2MDA4YjBhOTk2NmI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0
ICJBUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5o
IgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRl
bnNpb247CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAg
UmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7
CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3Rv
ckV4dGVuc2lvbkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBB
UEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNp
b25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpIG92ZXJyaWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJ
bnNwZWN0b3JFeHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRy
PGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBz
dHJ1Y3QgeworICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRl
bnRpZmllciA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThm
YTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4ZTJiYTdkN2M5MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9X
S0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24sIGlkIDxfV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2luc3BlY3RvckV4dGVuc2lvbihp
bnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQoreworICAgIG1f
ZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmll
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvckV4dGVu
c2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
aW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0ZW5zaW9uOmRpZEhpZGVUYWJX
aXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVuc2lvbi0+X2V4dGVuc2lvbi0+
c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PigqdGhpcykp
OworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fkluc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KElu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1faW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQo
KQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJX
aXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGluc3BlY3RvckV4dGVuc2lvbjpt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9yRXh0ZW5zaW9uLmdldCgpLmdl
dCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25UYWJJRF07Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNp
b25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxl
Z2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9uOm1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkuZ2V0KCkgZGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAppbmRleCBmNWEwMjJlYTJlMGM5NzNkYjgzMjlmMDg4YzU4YzcwMTkzYjA5M2Iy
Li43ZTAzMDNkZGE5ZTJiZTY3ZmQ2OTRkMjZhNTZmYThhYTI4MTUwN2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwg
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1
ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4oKm1faW5zcGVjdG9yUGFn
ZSk7CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OmNyZWF0ZSgqbV9pbnNwZWN0b3JQYWdlKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDBmMWMwOThmNDM1OWQ0M2U1YmU4NWRmMTdiNmI4NjUz
ZjEwZWI0MTAuLmE0Mzg5ODRhNjUzNzJlNDdiMTI5OWY1NGM2NmU0ZWQ1Nzk3NzQzZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5z
aW9uQ29udHJvbGxlcjsgfQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25Db250
cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNTgs
NyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZSB7
IG51bGxwdHIgfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0
ZW5zaW9uQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKICNlbmRpZgogICAgIAogICAgIFJl
ZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5k
ZXggMjUwMTAyMjlhYmNkMjY4NGRmNWVjMGJlOWNjNTAyYWFjMzQ0NzFkZi4uMWJjNjljOTVmNTNk
YjYwMWZkMmQ0ZmZmNTZlMjBiMDc3ZDYyNWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC00MjYsNyAr
NDI2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKCkKICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCpt
X2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+
KCptX2luc3BlY3RvclBhZ2UpOworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGUoKm1faW5zcGVjdG9yUGFnZSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxM2JlYjg5YTdjNzlhYzEyMWI4NTRhNzk2ODYy
NmFkNDViNTJlYzRjLi42YWI3Y2E0ZDEzODAxYjc2MGYzY2M0ODcyNGQ5ZmM1MDQxYTU2MGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2U7IH0KIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSogZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5z
aW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4gbV9pbnNw
ZWN0b3JDbGllbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4
dGVuc2lvbkNvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CiAjZW5kaWYKICAgICAKICAgICBi
b29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGExZWFkMWQyMTM3NDI3MTIxNjY5YzA0MTUy
MjNiYjkxZjc4N2RhZWEuLjQ1ZmU1NjA1NzI1OTkyMzA3MGI4OGExZWExOTY2YWQxMzRhMjM4ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNw
cApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQog
CisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKQEAgLTM3LDE4ICszOSwy
NSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJv
eHkmIGluc3BlY3RvclBhZ2UpCiAgICAgOiBtX2luc3BlY3RvclBhZ2UobWFrZVdlYWtQdHIoaW5z
cGVjdG9yUGFnZSkpCiB7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpLCAq
dGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQogeworICAgIGF1dG8gY2FsbGJh
Y2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsK
KyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjaygp
OworCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zy
b250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjaygpOworUmVmPFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5PiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShpbnNw
ZWN0b3JQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CkBAIC03NCwzNSArODMsNTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQogCiAvLyBBUEkKIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5z
cGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt0aGlzLCBzdHJv
bmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghdGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNp
b25JRCwgZGlzcGxheU5hbWUgfSwgW3RoaXMsIHN0cm9uZ1RoaXMgPSBXVEZNb3ZlKHN0cm9uZ1Ro
aXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IGV4
dGVuc2lvbkFQSU9iamVjdCA9IEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoZXh0ZW5z
aW9uSUQsIHN0cm9uZ1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgbV9leHRlbnNpb25BUElPYmpl
Y3RNYXAuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25BUElPYmplY3QuY29weVJlZigpKTsKKwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleHRlbnNpb25BUElPYmplY3Qp
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0
ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9h
ZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Qp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQg
fSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLnRha2Uo
ZXh0ZW5zaW9uSUQpOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3aGVu
RnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lv
bklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTEwLDE1ICsxMzgsMTUgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpV
Ukw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBj
b25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0
aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiB7ZXh0ZW5z
aW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNl
Q29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWlscywgY29uc3Qg
T3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAg
ICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uIHtleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0sIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBk
ZXRhaWxzLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTM3LDYgKzE2NSwzNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bgogICAgIH0pOwogfQogCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSBJUEMgbWVzc2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQordm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZGlkU2hvd0V4dGVuc2lvblRh
Yihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgYXV0byBpdCA9IG1f
ZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmZpbmQoZXh0ZW5zaW9uSUQpOworICAgIGlmIChpdCA9PSBt
X2V4dGVuc2lvbkFQSU9iamVjdE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb24gPSBpdC0+dmFsdWU7CisgICAg
YXV0byBleHRlbnNpb25DbGllbnQgPSBleHRlbnNpb24tPmNsaWVudCgpOworICAgIGlmICghZXh0
ZW5zaW9uQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBleHRlbnNpb25DbGllbnQtPmRp
ZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBhdXRvIGl0ID0gbV9leHRlbnNpb25B
UElPYmplY3RNYXAuZmluZChleHRlbnNpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZXh0ZW5zaW9u
QVBJT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJOjpJ
bnNwZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbiA9IGl0LT52YWx1ZTsKKyAgICBhdXRvIGV4dGVu
c2lvbkNsaWVudCA9IGV4dGVuc2lvbi0+Y2xpZW50KCk7CisgICAgaWYgKCFleHRlbnNpb25DbGll
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGV4dGVuc2lvbkNsaWVudC0+ZGlkSGlkZUV4dGVu
c2lvblRhYihleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggNGQ1YjM1ZmU0MTE2ZGQ1OGZjNjYzZWQ0MWY1YjkyNTRjMTYy
MDkxZC4uZDYxMWY4ZDNhZjczOTcwZTg2MmU5YWM3MmY0MGUzZGRiNTgxN2E2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTM0LDMyICsz
NCw0OSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgZmluYWwKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+CisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShX
ZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmIGluc3BlY3Rv
clBhZ2UpOwogICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KCk7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
KwogICAgIC8vIEFQSS4KLSAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
ckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYp
OwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJM
JiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
SUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+
JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBj
b25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYm
KTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IElQQyBt
ZXNzYWdlcy4KKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdm9pZCBkaWRT
aG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJik7CisjZW5kaWYKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMuCiAgICAgdm9pZCBpbnNwZWN0
b3JGcm9udGVuZExvYWRlZCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSk7
CisKICAgICB2b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBIYXNoTWFw
PEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4+
IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwOwogCiAgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25z
IHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KICAg
ICAvLyBUaGVyZSdzIG5vIHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBp
cyBmdWxseSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAyZmJiYTcyNmZiM2M1
YWJlYmFmMjg2NzMwMmE4YzI3YTY1NDZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK21l
c3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IHsKKyAgICBE
aWRTaG93RXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIGV4dGVuc2lvblRh
YklEKQorICAgIERpZEhpZGVFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcg
ZXh0ZW5zaW9uVGFiSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQppbmRleCBlNjZkZjg0YTIyYjgzODEzYmVlZTQ1
MTBkNWI5ZWVlNzg4MDIyNWY2Li5hMTE2ODU3Y2MxM2EyNDBhMDBiY2UxYzhkNjE3NTRkYzA4ZDc0
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KQEAgLTEzMSw3ICsxMzEsNyBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGRlbGVnYXRlOihpZCA8V0tG
b2N1c2VkRm9ybUNvbnRyb2xWaQogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChCT09MKWhhbmRs
ZVdoZWVsRXZlbnQ6KFVJRXZlbnQgKilldmVudAorLSAoQk9PTCloYW5kbGVXaGVlbEV2ZW50Oig6
OlVJRXZlbnQgKilldmVudAogewogICAgIFtzZWxmIF93aGVlbENoYW5nZWRXaXRoRXZlbnQ6ZXZl
bnRdOwogICAgIHJldHVybiBZRVM7CkBAIC0xOTksNyArMTk5LDcgQEAgLSAodm9pZCloYW5kbGVU
YXAKICAgICBbc2VsZiBkaWREaXNtaXNzXTsKIH0KIAotLSAodm9pZClfd2hlZWxDaGFuZ2VkV2l0
aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKKy0gKHZvaWQpX3doZWVsQ2hhbmdlZFdpdGhFdmVudDoo
OjpVSUV2ZW50ICopZXZlbnQKIHsKICAgICBbc3VwZXIgX3doZWVsQ2hhbmdlZFdpdGhFdmVudDpl
dmVudF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50
aW5nVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgK
aW5kZXggNTljOTBlNzkzNDJmYjI4YjQwNTA2OWYwM2Q4ZWMzZGMxNjJiNGVlZC4uYjY0MjQ5YmQ4
OGFiYTM0MzE0M2Q2YmVjNWE5OGE1MmU4YzVkNTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0
Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogQGNsYXNzIFdLUHJpbnRpbmdWaWV3
RGF0YTsKIEBjbGFzcyBQREZEZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDAwMzIwZjU0NTAzMzJhZmRjYTkwN2Rh
YTUxMmJmODJmOTZiZDUuLmEzMjFlMzZmN2E3YzMyNTNmMzkwOTVjYTllNGZiMTFkYmEwOTE0MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTUyMiw2ICsxNTIyLDExIEBACiAJCTk5NTVBNkY1MUM3OTg2RTAwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJh
Y2tlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyog
QXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlv
blByb3RvY29sT2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlv
blByb3RvY29sT2JqZWN0cy5oICovOyB9OworCQk5OTZCMkI5ODI1RTI0NDgyMDA3MTkzNzkgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTUy
NUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk2QjJCOTkyNUUyNDQ4MjAwNzE5Mzc5IC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkIyQjk2MjVFMjQ0ODIw
MDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2Vz
LmggKi87IH07CisJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTcyNUUyNDQ4MjAwNzE5Mzc5IC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
Ki87IH07CisJCTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgg
Ki87IH07CisJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3
ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5
Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0
ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CkBAIC00ODg0LDYgKzQ4ODksMTQgQEAKIAkJOTk1NUE2RjExQzc5ODY2
NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5NTVBNkYyMUM3OTg2NjQw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1NUE2RjMxQzc5ODY2NDAw
RUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTUyNUUyNDQ4
MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5NzI1
RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUIyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIy
QjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyogQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZC
MkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQzkxRjQyMURDQTAw
QzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAw
IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OTY1OUEyNTMxMEE0ODAwQjMx
QUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC03ODU0LDYgKzc4NjcsNyBAQAogCQkJCTkxOTc5NDBCMjNEQkM1MDMw
MDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAogCQkJCTk5QjE2NzU0MjUyQkI3
RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQk5OUIxNjc1NjI1
MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5NkIy
QkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25I
b3N0LmggKi8sCiAJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9X
S0luc3BlY3RvckludGVybmFsLmggKi8sCkBAIC05MjAzLDYgKzkyMTcsOCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRl
LmggKi8sCiAJCQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRl
Lm1tICovLAorCQkJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5oICovLAorCQkJCTk5NkIyQjlCMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTIyNCw2ICs5MjQwLDcgQEAKIAkJCQkxQzc3QzE5
NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcCAqLywKIAkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKKwkJCQk5OTZCMkI5MzI1
RTI0MzE0MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3Bl
Y3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdl
Ykluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAv
KiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC05OTc5LDYgKzk5OTYsNyBAQAogCQkJCTk5
NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8s
CiAJCQkJOTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5j
cHAgKi8sCiAJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3RvckV4dGVu
c2lvbi5oICovLAorCQkJCTk5NkIyQjlFMjVFMjU4MkMwMDcxOTM3OSAvKiBBUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJ
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1
MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcw
MEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTEwNTQs
NiArMTEwNzIsOSBAQAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmggKi8sCisJCQkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQk5OTZCMkI5NjI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTk5NkIyQjk3MjVFMjQ0ODIwMDcx
OTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oICovLAogCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8q
IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4
MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTExNDc1LDYg
KzExNDk2LDcgQEAKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9y
RGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RC
QzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzk2NUEzMjUzMTI4Qzcw
MEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJ
bnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTc4MCw2ICsxMTgwMiw3IEBA
CiAJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MTk3OTQwNTIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJv
d3NlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwMjIzREJDNDkwMDAyNTc4OTIg
LyogSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQjlEMjVFMjU3
RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURG
NjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjI2Niw2ICsxMjI4OSw4IEBACiAJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIxNjc1QjI1MkJCQURE
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5NkIyQjk5MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
OTZCMkI5QTI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQkJFNEExMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZl
bnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTQ5LDYgKzE0MTc0LDcgQEAKIAkJCQlD
MThGM0ExNTI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzk2
NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk2QjJCOTgyNUUyNDQ4MjAw
NzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAv
KiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc4QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggZDEzOTBiZmQ2ZjZiZTIzMTU2NjdjMDRm
ZDZiZWMzZDZhYzE1NTJkZC4uYzdhYzVkNmJmZjI2ODA3ZGUzZWQxYmJmYmE5MmEyYTg4ZjNkNjVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTI3Miw3ICsyNzIsMzAgQEAgdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFp
bGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0
aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSJfcywgeyBKU09OOjpW
YWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUpIH0pOwogfQotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dl
YkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
SUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNp
b25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkU2hvd0V4dGVuc2lvblRh
YihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFJlbW90ZVdlYkluc3Bl
Y3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQm
IGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25U
YWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQogCiBXZWJDb3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRl
bmRQYWdlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCBiOGRhOWE5ZjhhNWE3NjZkMTM2MTIy
NmFmMGM0ZTg1NjE2NTZiM2Q1Li4wMGEzZWUwMWVkMWY1Njk0MjRhNThkNWM2NDc2NTBhNGYxOTcx
YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0
ZW5zaW9uVHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0
aWZpY2F0ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0zOSw4ICs0MywxMCBAQCBjbGFzcyBG
bG9hdFJlY3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlOworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNl
bmRpZgogCiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAogICAgIDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CkBAIC0xMDksNiArMTE1LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZTsgfQogICAgIHZvaWQgbG9nRGlhZ25vc3Rp
Y0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBjb25zdCBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyAgICAg
ICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIGJvb2wgc3VwcG9ydHNX
ZWJFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgb3Zl
cnJpZGU7CisjZW5kaWYKIAogICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5jcHAKaW5kZXggMWEyZDcxMDBhNWViMjhmNzVhODQ1ZWYyOWJhMDE5MjUyNzM5Y2NlMy4u
ZWYyZTBmOTYyYWU4YzI2YjAzOGYzNjI1NTY5MGUzYjc3Yjc4MzFmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAg
LTM1NSw3ICszNTUsMzAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2
YWlsYWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGUpIH0pOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVU
UlkpCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFdlYkluc3BlY3Rv
clVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4
dGVuc2lvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2V4dGVuc2lv
bkNvbnRyb2xsZXItPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRh
YklEKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKQorewor
ICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2V4dGVuc2lvbkNvbnRyb2xsZXItPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4
dGVuc2lvblRhYklEKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA5OTVj
MjIyNDViZmZhNGU1ZGEyODZmM2RjYjY2NjEwNTMzMmRhODIxLi42MjllNDVkYzZmODBiYzIwMjUw
N2ZiYWE3ODViNDVlMTY0NzIxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNs
YXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKQEAgLTE0Nyw2ICsxNTEsMTIgQEAgcHVibGljOgog
ICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2RpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlOyB9CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZl
bnQoY29uc3QgV1RGOjpTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSYpIG92ZXJyaWRlOwogI2VuZGlmCisgICAg
ICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBib29sIHN1cHBvcnRz
V2ViRXh0ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92
ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQ
SURpc3BhdGNoZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcAppbmRleCAzYjliZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi5lYTBh
NTFlODNhNzQxNmJmZmQyYWY2NzIzNmVjM2ViYjI5OGRkNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
QEAgLTQ4LDM2ICs0OSwzOCBAQCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbgogICAgIGF1dG8qIHBh
Z2UgPSBpbnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7
CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIgPSBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBh
Z2UpLmlkZW50aWZpZXIoKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIsICp0aGlzKTsK
IH0KIAogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIp
OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1
YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVz
dWx0IHJlc3VsdCkKK09wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZy
b21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgc3dpdGNo
IChyZXN1bHQuZXJyb3IoKSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgotICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
OworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQ7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uRXJyb3I6OkV4ZWN1dGlvblN1c3BlbmRlZDoKLSAgICAgICAgICAg
IHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAg
ICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvbkVycm9yOjpJbnRlcm5hbEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBBU1NFUlQobV9mcm9udGVuZENsaWVudCk7CiAgICAgYXV0byBnbG9iYWxPYmplY3QgPSBtX2Zy
b250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVj
dCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwogCiAgICAgYXV0byB2YWx1ZU9yRXhj
ZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9yRXhjZXB0aW9uLmhhc192
YWx1ZSgpKSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50ZXJlZCBleGNlcHRpb24g
d2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2YWx1ZU9yRXhjZXB0aW9u
LmVycm9yKCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYg
dGhlIGV2YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0aGUgZnJvbnRlbmQgcmV0dXJuZWQg
YW4gZXJyb3Igc3RyaW5nLgpAQCAtODcsMTggKzkwLDE4IEBAIE9wdGlvbmFsPEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5z
cGVjCiAgICAgaWYgKHNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgYXV0byByZXN1
bHRTdHJpbmcgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAg
ICBpZiAocmVzdWx0U3RyaW5nID09ICJDb250ZXh0RGVzdHJveWVkIl9zKQotICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7
CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJyb3IiX3MpCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsK
ICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVlc3QiX3MpCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OworICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
OwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWlsZWQiX3MpCi0g
ICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZh
aWxlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdp
c3RyYXRpb25GYWlsZWQ7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIk5vdEltcGxlbWVu
dGVkIl9zKQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpOb3RJ
bXBsZW1lbnRlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpOb3RJbXBsZW1lbnRlZDsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9
CiAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2LDEwICsxMDksMTAgQEAgT3B0aW9u
YWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6cGFyc2VJbnNwZWMKIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
IElQQyBtZXNzYWdlcy4KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25J
RCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEx
OSw3ICsxMjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaQogICAgIH07CiAgICAgbV9mcm9u
dGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJl
c3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTEzMiwxNyArMTM1LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeyBKU09OOjpWYWx1ZTo6Y3JlYXRl
KGV4dGVuc2lvbklEKSB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0
Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lv
biJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NywxMCArMTcwLDEw
IEBAIEpTQzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53
cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0CiAgICAgcmV0dXJuIHZhbHVlT3JFeGNlcHRpb24u
dmFsdWUoKS5nZXRPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29u
VVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25V
UkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0CiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQ
SURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZv
ckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NSwxNCArMTk4LDE0
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0g
d2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAg
ICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhw
ZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJ
LmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Ip
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1Ro
aXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xv
YmFsT2JqZWN0KCk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmb3VuZFByb3BlcnR5ID0gb2JqZWN0
UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImV4dGVuc2lvblRhYklEIl9zKSk7CiAg
ICAgICAgIGlmICghZm91bmRQcm9wZXJ0eSB8fCAhZm91bmRQcm9wZXJ0eS5pc1N0cmluZygpKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMCwxMCArMjEz
LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8
VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29u
dGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBj
b25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25J
RCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1l
VVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzMsMTMgKzIzNiwxMyBA
QCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRl
bmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8q
IGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250
ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGlmICgh
ZnJvbnRlbmRHbG9iYWxPYmplY3QpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1
YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkg
ewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1
ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lv
bigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlQocmVzdWx0LnZhbHVlKCkpOwpAQCAtMjYyLDcgKzI2NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvclBheWxvYWQgPSBvYmpl
Y3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3IiX3MpKTsKICAgICAgICAg
aWYgKCFlcnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgaWYgKCFlcnJv
clBheWxvYWQuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cik7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjczLDcgKzI3Niw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHRQYXlsb2FkID0gb2Jq
ZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgInJlc3VsdCJfcykpOwogICAgICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZnJvbnRlbmRHbG9iYWxPYmplY3QsIHJlc3Vs
dFBheWxvYWQpOwogICAgICAgICBpZiAoIXNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkgewotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVy
cm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODEsNiArMjg0LDE2
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
blRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRhYiB7IGV4dGVuc2lvbklE
LCBleHRlbnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRIaWRlRXh0ZW5zaW9uVGFiIHsg
ZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
CmluZGV4IGYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcuLjI0MjE4NGVl
ZTNkZmI0NmMxMTg5ZWJkNjMwOGQyODFmMzRjNzkyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC02Mywx
NiArNjQsMjMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgotICAgIHZvaWQgcmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3JFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUs
IGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRl
eHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9u
YWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRh
YkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRp
b25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1
c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworCisg
ICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgorI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyAgICB2
b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwotICAgIE9w
dGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVy
cm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsKKyAgICBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1
bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVz
dWx0KTsKIAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1f
ZnJvbnRlbmRDbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pbnNwZWN0b3JQ
YWdlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBk
MTc0MDYwMjhmYWYzN2I1MDY0MTQyNWZiNjBkOGZmMGUyM2M0NDU0Li42ZTgwYzcwZGZjYjVkYmI0
NTgyMTUxZDA5YjU2NTM0ZjMyMzU5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDExIEBACiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgUmVnaXN0ZXJFeHRl
bnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3Rl
ZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCi0g
ICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxi
b29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAg
UmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUp
IC0+IChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFz
eW5jCisgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiAKLSAg
ICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFiTmFt
ZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcsIFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBFdmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRTb3Vy
Y2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkgLT4gKElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiBkZXRhaWxzLCBPcHRpb25hbDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBl
cnJvcikgQXN5bmMKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklE
LCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBl
Y3RlZDxTdHJpbmcsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAg
ICBFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBz
Y3JpcHRTb3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4
dFNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkg
LT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
PiBlcnJvcikgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421232</attachid>
            <date>2021-02-22 13:22:39 -0800</date>
            <delta_ts>2021-02-25 15:07:33 -0800</delta_ts>
            <desc>Patch v2.3 - try to fix watchOS build harder, fix typobug in frontend change</desc>
            <filename>bug-222252-20210222132238.patch</filename>
            <type>text/plain</type>
            <size>116340</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJlYjllZWQ4YThlMzJh
ZDk5NzgzOTMyZTQ5MGM4ZmMxNmQ0ZjA1ZS4uZDA1NThjYTZiYjhhNTZkZDU2N2Y0NGI2YTY0ZTIz
MmM3MDhiNGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IG1ldGhvZHMgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGNhbGwgdG8gcGFzcyBhbG9uZyBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cworICAgICAgICB2aWEgdGhlIGZyb250ZW5kIGNsaWVudC4gQWRk
ICdzdXBwb3J0c1dlYkV4dGVuc2lvbnMnIHRvIGFsbG93IGZvciBmZWF0dXJlIGRldGVjdGlvbiBm
cm9tIFdlYkluc3BlY3RvclVJLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6
c3VwcG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorCiAyMDIxLTAyLTIxICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VdIHRvIGFs
bG93IGNsaWVudHMgdG8gZWZmaWNpZW50bHkgZ2V0IGEgVGV4dE1hcmtlclJhbmdlIGZyb20gYW4g
TlNSYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM4NTM2NWMyZjExYmRmNjdlOGJl
NWE2ZDgwMTIwY2QwMzA3ZTNjZWMuLmU2NDAwYjE1OGI4ZmZlY2E4Njc4Y2FiYWYxYzc2NWUwYWMw
OWZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAy
LTIxICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIElu
c3BlY3RvcjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2
aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzEyMDY2ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6IFVwZGF0
ZSBjb21tZW50IGZvciBuYW1lc3BhY2UgY2hhbmdlLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hl
ZCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuZGV0YWNoZWQpOgorICAgICAgICBXaGVuIGFuIGV4dGVuc2lvbiB0YWIgaXMgc2hvd24g
b3IgaGlkZGVuLCBub3RpZnkgdGhlIGZyb250ZW5kIGhvc3QgYWJvdXQgdGhlIGV2ZW50LgorCiAy
MDIxLTAyLTE5ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENTUyBHcmlkIEluc3BlY3RvcjogdXNlIGEgY29sb3IgcGFsZXR0
ZSBmb3IgZGVmYXVsdCBncmlkIG92ZXJsYXkgY29sb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NjUxZGI3ZjU2
YzhjZjQxMjBmNTk3ZmM0YWVlOTJmM2FkZDljYjUuLmFlMzg5MGFiYjk0MWU4ZGMzYzVlNmY0ZDdm
MzQ4YTI1MGM1NTE3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU2IEBACisyMDIxLTAyLTIxICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rv
cjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2
ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNsaWVudHMgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlm
ZWN5Y2xlIGV2ZW50cy4gRm9yIG5vdyB0aGlzIGluY2x1ZGVzCisgICAgICAgIGV4dGVuc2lvbiB0
YWIgc2hvd24vaGlkZGVuLCBidXQgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUgcGFnZSBuYXZpZ2F0
aW9ucyBhbmQgb3RoZXIgZXZlbnRzIGV4cG9zZWQKKyAgICAgICAgdmlhIFdlYiBFeHRlbnNpb25z
IEFQSS4KKworICAgICAgICBUaGlzIGlzIGltcGxlbWVudGVkIGF0IHRoZSBXZWJLaXQgbGV2ZWwg
dmlhIG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBtZXRob2RzLiBUaGlzIGdldHMgcGlwZWQg
dG8KKyAgICAgICAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdmlhIElQ
Qywgd2hpY2ggdGhlbiBwYXNzZXMgb24gdGhlIGV2ZW50IHRvIF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLgorCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlIGlzIGEg
ZGVsZWdhdGUgb2YgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLiBJdCdzIGZvciByZWNlaXZpbmcgbGlm
ZWN5Y2xlIGV2ZW50cywgYW5kCisgICAgICAgIGlzIGltcGxlbWVudGVkIHNpbWlsYXJseSB0byBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkgbm93IGtlZXBzIGEgbWFwIG9mCisgICAgICAgIGV4dGVuc2lvbiBBUEkgb2JqZWN0cyBzbyB0
aGF0IGl0IGNhbiBjYWxsIG91dCB0byB0aGUgdGhlIGFwcHJvcHJpYXRlIGV4dGVuc2lvbiBBUEkg
b2JqZWN0J3MgY2xpZW50L2RlbGVnYXRlLgorCisgICAgICAgIFRvIGJldHRlciBoYW5kbGUgdGhl
IHNpdHVhdGlvbiB3aGVyZSBjbGllbnQgY29tcGxldGlvbiBoYW5kbGVycyBtYXkgYmUgaW52b2tl
ZCBhZnRlciB0aGUgaW5zcGVjdG9yIHBhZ2UgaGFzIGJlZW4gdG9ybiBkb3duLAorICAgICAgICBz
d2l0Y2ggV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgdG8gYmUgUmVmQ291
bnRlZCBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0ciBzbyB0aGF0IHRoZSBhcHByb3ByaWF0ZQor
ICAgICAgICBBUEkgb2JqZWN0IGNhbiBiZSByZXRyaWV2ZWQgaW4gdGhlIGFzeW5jIElQQyByZXBs
eSBibG9jay4gKElQQyBtZXNzYWdlIHJlY2VpdmVyIGNvZGUga25vd3MgaG93IHRvIHJlZiB0aGUg
cmVjZWl2ZXIKKyAgICAgICAgaWYgaXQgZXhwZWN0cyB0byBkZWxpdmVyIGEgcmVzcG9uc2UpLgor
CisgICAgICAgIExhc3RseSwgc2luY2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIGF0IHRoZSBXZWJDb3JlIGxldmVsLCBJIGRlY2lkZWQgdG8gbW92ZSB0aGUg
Y29udGVudHMKKyAgICAgICAgb2YgSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCB0byB0aGUgSW5z
cGVjdG9yIG5hbWVzcGFjZS4gSXQgbWFkZSBtb3JlIHNlbnNlIHRoYW4gdHlwaW5nIG91dCBXZWJD
b3JlOjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcgorICAgICAgICBhbmQgdGhlIGxpa2UuIEFzIHBh
cnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSBzdHJpbmcgdHlwZSBhbGlhc2VzIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQgYW5kIEluc3BlY3RvcjpFeHRlbnNpb25UYWJJRCBhcmUKKyAgICAgICAgbm93IGRl
ZmluZWQgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaC4KKworICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgIEFkZCBnZW5lcmF0ZWQgZmlsZXMgZm9yIG5ldyBtZXNzYWdlIHJlY2VpdmVyLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyBmb3IgaW5zcGVjdG9yIGV4
dGVuc2lvbiBjbGllbnQvZGVsZWdhdGUgYm9pbGVycGxhdGUgY2xhc3Nlcy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JF
eHRlbnNpb25UeXBlcy5oOgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgTW92ZSB0aGVzZSB0eXBlcyBhbmQgaGVscGVycyB0byBJbnNwZWN0b3IgbmFtZXNw
YWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudCk6IEFkZCBhIGNs
aWVudCBtZW1iZXIgd2hpY2ggaXMgdXNlZCB0byBjYWxsIG91dCB0byBfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVU
YWIpOiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpl
dmFsdWF0ZVNjcmlwdCk6IEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaC4KKyAgICAgICAg
KEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFi
KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tJbnNw
ZWN0b3IgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
QWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVybnMgYW4gaW5pdGlhbGl6ZWQg
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpk
aXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyB0eXBlIHNpZ25hdHVyZSB0aGF0IHJldHVy
bnMgYW4gaW5pdGlhbGl6ZWQgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6
IEFkZCB0aGUgZGVsZWdhdGUgcHJvcGVydHkgYW5kIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIG1l
bnRpb24gaXRzIGludGVuZGVkIHVzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDogQWRkIGRlbGVnYXRlIHN0b3JhZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtf
V0tJbnNwZWN0b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgIEFkZGVkLgorCisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTp0YWJJY29u
VVJMOnNvdXJjZVVSTDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRml4IG5hbWVzcGFjZXMuCisgICAg
ICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpmcmFtZVVSTDpjb250
ZXh0U2VjdXJpdHlPcmlnaW46dXNlQ29udGVudFNjcmlwdENvbnRleHQ6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6ICBGaXggbmFtZXNwYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6Okluc3BlY3RvckV4dGVuc2lvbkNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50OjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIE9iakMtdG8tQysrIGJyaWRnZSBjb2Rl
IHRvIGNvbm5lY3QgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgKHVzZWQgYnkgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpCisgICAgICAgIHRvIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlICh1c2VkIGJ5IGNsaWVudCBjb2RlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aDogRml4IG5hbWVzcGFjZXMuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAg
ICAgIE1ha2UgdGhpcyBjbGFzcyBhbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gSXQgcmVjZWl2ZXMg
bWVzc2FnZXMgZm9yIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOgorICAgICAgICBNYWtlIHRoaXMgY2xhc3Mg
YW4gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuIEl0IHJlY2VpdmVzIG1lc3NhZ2VzIGZvciBleHRlbnNp
b24gbGlmZWN5Y2xlIGV2ZW50cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBFeHBh
bmQgdGhpcyBjb2RlIG91dCBzbyB0aGF0IHdlIGNhbiBzYXZlIEFQSTo6SW5zcGVjdG9yRXh0ZW5z
aW9uIGluc3RhbmNlcyBpbnRvIG91ciBvd24gbWFwCisgICAgICAgIGJlZm9yZSBzZW5kaW5nIGl0
IHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4gVGhpcyBtYXAga2VlcHMgc3Ryb25nIHJlZmVyZW5j
ZXMgdG8gdGhlIGV4dGVuc2lvbgorICAgICAgICBBUEkgb2JqZWN0cyBzaW5jZSB0aGV5IG5lZWQg
dG8gYmUgdXNlZCB0byBzZW5kIGV2ZW50cyBhdCBhbiBhcmJpdHJhcnkgdGltZSBpbiB0aGUgZnV0
dXJlLgorICAgICAgICBQcmV2aW91c2x5LCB0aGV5IHdlcmUga2VwdCBhbGl2ZSAob3Igbm90KSBi
eSB0aGUgQVBJIGNsaWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIFdoZW4g
dGhlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVnaXN0ZXJlZCwgcmVtb3ZlIHRoZSBhc3NvY2lh
dGVkIGV4dGVuc2lvbiBBUEkgb2JqZWN0IChhbmQKKyAgICAgICAgb3VyIHN0cm9uZyByZWZlcmVu
Y2UgdG8gaXQpLgorCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOiBGaXggbmFtZXNwYWNlcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKTogRml4IG5hbWVzcGFjZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRTaG93RXh0ZW5z
aW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gVHJ5IHRvIGxv
b2sgdXAgdGhlIGFzc29jaWF0ZWQgQVBJIG9iamVjdCBmb3IgdGhlIGV4dGVuc2lvbiBhbmQgZm9y
d2FyZCB0aGUgZXZlbnQgdG8KKyAgICAgICAgdGhlIGNsaWVudCBvZiB0aGUgQVBJIG9iamVjdCwg
d2hpY2ggaXMgdWx0aW1hdGVseSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcuaDogRml4IFVuaWZpZWRTb3VyY2Vz
IGZhbGxvdXQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcubW06CisgICAgICAgICgtW1dLRm9jdXNlZEZvcm1Db250cm9sVmlldyBfd2hlZWxD
aGFuZ2VkV2l0aEV2ZW50Ol0pOiBGaXggVW5pZmllZFNvdXJjZXMgZmFsbG91dC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25U
YWIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVu
c2lvblRhYik6CisgICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xs
ZXIgdG8gaGFuZGxlIGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnN1cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4gRGVmZXIgdG8gdGhl
IGV4dGVuc2lvbiBjb250cm9sbGVyIHRvIGhhbmRsZSBmdXJ0aGVyIGV2ZW50IHByb3BhZ2F0aW9u
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBGaXggbmFtZXNw
YWNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgQmUgbW9yZSBwcmVjaXNlIGFi
b3V0IGFzc29jaWF0aW5nIHRoaXMgbWVzc2FnZSByZWNlaXZlciB3aXRoIHRoZSBpbnNwZWN0b3Ig
cGFnZSdzIGlkZW50aWZpZXIuCisgICAgICAgIEFsc28sIHNhdmUgdGhlIHBhZ2UgaWRlbnRpZmll
ciBzbyB0aGF0IG1ldGhvZHMgdGhhdCBuZWVkIHRvIHNlbmQgSVBDIG1lc3NhZ2VzIGNhbiBzZW5k
CisgICAgICAgIHRoZSBtZXNzYWdlIHRvIHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uSUQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUlu
c3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKToKKyAgICAgICAgRml4IG5hbWVzcGFjZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRIaWRl
RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuCisKIDIwMjEtMDItMjAgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcGRhdGUgV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjIHdpdGggc29tZSBuZXcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGU4ZDEz
YTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4NzA2NTlhNDk0
YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zOSw2ICszOSwxMyBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK3VzaW5n
IEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6
U3RyaW5nOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRS
ZWN0OwpAQCAtMTEwLDYgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFN0cmluZyYgLyogZXZlbnROYW1lICovLCBjb25z
dCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYK
KyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIHsgfQorI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
JiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAwZDYyY2Y0NzE5NmU4ZTc3
OTMyZGZjODU3ZDIwY2IwMTQ4MmIxNjEuLjI5OTczNjU0ZGNjNzVhMDg2OTUyOWNkMzk4Y2Q5MGQ3
YjhkYTc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCkBAIC02NzMsNCArNjczLDMyIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0
IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAKK2Jvb2wgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQt
PnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFi
KGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIG1fY2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlMjk4OTNiYjM1NTNh
ZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQyMzVkLi40NTA2NmI5YTgxYWMzM2NkN2JiODc3YWI4OTE5
MmYyYjAzNWRjZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDYgKzEzNiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYg
cGF5bG9hZCk7CiAjZW5kaWYKIAorICAgIGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCk7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lv
blRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRh
YklEKTsKKyAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNp
b25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51
UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsCmluZGV4IDE3ZThmNWI4ZDJhZWM4NTdkYzZmNTcxNjRhZGU3YTE0N2Y5NzQ3
NjIuLjMyYzU3NDNhMGU2M2Q1ODIzOTk4MTNkZGMzMDMwYTgzNDQyNDc5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC05
NSw2ICs5NSwxMCBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNE
aWFnbm9zdGljTG9nZ2luZzsKICAgICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX1RFTEVNRVRSWV0g
dW5kZWZpbmVkIGxvZ0RpYWdub3N0aWNFdmVudChET01TdHJpbmcgZXZlbnROYW1lLCBET01TdHJp
bmcgY29udGVudCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c1dl
YkV4dGVuc2lvbnM7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRl
ZmluZWQgZGlkU2hvd0V4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmlu
ZyBleHRlbnNpb25UYWJJRCk7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05T
XSB1bmRlZmluZWQgZGlkSGlkZUV4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERP
TVN0cmluZyBleHRlbnNpb25UYWJJRCk7CiB9OwogCiBkaWN0aW9uYXJ5IENvbnRleHRNZW51SXRl
bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwppbmRleCA2ZmJjMzdhZWE3
YTE4OTNiMWY3MDJiNTRjYmMyNzA3NThiZTk1ZTU0Li44ZWFmZTAzOTI0ZDU5NmFiY2RkZWFiY2Mx
YmVlYTJlY2EzZDQxYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMK
QEAgLTQwLDcgKzQwLDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xhc3MgV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fZGlz
cGxheU5hbWU7IH0KIH07CiAKLS8vIE5vdGU6IHRoZXNlIHZhbHVlcyBhcmUgc3lub255bW91cyB3
aXRoIHRoZSB2YWx1ZXMgb2YgZW51bSBjbGFzcyBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVy
cm9yLgorLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5vbnltb3VzIHdpdGggdGhlIHZhbHVl
cyBvZiBlbnVtIGNsYXNzIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3IuCiBXSS5XZWJJbnNwZWN0
b3JFeHRlbnNpb24uRXJyb3JDb2RlID0gewogICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0
RGVzdHJveWVkIiwKICAgICBJbnRlcm5hbEVycm9yOiAiSW50ZXJuYWxFcnJvciIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDMzZmRmYTAwZmQ0M2NjMDE5ZmNkMTRjZmJlOTAxOWY1OTdkMGE4M2UuLjg0OTMwNjIzNTJi
OGU3ZTM2MDczNDc1MDIxOWUwNDU4YmEzOTdmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDIyIEBAIFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IGF0dGFjaGVkKCkKKyAgICB7CisgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAg
aWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCisgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRl
bnNpb24uZXh0ZW5zaW9uSUQsIHRoaXMuX2V4dGVuc2lvblRhYklEKTsKKyAgICB9CisKKyAgICBk
ZXRhY2hlZCgpCisgICAgeworICAgICAgICBzdXBlci5kZXRhY2hlZCgpOworCisgICAgICAgIGlm
IChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZEhpZGVFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5z
aW9uLmV4dGVuc2lvbklELCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgfQorCiAgICAgdGFi
SW5mbygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYy
OTA5M2RlNGYxZDJmNmVmODIwZmRhOWRhZWU1ZjUuLjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlm
ZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtNDEzLDYgKzQxMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJ
TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFh
NjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVhMzEyOTVjNzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRj
ZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgs
NiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5IFwKIAlVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAog
CVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDE0YzM4Y2ZlYmU4MjhkNmEyMTc1OWNiODRjNzBmNDI2NzE2M2VjNTkuLjM1YjI4MGExMGFl
MTM5ZjgwZGE0NDMwZGE1MTIzMmEzY2MxZmI2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtNjU4LDggKzY1OCw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBl
KHR5cGUpOgogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9D
b25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBb
JyJJUENTZW1hcGhvcmUuaCInXSwKLSAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAorICAgICAgICAn
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgi
J10sCiAgICAgICAgICdJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUn
OiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAg
ICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvclRhcmdldC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxh
eUxpc3QuaD4nXSwKICAgICAgICAgJ01lZGlhVGltZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwK
QEAgLTc1NCw3ICs3NTUsNiBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAg
J1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAgICAn
V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAg
ICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzog
WyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3Rp
bmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYWdl
U3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCBiYjNlZWU4OGRlZmJjNGY4NzAwYzkw
NTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzExZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdk
OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1XVEY6
OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNp
b25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7Ci0gICAgY2FzZSBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7Ci0gICAg
Y2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CisgICAgY2FzZSBF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CiAgICAgICAgIHJldHVybiAiSW52YWxpZFJl
cXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgogICAgICAg
ICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgorICAgIGNhc2UgRXh0ZW5zaW9uRXJyb3I6OlJl
Z2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CisgICAg
Y2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAgICAgICAgIHJldHVybiAiTm90
SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3Zjg1NzQxNmZkYzRmZmI1MjA5MmYyNTM3NzU2
MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkxODJiNDU4NGQ4OWViZjFmY2Y3MmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTM3
LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWls
czsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworZW51bSBjbGFzcyBFeHRl
bnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0g
V1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwot
dXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCA9IEV4cGVjdGVkPEV4cGVj
dGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj47Cit1c2luZyBFeHRlbnNpb25UYWJJ
RCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5n
IEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxFeHBlY3RlZDxSZWZQdHI8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgRXh0
ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWlu
dDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CiAgICAgQ29udGV4
dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9yLAogICAgIEludmFsaWRSZXF1ZXN0LApAQCAt
NTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50
OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07CiAKLVdURjo6U3RyaW5nIGluc3BlY3RvckV4
dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworV1RGOjpTdHJp
bmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvcik7CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKIG5hbWVzcGFjZSBXVEYgewog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAotICAgICAgICBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCisgICAgICAgIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRl
eHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQs
CisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCiAgICAg
PjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlNWRiNmMxOTc1NDVhMTlhMWVlZWJl
Y2UxMWIyYzQ1ODhkOWI0MjM3Li5jZTg4MGM5MGI1NjZmYzhmYjU4YzRlNjljZTg3MmUyZGEyMWI1
NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjIsNiArNDIyLDcgQEAgVUlQcm9jZXNz
L0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9t
YWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDA3YmU4OTQ4ZGMyZmRk
YjY1ZWViNDE4ZjFmMWVlZmU5ZWQ0YzUxOWQuLjQ3MDBkYTFmYWE1NmVjMjNhOTY5YWYzYWExNzZi
MzY4MTkwZGMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00NSwyMCArNDUsMjUgQEAgUmVmPEluc3BlY3Rv
ckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRlbnNpb24o
aWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0
IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25U
YWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudChVbmlxdWVSZWY8SW5zcGVj
dG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudC5t
b3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5jcmVhdGVUYWJGb3JFeHRlbnNpb24obV9pZGVu
dGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0
KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJM
PiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246
OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9w
dGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29u
dGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlw
dENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lv
bkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9l
eHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAppbmRleCA5ZTg0NTY3N2QyZTc4ZTVkNjEzOTEwNWFlOGVhN2ZhZjllMGQ2
Y2ZjLi4yMGVmZTkyYmY5ZDA2MzVkNDQwNjE0YzkzOTdjMzMxODFhYTU3ZWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBA
IC0yNywxMCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAor
I2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKLSAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFt
ZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkws
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwotICAg
IHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29u
c3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+
JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50
U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgY3JlYXRlVGFiKGNv
bnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29u
c3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4m
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisKKyAgICBJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9
CisgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4m
Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Jik7CiAKICAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNp
b25DbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQ2MTkyZmE2ODgxNDIxNTVhMGIzMjEyOGY3OTEyMzEzOGUxODgw
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHZpcnR1YWwgfkluc3BlY3RvckV4dGVuc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uVGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tCmluZGV4IGNmZWMwZmMwODhlM2NhMGMzNzA3MGIwNWI0NDMxYmMzMzdmYzJmYzkuLjZkYTYz
N2VhMjlkYTAzOTBkOGNiNDUwMzMzYTk4MjY5YjlhNzhiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMTg2LDEzICsxODYs
MTkgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNp
b25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICop
ZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCi0gICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJl
Z2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVu
c2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQp
IG11dGFibGUgeworICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgcHJp
b3IgdG8gY3JlYXRpbmcgYSBmcm9udGVuZCAoaS5lLiwgd2l0aCAtY29ubmVjdCBvciAtc2hvdyku
CisgICAgaWYgKCFfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KX1dLCBuaWwpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT5yZWdpc3RlckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1
c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpl
eHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBw
ZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5n
ZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkp
OworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihyZXN1bHQudmFsdWUoKSkpOwog
ICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5p
bCk7CkBAIC0yMDIsOSArMjA4LDE1IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6
KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAtICh2b2lk
KXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIF9pbnNwZWN0b3ItPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25J
RCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAvLyBJdCBpcyBhbiBl
cnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgKGku
ZS4sIHdpdGggLWNvbm5lY3Qgb3IgLXNob3cpLgorICAgIGlmICghX2luc3BlY3Rvci0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCl9
XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25D
b250cm9sbGVyKCktPnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRv
bWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJl
YXNvbkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVz
dWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7
IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCBkMTEyYTBjNGMzM2JiNjJiZjViMzY4MzJm
ODMyMGIwZjJlNjFmZmE4Li45YmU2MTMwODE4YjI3MGE1OGQ2M2QyY2Q3Yzg3NDllOTJlYjBjMGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0zMyw2ICszMyw4IEBACiAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTsKKwog
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogQGludGVyZmFjZSBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdAogCkBAIC00NSw4ICs0NywxMCBAQCBXS19DTEFTU19B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAgKiBAcGFyYW0gdGFiSWNvblVSTCBUaGUgbG9j
YXRpb24gb2YgYW4gaW1hZ2UgcmVzb3VyY2UgdG8gdXNlIGZvciBkaXNwbGF5IGluIHRoZSBjcmVh
dGVkIHRhYidzIHRpdGxlLgogICogQHBhcmFtIHNvdXJjZVVSTCBUaGUgbG9jYXRpb24gb2YgdGhl
IG1haW4gcmVzb3VyY2UgdG8gbG9hZCBpbiB0aGUgbmV3IHRhYidzIGlmcmFtZSBicm93c2luZyBj
b250ZXh0LgogICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgdG8gYmUgY2FsbGVkIHdoZW4gY3JlYXRpbmcgYSB0YWIgc3VjY2VlZHMgb3IgZmFpbHMuCisg
KiBAZGlzY3Vzc2lvbiBUaGUgaW5zcGVjdG9yVGFiSWRlbnRpZmllciBwcm92aWRlZCB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRhYnMKKyAqIHRoYXQg
YXJlIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZSBtZXRob2RzLgogICovCi0tICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmluZyAqKXRh
Yk5hbWUgdGFiSWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNvdXJjZVVSTDooTlNVUkwgKilz
b3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwg
TlNTdHJpbmcgKiBfTnVsbGFibGUgaW5zcGVjdG9yVGFiSUQpKWNvbXBsZXRpb25IYW5kbGVyOwor
LSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6
KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051bGxh
YmxlIGluc3BlY3RvclRhYklkZW50aWZpZXIpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAvKioKICAq
IEBhYnN0cmFjdCBFdmFsdWF0ZXMgSmF2YVNjcmlwdCBpbiB0aGUgY29udGV4dCBvZiB0aGUgaW5z
cGVjdGVkIHBhZ2Ugb24gYmVoYWxmIG9mIHRoZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCkBAIC02
Myw2ICs2NywxMiBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCiAKIEBw
cm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOwogCisv
KioKKyAqIEBhYnN0cmFjdCBBbGxvd3MgdGhlIGNsaWVudCB0byByZWNlaXZlIGV4dGVuc2lvbiBs
aWZlY3ljbGUgZXZlbnRzIHRoYXQKKyAqIGFyaXNlIGZyb20gd2l0aGluIFdlYiBJbnNwZWN0b3Iu
CisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGU+IGRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkp
OworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5k
ZXggMjY3ZjBlZjkzMzgzOTU4NDM3ODQwZjAwYzJiYWE3NmJmZDc5Y2Y1ZS4uN2JjZjU4ZWM5ZTU3
MWMwZTExN2Q3ZjQ3ZDQxYTBiYWYxYTIyNWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0y
Niw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisK
KyNpbXBvcnQgIkluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3SW50ZXJuYWwuaCIKQEAgLTMzLDggKzM2LDYgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotCiBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCiAKIC0gKHZvaWQpZGVh
bGxvYwpAQCAtNDksMTMgKzUwLDI2IEBAIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiAgICAg
cmV0dXJuICpfZXh0ZW5zaW9uOwogfQogCistIChpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS0+ZGVsZWdhdGUoKS5hdXRv
cmVsZWFzZSgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZDxfV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBpZiAoIWRlbGVnYXRlICYmICFfZGVsZWdh
dGUpCisgICAgICAgIHJldHVybjsKKworICAgIF9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4oc2VsZiwgZGVsZWdhdGUpOworfQorCiAvLyBN
QVJLOiBBUEkKIAogLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1l
IHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNl
VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgTlNTdHJpbmcgKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFi
SWNvblVSTCwgc291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvblRhYklELCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIF9leHRlbnNpb24tPmNyZWF0ZVRhYih0YWJO
YW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4
cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAg
ICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNv
ZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJy
b3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBO
U0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJv
clRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTY3LDkgKzgxLDkgQEAgLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGUKIHsK
ICAgICBPcHRpb25hbDxVUkw+IG9wdGlvbmFsRnJhbWVVUkwgPSBmcmFtZVVSTCA/IG1ha2VPcHRp
b25hbChVUkwoZnJhbWVVUkwpKSA6IFdURjo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxVUkw+IG9w
dGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gbWFr
ZU9wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IFdURjo6bnVsbG9wdDsKLSAg
ICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVV
UkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5z
aW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVVUkwsIG9wdGlv
bmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVu
c2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmZTg0MTRkMWYwODBmZjI1YTg0MTc0Y2EzZDg2NGJmY2RkMjFiNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFRBUkdFVF9PU19PU1gKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CisK
K0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSA8TlNPYmplY3Q+CitAb3B0
aW9uYWwKKworLyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgZXh0ZW5zaW9uIGhhcyBiZWVuIHNob3duLgorICogQHBhcmFtIGV4dGVuc2lvbiBU
aGUgZXh0ZW5zaW9uIHRoYXQgY3JlYXRlZCB0aGUgc2hvd24gdGFiLgorICogQHBhcmFtIHRhYklk
ZW50aWZpZXIgSWRlbnRpZmllciBmb3IgdGhlIHRhYiB0aGF0IHdhcyBzaG93bi4KKyAqLworLSAo
dm9pZClpbnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcjsKKwor
LyoqCisgKiBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSB0YWIgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
ZXh0ZW5zaW9uIGhhcyBiZWVuIGhpZGRlbi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVu
c2lvbiB0aGF0IGNyZWF0ZWQgdGhlIGhpZGRlbiB0YWIuCisgKiBAcGFyYW0gdGFiSWRlbnRpZmll
ciBJZGVudGlmaWVyIGZvciB0aGUgdGFiIHRoYXQgd2FzIGhpZGRlbi4KKyAqLworLSAodm9pZClp
bnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBkaWRI
aWRlVGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcjsKKworQGVuZAor
CitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKaW5kZXggMGEwZmFiYzhhMzcwMmQzMjcyOTZmNTcx
NjQwZWMxNzFmYzQ1MTFkZi4uYWUzMTY5ODc5YzY5N2JhZjJiMDMwMTkyMTJhYmQzY2I3MDRiNmQy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKQEAgLTMwLDYgKzMwLDEwIEBA
CiAjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKICNpbXBvcnQgIldLT2JqZWN0Lmgi
CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CkBAIC00MSw2ICs0NSw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKIEBpbnRl
cmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKICAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IF9leHRlbnNpb247
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
IF9kZWxlZ2F0ZTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCmluZGV4IDgyMDY2M2FiZDliMmFiMjQ3Njg0YzNjODFjZDBhYzk1NzI2MGJj
NGIuLjU2YjVlZTg2ZWNhOTY0OTA4NGQ1MzM1MDhmYmVlMzM1MGZhZDQ1N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTE1OSwxNiArMTU5LDIy
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+IF9OdWxsYWJsCiAKIC8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QgbWV0aG9kcwogCi0tICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0
cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihO
U1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250
cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJv
dGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRhaW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHBy
aW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRlbmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2Vu
ZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBub3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5z
cGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJ
bnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpfV0sIG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCktPnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOwpAQCAtMTc4LDkgKzE4NCwxNCBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogLSAo
dm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNp
b24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRl
bnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJv
b2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgLy8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHByaW9yIHRvIGNyZWF0aW5nIGEgZnJvbnRl
bmQgd2l0aCAtbG9hZEZvckRlYnVnZ2FibGU6YmFja2VuZENvbW1hbmRzVVJMOiwgaXQgd2lsbCBu
b3Qgc3VjY2VlZC4KKyAgICBpZiAoIW1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNv
bnRyb2xsZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5T
TG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9y
VG9TdHJpbmcoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpfV0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9u
SUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL0NvY29hL0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTkwZWU3MmVhZjY2OWU5ZTUwNzA4MTQ0OWI2MDA4YjBhOTk2NmI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0
ICJBUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5o
IgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRl
bnNpb247CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAg
UmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7
CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3Rv
ckV4dGVuc2lvbkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBB
UEk6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNp
b25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpIG92ZXJyaWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJ
bnNwZWN0b3JFeHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRy
PGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBz
dHJ1Y3QgeworICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRl
bnRpZmllciA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThm
YTdmYWQ3M2VkM2RmY2E1M2Q1ODJjMTg2ZjA4ZTJiYTdkN2M5MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9X
S0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24sIGlkIDxfV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2luc3BlY3RvckV4dGVuc2lvbihp
bnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQoreworICAgIG1f
ZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmll
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvckV4dGVu
c2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
aW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0ZW5zaW9uOmRpZEhpZGVUYWJX
aXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVuc2lvbi0+X2V4dGVuc2lvbi0+
c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PigqdGhpcykp
OworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fkluc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KElu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1faW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0b3JFeHRlbnNpb25DbGllbnQo
KQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2luc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJX
aXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGluc3BlY3RvckV4dGVuc2lvbjpt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9yRXh0ZW5zaW9uLmdldCgpLmdl
dCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25UYWJJRF07Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6ZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNp
b25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxl
Z2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9uOm1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkuZ2V0KCkgZGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAppbmRleCBmNWEwMjJlYTJlMGM5NzNkYjgzMjlmMDg4YzU4YzcwMTkzYjA5M2Iy
Li43ZTAzMDNkZGE5ZTJiZTY3ZmQ2OTRkMjZhNTZmYThhYTI4MTUwN2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwg
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1
ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4oKm1faW5zcGVjdG9yUGFn
ZSk7CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OmNyZWF0ZSgqbV9pbnNwZWN0b3JQYWdlKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDBmMWMwOThmNDM1OWQ0M2U1YmU4NWRmMTdiNmI4NjUz
ZjEwZWI0MTAuLmE0Mzg5ODRhNjUzNzJlNDdiMTI5OWY1NGM2NmU0ZWQ1Nzk3NzQzZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5z
aW9uQ29udHJvbGxlcjsgfQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25Db250
cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNTgs
NyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZSB7
IG51bGxwdHIgfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0
ZW5zaW9uQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKICNlbmRpZgogICAgIAogICAgIFJl
ZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5k
ZXggMjUwMTAyMjlhYmNkMjY4NGRmNWVjMGJlOWNjNTAyYWFjMzQ0NzFkZi4uMWJjNjljOTVmNTNk
YjYwMWZkMmQ0ZmZmNTZlMjBiMDc3ZDYyNWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC00MjYsNyAr
NDI2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKCkKICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCpt
X2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+
KCptX2luc3BlY3RvclBhZ2UpOworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGUoKm1faW5zcGVjdG9yUGFnZSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxM2JlYjg5YTdjNzlhYzEyMWI4NTRhNzk2ODYy
NmFkNDViNTJlYzRjLi42YWI3Y2E0ZDEzODAxYjc2MGYzY2M0ODcyNGQ5ZmM1MDQxYTU2MGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2U7IH0KIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSogZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5z
aW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4gbV9pbnNw
ZWN0b3JDbGllbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4
dGVuc2lvbkNvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CiAjZW5kaWYKICAgICAKICAgICBi
b29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGExZWFkMWQyMTM3NDI3MTIxNjY5YzA0MTUy
MjNiYjkxZjc4N2RhZWEuLjQ1ZmU1NjA1NzI1OTkyMzA3MGI4OGExZWExOTY2YWQxMzRhMjM4ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNw
cApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQog
CisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKQEAgLTM3LDE4ICszOSwy
NSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJv
eHkmIGluc3BlY3RvclBhZ2UpCiAgICAgOiBtX2luc3BlY3RvclBhZ2UobWFrZVdlYWtQdHIoaW5z
cGVjdG9yUGFnZSkpCiB7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpLCAq
dGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQogeworICAgIGF1dG8gY2FsbGJh
Y2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsK
KyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjaygp
OworCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zy
b250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjaygpOworUmVmPFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5PiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShpbnNw
ZWN0b3JQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CkBAIC03NCwzNSArODMsNTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQogCiAvLyBBUEkKIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5z
cGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt0aGlzLCBzdHJv
bmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghdGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNp
b25JRCwgZGlzcGxheU5hbWUgfSwgW3RoaXMsIHN0cm9uZ1RoaXMgPSBXVEZNb3ZlKHN0cm9uZ1Ro
aXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IGV4
dGVuc2lvbkFQSU9iamVjdCA9IEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoZXh0ZW5z
aW9uSUQsIHN0cm9uZ1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgbV9leHRlbnNpb25BUElPYmpl
Y3RNYXAuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25BUElPYmplY3QuY29weVJlZigpKTsKKwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleHRlbnNpb25BUElPYmplY3Qp
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0
ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9h
ZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Qp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQg
fSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNw
ZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2Vha1RoaXMtPm1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLnRha2Uo
ZXh0ZW5zaW9uSUQpOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25z
dCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3aGVu
RnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lv
bklELCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTEwLDE1ICsxMzgsMTUgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpV
Ukw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250
ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBj
b25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0
aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiB7ZXh0ZW5z
aW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNl
Q29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWlscywgY29uc3Qg
T3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAg
ICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uIHtleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0sIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBk
ZXRhaWxzLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTM3LDYgKzE2NSwzNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bgogICAgIH0pOwogfQogCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSBJUEMgbWVzc2FnZXMuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQordm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZGlkU2hvd0V4dGVuc2lvblRh
Yihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgYXV0byBpdCA9IG1f
ZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmZpbmQoZXh0ZW5zaW9uSUQpOworICAgIGlmIChpdCA9PSBt
X2V4dGVuc2lvbkFQSU9iamVjdE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBleHRlbnNpb24gPSBpdC0+dmFsdWU7CisgICAg
YXV0byBleHRlbnNpb25DbGllbnQgPSBleHRlbnNpb24tPmNsaWVudCgpOworICAgIGlmICghZXh0
ZW5zaW9uQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBleHRlbnNpb25DbGllbnQtPmRp
ZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBhdXRvIGl0ID0gbV9leHRlbnNpb25B
UElPYmplY3RNYXAuZmluZChleHRlbnNpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZXh0ZW5zaW9u
QVBJT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJOjpJ
bnNwZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbiA9IGl0LT52YWx1ZTsKKyAgICBhdXRvIGV4dGVu
c2lvbkNsaWVudCA9IGV4dGVuc2lvbi0+Y2xpZW50KCk7CisgICAgaWYgKCFleHRlbnNpb25DbGll
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGV4dGVuc2lvbkNsaWVudC0+ZGlkSGlkZUV4dGVu
c2lvblRhYihleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggNGQ1YjM1ZmU0MTE2ZGQ1OGZjNjYzZWQ0MWY1YjkyNTRjMTYy
MDkxZC4uZDYxMWY4ZDNhZjczOTcwZTg2MmU5YWM3MmY0MGUzZGRiNTgxN2E2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTM0LDMyICsz
NCw0OSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgZmluYWwKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+CisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShX
ZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmIGluc3BlY3Rv
clBhZ2UpOwogICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KCk7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
KwogICAgIC8vIEFQSS4KLSAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
ckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYp
OwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJM
JiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
SUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+
JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBj
b25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYm
KTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IElQQyBt
ZXNzYWdlcy4KKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgdm9pZCBkaWRT
aG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJik7CisjZW5kaWYKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMuCiAgICAgdm9pZCBpbnNwZWN0
b3JGcm9udGVuZExvYWRlZCgpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSk7
CisKICAgICB2b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBIYXNoTWFw
PEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQsIFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4+
IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwOwogCiAgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25z
IHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KICAg
ICAvLyBUaGVyZSdzIG5vIHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBp
cyBmdWxseSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAyZmJiYTcyNmZiM2M1
YWJlYmFmMjg2NzMwMmE4YzI3YTY1NDZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK21l
c3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IHsKKyAgICBE
aWRTaG93RXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIGV4dGVuc2lvblRh
YklEKQorICAgIERpZEhpZGVFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcg
ZXh0ZW5zaW9uVGFiSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQppbmRleCBlNjZkZjg0YTIyYjgzODEzYmVlZTQ1
MTBkNWI5ZWVlNzg4MDIyNWY2Li5hMTE2ODU3Y2MxM2EyNDBhMDBiY2UxYzhkNjE3NTRkYzA4ZDc0
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KQEAgLTEzMSw3ICsxMzEsNyBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGRlbGVnYXRlOihpZCA8V0tG
b2N1c2VkRm9ybUNvbnRyb2xWaQogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChCT09MKWhhbmRs
ZVdoZWVsRXZlbnQ6KFVJRXZlbnQgKilldmVudAorLSAoQk9PTCloYW5kbGVXaGVlbEV2ZW50Oig6
OlVJRXZlbnQgKilldmVudAogewogICAgIFtzZWxmIF93aGVlbENoYW5nZWRXaXRoRXZlbnQ6ZXZl
bnRdOwogICAgIHJldHVybiBZRVM7CkBAIC0xOTksNyArMTk5LDcgQEAgLSAodm9pZCloYW5kbGVU
YXAKICAgICBbc2VsZiBkaWREaXNtaXNzXTsKIH0KIAotLSAodm9pZClfd2hlZWxDaGFuZ2VkV2l0
aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKKy0gKHZvaWQpX3doZWVsQ2hhbmdlZFdpdGhFdmVudDoo
OjpVSUV2ZW50ICopZXZlbnQKIHsKICAgICBbc3VwZXIgX3doZWVsQ2hhbmdlZFdpdGhFdmVudDpl
dmVudF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50
aW5nVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgK
aW5kZXggNTljOTBlNzkzNDJmYjI4YjQwNTA2OWYwM2Q4ZWMzZGMxNjJiNGVlZC4uYjY0MjQ5YmQ4
OGFiYTM0MzE0M2Q2YmVjNWE5OGE1MmU4YzVkNTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0
Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogQGNsYXNzIFdLUHJpbnRpbmdWaWV3
RGF0YTsKIEBjbGFzcyBQREZEZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDAwMzIwZjU0NTAzMzJhZmRjYTkwN2Rh
YTUxMmJmODJmOTZiZDUuLmEzMjFlMzZmN2E3YzMyNTNmMzkwOTVjYTllNGZiMTFkYmEwOTE0MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTUyMiw2ICsxNTIyLDExIEBACiAJCTk5NTVBNkY1MUM3OTg2RTAwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJh
Y2tlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyog
QXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlv
blByb3RvY29sT2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlv
blByb3RvY29sT2JqZWN0cy5oICovOyB9OworCQk5OTZCMkI5ODI1RTI0NDgyMDA3MTkzNzkgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTUy
NUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk2QjJCOTkyNUUyNDQ4MjAwNzE5Mzc5IC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkIyQjk2MjVFMjQ0ODIw
MDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2Vz
LmggKi87IH07CisJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTcyNUUyNDQ4MjAwNzE5Mzc5IC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
Ki87IH07CisJCTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmgg
Ki87IH07CisJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3
ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5
Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0
ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CkBAIC00ODg0LDYgKzQ4ODksMTQgQEAKIAkJOTk1NUE2RjExQzc5ODY2
NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5NTVBNkYyMUM3OTg2NjQw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1NUE2RjMxQzc5ODY2NDAw
RUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTUyNUUyNDQ4
MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5NzI1
RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUIyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIy
QjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyogQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZC
MkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQzkxRjQyMURDQTAw
QzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAw
IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OTY1OUEyNTMxMEE0ODAwQjMx
QUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC03ODU0LDYgKzc4NjcsNyBAQAogCQkJCTkxOTc5NDBCMjNEQkM1MDMw
MDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAogCQkJCTk5QjE2NzU0MjUyQkI3
RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQk5OUIxNjc1NjI1
MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5NkIy
QkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25I
b3N0LmggKi8sCiAJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9X
S0luc3BlY3RvckludGVybmFsLmggKi8sCkBAIC05MjAzLDYgKzkyMTcsOCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRl
LmggKi8sCiAJCQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRl
Lm1tICovLAorCQkJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5oICovLAorCQkJCTk5NkIyQjlCMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTIyNCw2ICs5MjQwLDcgQEAKIAkJCQkxQzc3QzE5
NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcCAqLywKIAkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKKwkJCQk5OTZCMkI5MzI1
RTI0MzE0MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3Bl
Y3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdl
Ykluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAv
KiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC05OTc5LDYgKzk5OTYsNyBAQAogCQkJCTk5
NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8s
CiAJCQkJOTk5QjdGNEYyNTU0QkEzRjAwRjQ1MEE0IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5j
cHAgKi8sCiAJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3RvckV4dGVu
c2lvbi5oICovLAorCQkJCTk5NkIyQjlFMjVFMjU4MkMwMDcxOTM3OSAvKiBBUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJ
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1
MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcw
MEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTEwNTQs
NiArMTEwNzIsOSBAQAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmggKi8sCisJCQkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQk5OTZCMkI5NjI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTk5NkIyQjk3MjVFMjQ0ODIwMDcx
OTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oICovLAogCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8q
IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4
MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTExNDc1LDYg
KzExNDk2LDcgQEAKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9y
RGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RC
QzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzk2NUEzMjUzMTI4Qzcw
MEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJ
bnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTc4MCw2ICsxMTgwMiw3IEBA
CiAJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MTk3OTQwNTIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJv
d3NlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwMjIzREJDNDkwMDAyNTc4OTIg
LyogSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NkIyQjlEMjVFMjU3
RkYwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURG
NjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjI2Niw2ICsxMjI4OSw4IEBACiAJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUIxNjc1QjI1MkJCQURE
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5NkIyQjk5MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
OTZCMkI5QTI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQkJFNEExMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZl
bnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTE0MTQ5LDYgKzE0MTc0LDcgQEAKIAkJCQlD
MThGM0ExNTI1NjMzMzQzMDA3OTdFNjYgLyogV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzk2
NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk2QjJCOTgyNUUyNDQ4MjAw
NzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAv
KiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc4QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggZDEzOTBiZmQ2ZjZiZTIzMTU2NjdjMDRm
ZDZiZWMzZDZhYzE1NTJkZC4uYzdhYzVkNmJmZjI2ODA3ZGUzZWQxYmJmYmE5MmEyYTg4ZjNkNjVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTI3Miw3ICsyNzIsMzAgQEAgdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFp
bGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0
aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSJfcywgeyBKU09OOjpW
YWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUpIH0pOwogfQotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdXBwb3J0c1dl
YkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
SUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNp
b25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkU2hvd0V4dGVuc2lvblRh
YihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorCit2b2lkIFJlbW90ZVdlYkluc3Bl
Y3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQm
IGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25U
YWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQogCiBXZWJDb3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRl
bmRQYWdlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCBiOGRhOWE5ZjhhNWE3NjZkMTM2MTIy
NmFmMGM0ZTg1NjE2NTZiM2Q1Li4wMGEzZWUwMWVkMWY1Njk0MjRhNThkNWM2NDc2NTBhNGYxOTcx
YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0
ZW5zaW9uVHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0
aWZpY2F0ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0zOSw4ICs0MywxMCBAQCBjbGFzcyBG
bG9hdFJlY3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlOworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNl
bmRpZgogCiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAogICAgIDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CkBAIC0xMDksNiArMTE1LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZTsgfQogICAgIHZvaWQgbG9nRGlhZ25vc3Rp
Y0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBjb25zdCBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudDo6VmFsdWVEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyAgICAg
ICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIGJvb2wgc3VwcG9ydHNX
ZWJFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgb3Zl
cnJpZGU7CisjZW5kaWYKIAogICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5jcHAKaW5kZXggMWEyZDcxMDBhNWViMjhmNzVhODQ1ZWYyOWJhMDE5MjUyNzM5Y2NlMy4u
ZWYyZTBmOTYyYWU4YzI2YjAzOGYzNjI1NTY5MGUzYjc3Yjc4MzFmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAg
LTM1NSw3ICszNTUsMzAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXREaWFnbm9zdGljTG9nZ2luZ0F2
YWlsYWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGUpIH0pOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9URUxFTUVU
UlkpCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitib29sIFdlYkluc3BlY3Rv
clVJOjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4
dGVuc2lvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2V4dGVuc2lv
bkNvbnRyb2xsZXItPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRh
YklEKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKQorewor
ICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2V4dGVuc2lvbkNvbnRyb2xsZXItPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4
dGVuc2lvblRhYklEKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA5OTVj
MjIyNDViZmZhNGU1ZGEyODZmM2RjYjY2NjEwNTMzMmRhODIxLi42MjllNDVkYzZmODBiYzIwMjUw
N2ZiYWE3ODViNDVlMTY0NzIxMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNs
YXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKQEAgLTE0Nyw2ICsxNTEsMTIgQEAgcHVibGljOgog
ICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2RpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlOyB9CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZl
bnQoY29uc3QgV1RGOjpTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSYpIG92ZXJyaWRlOwogI2VuZGlmCisgICAg
ICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBib29sIHN1cHBvcnRz
V2ViRXh0ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92
ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQ
SURpc3BhdGNoZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcAppbmRleCAzYjliZDAwMGYyOWExOTZmMTg2M2JjZjI5OWYzMTg5N2RmNzA3Y2QxLi5lYTBh
NTFlODNhNzQxNmJmZmQyYWY2NzIzNmVjM2ViYjI5OGRkNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
QEAgLTQ4LDM2ICs0OSwzOCBAQCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbgogICAgIGF1dG8qIHBh
Z2UgPSBpbnNwZWN0b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7
CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIgPSBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKnBh
Z2UpLmlkZW50aWZpZXIoKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIsICp0aGlzKTsK
IH0KIAogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIp
OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1
YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVz
dWx0IHJlc3VsdCkKK09wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZy
b21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgc3dpdGNo
IChyZXN1bHQuZXJyb3IoKSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgotICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
OworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQ7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uRXJyb3I6OkV4ZWN1dGlvblN1c3BlbmRlZDoKLSAgICAgICAgICAg
IHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAg
ICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvbkVycm9yOjpJbnRlcm5hbEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBBU1NFUlQobV9mcm9udGVuZENsaWVudCk7CiAgICAgYXV0byBnbG9iYWxPYmplY3QgPSBtX2Zy
b250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVj
dCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwogCiAgICAgYXV0byB2YWx1ZU9yRXhj
ZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9yRXhjZXB0aW9uLmhhc192
YWx1ZSgpKSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50ZXJlZCBleGNlcHRpb24g
d2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2YWx1ZU9yRXhjZXB0aW9u
LmVycm9yKCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYg
dGhlIGV2YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0aGUgZnJvbnRlbmQgcmV0dXJuZWQg
YW4gZXJyb3Igc3RyaW5nLgpAQCAtODcsMTggKzkwLDE4IEBAIE9wdGlvbmFsPEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5z
cGVjCiAgICAgaWYgKHNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgYXV0byByZXN1
bHRTdHJpbmcgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAg
ICBpZiAocmVzdWx0U3RyaW5nID09ICJDb250ZXh0RGVzdHJveWVkIl9zKQotICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7
CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJyb3IiX3MpCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsK
ICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVlc3QiX3MpCi0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OworICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
OwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWlsZWQiX3MpCi0g
ICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZh
aWxlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdp
c3RyYXRpb25GYWlsZWQ7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIk5vdEltcGxlbWVu
dGVkIl9zKQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpOb3RJ
bXBsZW1lbnRlZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpOb3RJbXBsZW1lbnRlZDsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKICAgICB9
CiAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2LDEwICsxMDksMTAgQEAgT3B0aW9u
YWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6cGFyc2VJbnNwZWMKIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
IElQQyBtZXNzYWdlcy4KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25J
RCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEx
OSw3ICsxMjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaQogICAgIH07CiAgICAgbV9mcm9u
dGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJl
c3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTEzMiwxNyArMTM1LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeyBKU09OOjpWYWx1ZTo6Y3JlYXRl
KGV4dGVuc2lvbklEKSB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0
Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lv
biJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NywxMCArMTcwLDEw
IEBAIEpTQzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53
cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0CiAgICAgcmV0dXJuIHZhbHVlT3JFeGNlcHRpb24u
dmFsdWUoKS5nZXRPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29u
VVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25V
UkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yRXh0CiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQ
SURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZv
ckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NSwxNCArMTk4LDE0
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0g
d2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAg
ICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhw
ZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJ
LmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Ip
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1Ro
aXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xv
YmFsT2JqZWN0KCk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBmb3VuZFByb3BlcnR5ID0gb2JqZWN0
UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImV4dGVuc2lvblRhYklEIl9zKSk7CiAg
ICAgICAgIGlmICghZm91bmRQcm9wZXJ0eSB8fCAhZm91bmRQcm9wZXJ0eS5pc1N0cmluZygpKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxMCwxMCArMjEz
LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8
VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29u
dGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBj
b25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25J
RCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1l
VVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzMsMTMgKzIzNiwxMyBA
QCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRl
bmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8q
IGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250
ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGlmICgh
ZnJvbnRlbmRHbG9iYWxPYmplY3QpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3ll
ZCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1
YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkg
ewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1
ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lv
bigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlQocmVzdWx0LnZhbHVlKCkpOwpAQCAtMjYyLDcgKzI2NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvclBheWxvYWQgPSBvYmpl
Y3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3IiX3MpKTsKICAgICAgICAg
aWYgKCFlcnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgaWYgKCFlcnJv
clBheWxvYWQuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cik7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjczLDcgKzI3Niw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0CiAgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHRQYXlsb2FkID0gb2Jq
ZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgInJlc3VsdCJfcykpOwogICAgICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZnJvbnRlbmRHbG9iYWxPYmplY3QsIHJlc3Vs
dFBheWxvYWQpOwogICAgICAgICBpZiAoIXNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSkgewotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVy
cm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODEsNiArMjg0LDE2
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
blRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRhYiB7IGV4dGVuc2lvbklE
LCBleHRlbnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRIaWRlRXh0ZW5zaW9uVGFiIHsg
ZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
CmluZGV4IGYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcuLjI0MjE4NGVl
ZTNkZmI0NmMxMTg5ZWJkNjMwOGQyODFmMzRjNzkyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC02Mywx
NiArNjQsMjMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgotICAgIHZvaWQgcmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVu
c2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3JFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHRhYk5hbWUs
IGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yRXh0ZW5zaW9uVGFiSUQsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRl
eHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9u
YWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRh
YkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRp
b25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1
c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYsIGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworCisg
ICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgorI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyAgICB2
b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwotICAgIE9w
dGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVy
cm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsKKyAgICBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1
bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVz
dWx0KTsKIAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1f
ZnJvbnRlbmRDbGllbnQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pbnNwZWN0b3JQ
YWdlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBk
MTc0MDYwMjhmYWYzN2I1MDY0MTQyNWZiNjBkOGZmMGUyM2M0NDU0Li42ZTgwYzcwZGZjYjVkYmI0
NTgyMTUxZDA5YjU2NTM0ZjMyMzU5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsMTEgKzIzLDExIEBACiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgUmVnaXN0ZXJFeHRl
bnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3Rl
ZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCi0g
ICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxi
b29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAg
UmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUp
IC0+IChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFz
eW5jCisgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBl
Y3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCiAKLSAg
ICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgdGFiTmFt
ZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBlY3RlZDxTdHJpbmcsIFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBFdmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRTb3Vy
Y2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkgLT4gKElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiBkZXRhaWxzLCBPcHRpb25hbDxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBl
cnJvcikgQXN5bmMKKyAgICBDcmVhdGVUYWJGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklE
LCBTdHJpbmcgdGFiTmFtZSwgVVJMIHRhYkljb25VUkwsIFVSTCBzb3VyY2VVUkwpIC0+IChFeHBl
Y3RlZDxTdHJpbmcsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAg
ICBFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBz
Y3JpcHRTb3VyY2UsIE9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIE9wdGlvbmFsPFVSTD4gY29udGV4
dFNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCkg
LT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
PiBlcnJvcikgQXN5bmMKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421572</attachid>
            <date>2021-02-25 15:07:35 -0800</date>
            <delta_ts>2021-02-25 15:33:07 -0800</delta_ts>
            <desc>Patch v2.4 - addressed review feedback</desc>
            <filename>bug-222252-20210225150734.patch</filename>
            <type>text/plain</type>
            <size>124073</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ0MjMwODBjZDY2ZWFl
MTYyMmZhOTBlMDVlMDUxMjI0NWU0MTNkNC4uOTM0NzJhYTA4MTBhMWMxNWI3ZTY5MmZjMzgwMzNj
Y2JiZTZiODliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEV4cG9zZSBt
ZXRob2RzIHRoYXQgdGhlIGZyb250ZW5kIGNhbiBjYWxsIHRvIHBhc3MgYWxvbmcgZXh0ZW5zaW9u
IGxpZmVjeWNsZSBldmVudHMKKyAgICAgICAgdmlhIHRoZSBmcm9udGVuZCBjbGllbnQuIEFkZCAn
c3VwcG9ydHNXZWJFeHRlbnNpb25zJyB0byBhbGxvdyBmb3IgZmVhdHVyZSBkZXRlY3Rpb24gZnJv
bSBXZWJJbnNwZWN0b3JVSS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN1
cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYik6CisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnN1
cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKwogMjAyMS0wMi0yNSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFwcGVuZGluZyBh
IHBhcnRpYWwgc2VnbWVudCBvZiBhIFdlYk0gYXVkaW8gZmlsZSByZXN1bHRzIGluIG5vIGFkZGl0
aW9uYWwgc2FtcGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggN2U5MTA4MjAwMTQ0NzI2
NTJiNTliMDFhNzBkNTk5ZjE0OWY3NWVjYS4uNGY2MjkxODFhZWRhMTgyZmRjZWU2ZmVlOWM3NjJj
OWFlYzhmMzRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjEtMDItMjEgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBX
ZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgcmVjZWl2aW5nIFdlYiBFeHRlbnNpb24gZXZl
bnRzIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjUyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MTIwNjY4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6IFVw
ZGF0ZSBjb21tZW50IGZvciBuYW1lc3BhY2UgY2hhbmdlLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRh
Y2hlZCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5w
cm90b3R5cGUuZGV0YWNoZWQpOgorICAgICAgICBXaGVuIGFuIGV4dGVuc2lvbiB0YWIgaXMgc2hv
d24gb3IgaGlkZGVuLCBub3RpZnkgdGhlIGZyb250ZW5kIGhvc3QgYWJvdXQgdGhlIGV2ZW50Lgor
CiAyMDIxLTAyLTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNjkzNTkpOiBTb3VyY2VzOiB0aGUgSW1hZ2Vz
IGZvbGRlciBkb2VzIG5vdCBsb2FkIG1vc3QgaW1hZ2VzIGluIHRoZSBtYWluIGNvbnRlbnQgYXJl
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkYTYzNmJkYzM1MjU3NzZhNDhiNTMyMWNkY2I0ZWZhYTBhNDRiNGM5Li5l
ZTQ0YzVlNDY2MzY2ZjA0N2RlODEwNWZkYzkyOGIxOGRjNDdjN2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1MiBAQAorMjAyMS0wMi0yMSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2Vi
IEV4dGVuc2lvbiBldmVudHMgdmlhIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjA2Njg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmlu
IFJvdXNzby4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgY2xpZW50cyB0
byByZWNlaXZlIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLiBGb3Igbm93IHRoaXMgaW5jbHVk
ZXMKKyAgICAgICAgZXh0ZW5zaW9uIHRhYiBzaG93bi9oaWRkZW4sIGJ1dCB3aWxsIGV2ZW50dWFs
bHkgaW5jbHVkZSBwYWdlIG5hdmlnYXRpb25zIGFuZCBvdGhlciBldmVudHMgZXhwb3NlZAorICAg
ICAgICB2aWEgV2ViIEV4dGVuc2lvbnMgQVBJLgorCisgICAgICAgIFRoaXMgaXMgaW1wbGVtZW50
ZWQgYXQgdGhlIFdlYktpdCBsZXZlbCB2aWEgbmV3IEluc3BlY3RvckZyb250ZW5kQ2xpZW50IG1l
dGhvZHMuIFRoaXMgZ2V0cyBwaXBlZCB0bworICAgICAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSB2aWEgSVBDLCB3aGljaCB0aGVuIHBhc3NlcyBvbiB0aGUgZXZlbnQg
dG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuCisKKyAgICAgICAgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUgaXMgYSBkZWxlZ2F0ZSBvZiBfV0tJbnNwZWN0b3JFeHRlbnNpb24u
IEl0J3MgZm9yIHJlY2VpdmluZyBsaWZlY3ljbGUgZXZlbnRzLCBhbmQKKyAgICAgICAgaXMgaW1w
bGVtZW50ZWQgc2ltaWxhcmx5IHRvIF9XS0luc3BlY3RvckRlbGVnYXRlLiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBub3cga2VlcHMgYSBtYXAgb2YKKyAgICAgICAgZXh0
ZW5zaW9uIEFQSSBvYmplY3RzIHNvIHRoYXQgaXQgY2FuIGNhbGwgb3V0IHRvIHRoZSB0aGUgYXBw
cm9wcmlhdGUgZXh0ZW5zaW9uIEFQSSBvYmplY3QncyBjbGllbnQvZGVsZWdhdGUuCisKKyAgICAg
ICAgVG8gYmV0dGVyIGhhbmRsZSB0aGUgc2l0dWF0aW9uIHdoZXJlIGNsaWVudCBjb21wbGV0aW9u
IGhhbmRsZXJzIG1heSBiZSBpbnZva2VkIGFmdGVyIHRoZSBpbnNwZWN0b3IgcGFnZSBoYXMgYmVl
biB0b3JuIGRvd24sCisgICAgICAgIHN3aXRjaCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSB0byBiZSBSZWZDb3VudGVkIGluc3RlYWQgb2Ygc3RkOjp1bmlxdWVfcHRyIHNv
IHRoYXQgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIEFQSSBvYmplY3QgY2FuIGJlIHJldHJpZXZl
ZCBpbiB0aGUgYXN5bmMgSVBDIHJlcGx5IGJsb2NrLiAoSVBDIG1lc3NhZ2UgcmVjZWl2ZXIgY29k
ZSBrbm93cyBob3cgdG8gcmVmIHRoZSByZWNlaXZlcgorICAgICAgICBpZiBpdCBleHBlY3RzIHRv
IGRlbGl2ZXIgYSByZXNwb25zZSkuCisKKyAgICAgICAgTGFzdGx5LCBzaW5jZSB0aGlzIHBhdGNo
IGludHJvZHVjZXMgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IgYXQgdGhlIFdlYkNvcmUgbGV2ZWws
IEkgZGVjaWRlZCB0byBtb3ZlIHRoZSBjb250ZW50cworICAgICAgICBvZiBJbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5oIHRvIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlLiBJdCBtYWRlIG1vcmUgc2Vu
c2UgdGhhbiB0eXBpbmcgb3V0IFdlYkNvcmU6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yCisgICAg
ICAgIGFuZCB0aGUgbGlrZS4gQXMgcGFydCBvZiB0aGlzIGNoYW5nZSwgdGhlIHN0cmluZyB0eXBl
IGFsaWFzZXMgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCBhbmQgSW5zcGVjdG9yOkV4dGVuc2lvblRh
YklEIGFyZQorICAgICAgICBub3cgZGVmaW5lZCBpbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgQWRkIGdlbmVyYXRlZCBmaWxlcyBmb3Ig
bmV3IG1lc3NhZ2UgcmVjZWl2ZXIuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3
IGZpbGVzIGZvciBpbnNwZWN0b3IgZXh0ZW5zaW9uIGNsaWVudC9kZWxlZ2F0ZSBib2lsZXJwbGF0
ZSBjbGFzc2VzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmg6CisgICAgICAgICogU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRoZXNlIHR5cGVzIGFuZCBoZWxw
ZXJzIHRvIEluc3BlY3RvciBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUluc3BlY3RvckV4dGVuc2lvbi5jcHA6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6c2V0Q2xpZW50KTogQWRkIGEgY2xpZW50IG1lbWJlciB3aGljaCBpcyB1c2VkIHRvIGNhbGwg
b3V0IHRvIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLgorICAgICAgICAoQVBJOjpJbnNw
ZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYik6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoQVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KTogRml4IG5hbWVzcGFjZXMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNp
b25JbnRlcm5hbC5oLgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRp
ZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGll
bnQ6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBBZGp1c3QgdG8gbmV3IHR5cGUgc2lnbmF0dXJlIHRoYXQg
cmV0dXJucyBhbiBpbml0aWFsaXplZCBBUEk6Okluc3BlY3RvckV4dGVuc2lvbi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHJl
Z2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB1bnJlZ2lzdGVy
RXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBBZGp1c3QgdG8gbmV3IHR5
cGUgc2lnbmF0dXJlIHRoYXQgcmV0dXJucyBhbiBpbml0aWFsaXplZCBBUEk6Okluc3BlY3RvckV4
dGVuc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaDogQWRkIHRoZSBkZWxlZ2F0ZSBwcm9wZXJ0eSBhbmQgdXBk
YXRlIGRvY3VtZW50YXRpb24gdG8gbWVudGlvbiBpdHMgaW50ZW5kZWQgdXNhZ2UuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOiBB
ZGQgZGVsZWdhdGUgc3RvcmFnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGRl
bGVnYXRlXSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBzZXREZWxlZ2F0ZTpd
KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGNy
ZWF0ZVRhYldpdGhOYW1lOnRhYkljb25VUkw6c291cmNlVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0p
OiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGV2YWx1
YXRlU2NyaXB0OmZyYW1lVVJMOmNvbnRleHRTZWN1cml0eU9yaWdpbjp1c2VDb250ZW50U2NyaXB0
Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogIEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVu
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6fkluc3BlY3RvckV4
dGVuc2lvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMg
T2JqQy10by1DKysgYnJpZGdlIGNvZGUgdG8gY29ubmVjdCBBUEk6Okluc3BlY3RvckV4dGVuc2lv
bkNsaWVudCAodXNlZCBieSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkK
KyAgICAgICAgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgKHVzZWQgYnkgY2xpZW50
IGNvZGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgTWFrZSB0aGlzIGNsYXNzIGFuIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLiBJdCByZWNlaXZlcyBtZXNzYWdlcyBmb3IgZXh0ZW5zaW9uIGxpZmVjeWNsZSBl
dmVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6Cisg
ICAgICAgIE1ha2UgdGhpcyBjbGFzcyBhbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gSXQgcmVjZWl2
ZXMgbWVzc2FnZXMgZm9yIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIEV4cGFuZCB0aGlzIGNvZGUgb3V0IHNvIHRoYXQgd2UgY2FuIHNh
dmUgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb24gaW5zdGFuY2VzIGludG8gb3VyIG93biBtYXAKKyAg
ICAgICAgYmVmb3JlIHNlbmRpbmcgaXQgdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLiBUaGlzIG1h
cCBrZWVwcyBzdHJvbmcgcmVmZXJlbmNlcyB0byB0aGUgZXh0ZW5zaW9uCisgICAgICAgIEFQSSBv
YmplY3RzIHNpbmNlIHRoZXkgbmVlZCB0byBiZSB1c2VkIHRvIHNlbmQgZXZlbnRzIGF0IGFuIGFy
Yml0cmFyeSB0aW1lIGluIHRoZSBmdXR1cmUuCisgICAgICAgIFByZXZpb3VzbHksIHRoZXkgd2Vy
ZSBrZXB0IGFsaXZlIChvciBub3QpIGJ5IHRoZSBBUEkgY2xpZW50LgorCisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0
ZW5zaW9uKToKKyAgICAgICAgV2hlbiB0aGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZWdpc3Rl
cmVkLCByZW1vdmUgdGhlIGFzc29jaWF0ZWQgZXh0ZW5zaW9uIEFQSSBvYmplY3QgKGFuZAorICAg
ICAgICBvdXIgc3Ryb25nIHJlZmVyZW5jZSB0byBpdCkuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lv
bik6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOiBGaXggbmFt
ZXNwYWNlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZGlkSGlkZUV4dGVuc2lvblRhYik6Cisg
ICAgICAgIEFkZGVkLiBUcnkgdG8gbG9vayB1cCB0aGUgYXNzb2NpYXRlZCBBUEkgb2JqZWN0IGZv
ciB0aGUgZXh0ZW5zaW9uIGFuZCBmb3J3YXJkIHRoZSBldmVudCB0bworICAgICAgICB0aGUgY2xp
ZW50IG9mIHRoZSBBUEkgb2JqZWN0LCB3aGljaCBpcyB1bHRpbWF0ZWx5IF9XS0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJ
OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuIERlZmVy
IHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlciB0byBoYW5kbGUgZnVydGhlciBldmVudCBwcm9w
YWdhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25UYWIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYik6Cisg
ICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgdG8gaGFuZGxl
IGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgIEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOgor
ICAgICAgICBCZSBtb3JlIHByZWNpc2UgYWJvdXQgYXNzb2NpYXRpbmcgdGhpcyBtZXNzYWdlIHJl
Y2VpdmVyIHdpdGggdGhlIGluc3BlY3RvciBwYWdlJ3MgaWRlbnRpZmllci4KKyAgICAgICAgQWxz
bywgc2F2ZSB0aGUgcGFnZSBpZGVudGlmaWVyIHNvIHRoYXQgbWV0aG9kcyB0aGF0IG5lZWQgdG8g
c2VuZCBJUEMgbWVzc2FnZXMgY2FuIHNlbmQKKyAgICAgICAgdGhlIG1lc3NhZ2UgdG8gdGhlIGNv
cnJlY3QgZGVzdGluYXRpb25JRC4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVh
dGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4
dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAgICAgICBGaXggbmFtZXNwYWNl
cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4K
KwogMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSBXZWJDb250ZW50IHNhbmRib3ggdG8gYWxsb3cgaXQgdG8gY2FsbCB0YXNrX2NyZWF0
ZV9pZGVudGl0eV90b2tlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFl
MDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4NzA2NTlhNDk0YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oCkBAIC0zOSw2ICszOSwxMyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK3VzaW5nIEV4dGVuc2lvbklEID0gV1RGOjpTdHJp
bmc7Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6U3RyaW5nOworfQorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwpAQCAtMTEwLDYgKzExNywxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNv
bnN0IFN0cmluZyYgLyogZXZlbnROYW1lICovLCBjb25zdCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
VGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYp
IHsgfQorI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3Nh
Z2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCmluZGV4IDE4MGNkYmE4NDUzZTMxYmZmMTVmYmNiOTUyYTdjMTZkYmM1ZjAyOGQu
LjY1Nzc0MjNjYzBjNjRhOWQ2NTYxMWE2ZGY4NzU3OGNmNjZlNmMyMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02NzMs
NCArNjczLDMyIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZl
bnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9URUxFTUVUUlkpCiAKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBw
b3J0c1dlYkV4dGVuc2lvbnMoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
KyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0
ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIG1fY2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25U
YWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9u
VGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFi
SUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1f
Y2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaAppbmRleCBlMjk4OTNiYjM1NTNhZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQy
MzVkLi40NTA2NmI5YTgxYWMzM2NkN2JiODc3YWI4OTE5MmYyYjAzNWRjZmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2
LDYgKzEzNiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZlbnQoY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYgcGF5bG9hZCk7CiAjZW5kaWYKIAorICAg
IGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyAgICB2b2lkIGRpZEhpZGVF
eHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb25UYWJJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDE3ZThm
NWI4ZDJhZWM4NTdkYzZmNTcxNjRhZGU3YTE0N2Y5NzQ3NjIuLjMyYzU3NDNhMGU2M2Q1ODIzOTk4
MTNkZGMzMDMwYTgzNDQyNDc5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC05NSw2ICs5NSwxMCBAQAogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNEaWFnbm9zdGljTG9nZ2luZzsKICAgICBb
Q29uZGl0aW9uYWw9SU5TUEVDVE9SX1RFTEVNRVRSWV0gdW5kZWZpbmVkIGxvZ0RpYWdub3N0aWNF
dmVudChET01TdHJpbmcgZXZlbnROYW1lLCBET01TdHJpbmcgY29udGVudCk7CisKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c1dlYkV4dGVuc2lvbnM7CisgICAgW0NvbmRp
dGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRlZmluZWQgZGlkU2hvd0V4dGVuc2lvblRh
YihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmluZyBleHRlbnNpb25UYWJJRCk7CisgICAg
W0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRlZmluZWQgZGlkSGlkZUV4dGVu
c2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmluZyBleHRlbnNpb25UYWJJRCk7
CiB9OwogCiBkaWN0aW9uYXJ5IENvbnRleHRNZW51SXRlbSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvbi5qcwppbmRleCA2ZmJjMzdhZWE3YTE4OTNiMWY3MDJiNTRjYmMyNzA3NThi
ZTk1ZTU0Li44ZWFmZTAzOTI0ZDU5NmFiY2RkZWFiY2MxYmVlYTJlY2EzZDQxYmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKQEAgLTQwLDcgKzQwLDcgQEAgV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uCiAgICAgZ2V0
IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7IH0KIH07CiAKLS8vIE5v
dGU6IHRoZXNlIHZhbHVlcyBhcmUgc3lub255bW91cyB3aXRoIHRoZSB2YWx1ZXMgb2YgZW51bSBj
bGFzcyBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yLgorLy8gTm90ZTogdGhlc2UgdmFs
dWVzIGFyZSBzeW5vbnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3IuCiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlID0g
ewogICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0RGVzdHJveWVkIiwKICAgICBJbnRlcm5h
bEVycm9yOiAiSW50ZXJuYWxFcnJvciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDMzZmRmYTAwZmQ0M2NjMDE5ZmNk
MTRjZmJlOTAxOWY1OTdkMGE4M2UuLjE5MjU1NjdlZmYzYmRiY2RiMjA4MmQ2ODRiOTNkNGJhZGZl
MGJiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDIyIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGF0dGFjaGVkKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9z
dC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRlbnNpb24uZXh0ZW5zaW9uSUQsIHRoaXMu
X2V4dGVuc2lvblRhYklEKTsKKyAgICB9CisKKyAgICBkZXRhY2hlZCgpCisgICAgeworICAgICAg
ICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnN1cHBvcnRzV2ViRXh0ZW5zaW9ucykKKyAgICAg
ICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5kaWRIaWRlRXh0ZW5zaW9uVGFiKHRoaXMuX2V4
dGVuc2lvbi5leHRlbnNpb25JRCwgdGhpcy5fZXh0ZW5zaW9uVGFiSUQpOworCisgICAgICAgIHN1
cGVyLmRldGFjaGVkKCk7CisgICAgfQorCiAgICAgdGFiSW5mbygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYyOTA5M2RlNGYxZDJmNmVmODIwZmRhOWRh
ZWU1ZjUuLjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlmZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNDEzLDYg
KzQxMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFhNjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVh
MzEyOTVjNzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRjZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKIAlVSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAogCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5IFwKIAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDk5ZGRlMDBkMWU0NDFlMzMzZjVi
NWY1MjE2MzkyNjU0OGVhOGQzMDguLjA3ZWE0NjVlOGE4N2NiYWZmZGIyZGQ4OTEzYmI0ZGI1M2Rl
NTUxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU3
LDggKzY1Nyw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnSlNDOjpN
ZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAg
ICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5o
PiddLAogICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBbJyJJUENTZW1hcGhvcmUuaCInXSwKLSAg
ICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclRhcmdldC5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cic6IFsnIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcic6IFsnPFdlYkNvcmUv
RGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ01l
ZGlhVGltZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwKQEAgLTc1Myw3ICs3NTQsNiBAQCBkZWYg
aGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBb
JyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
clN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVU
eXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKICAgICAgICAg
J1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6
IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0
aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCBiYjNlZWU4OGRlZmJjNGY4
NzAwYzkwNTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzExZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3
ZDZjMjdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci1XVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhF
eHRlbnNpb25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7Ci0gICAgY2FzZSBJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICBjYXNlIEV4dGVuc2lv
bkVycm9yOjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CisgICAg
Y2FzZSBFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CiAgICAgICAgIHJldHVybiAiSW52
YWxpZFJlcXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgog
ICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgorICAgIGNhc2UgRXh0ZW5zaW9uRXJy
b3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0dXJuICJSZWdpc3RyYXRpb25GYWls
ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6
CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAgICAgICAgIHJldHVy
biAiTm90SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
SW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3Zjg1NzQxNmZkYzRmZmI1MjA5MmYy
NTM3NzU2MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkxODJiNDU4NGQ4OWViZjFmY2Y3MmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgK
QEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9u
RGV0YWlsczsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworZW51bSBjbGFz
cyBFeHRlbnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEluc3BlY3RvckV4dGVuc2lvblRh
YklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3Ry
aW5nOwotdXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCA9IEV4cGVjdGVk
PEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj47Cit1c2luZyBFeHRlbnNp
b25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBXVEY6OlN0cmluZzsK
K3VzaW5nIEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxFeHBlY3RlZDxSZWZQ
dHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgRXh0ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
IDogdWludDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CiAgICAg
Q29udGV4dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9yLAogICAgIEludmFsaWRSZXF1ZXN0
LApAQCAtNTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3Ig
OiB1aW50OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07CiAKLVdURjo6U3RyaW5nIGluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworV1RG
OjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvcik7CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKIG5hbWVzcGFjZSBX
VEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAg
IFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAotICAgICAgICBXZWJLaXQ6Oklu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCi0gICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCisgICAgICAgIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Oklu
dGVybmFsRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25G
YWlsZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVk
CiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMWNlNWEzZGMyOTllMTA1
YmMxY2EwNzFhZGEzN2NhNWFjOTdkYWFlLi4wOWI0ZGFkODcwNDIzYzFjM2E2M2I3NjZmMWM1MGE2
YWU5OTE0ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjIsNiArNDIyLDcgQEAgVUlQ
cm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2Ft
ZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNzL0luc3BlY3Rvci9D
b2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDgzN2ZkODUw
ZjgwZjU1Mjg4ZmFiNGRjYWY0NGRmMzhiMzk1NzJkMjcuLjJhMjAzNzY1NDU4ZGI1NGI3YmRkMzk5
MmY1OTE5OWJhZTI2YmE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00NSwzMCArNDUsMzUgQEAgUmVmPElu
c3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRl
bnNpb24oaWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUs
IGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudChVbmlxdWVSZWY8
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNs
aWVudC5tb3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmNy
ZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYklj
b25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5jcmVhdGVUYWJGb3JFeHRlbnNpb24o
bV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRl
U2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRl
bnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNv
bnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJM
PiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVu
dFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+ZXZhbHVhdGVT
Y3JpcHRGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJ
Z25vcmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0
aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5n
PiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9wdGlv
bmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2Vy
QWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgK
aW5kZXggZDU1ZmExYTA4N2Q4NTdhNTQ1OTFjMWViYTgxNWMzOGVhMGNkZWMwMy4uNWRiNDMxY2Zi
MjQyOTRhOTRmYjIzNDBlYjI0MjQwOWQ5NzFiYzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCisjaW5jbHVkZSAiQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KQEAgLTQ2LDE1ICs0NywxOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAg
dm9pZCBjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJM
JiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2Ny
aXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6
VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRpb25SZXN1bHQpPiYmKTsKLSAgICB2b2lkIHJlbG9hZElnbm9yaW5nQ2FjaGUoY29uc3QgT3B0
aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIHVz
ZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYg
dGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3Vy
Y2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0
aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShjb25z
dCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5n
PiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0
LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCk+JiYpOworCisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFVu
aXF1ZVJlZjxJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+JiYpOwogCiBwcml2YXRlOgogICAgIElu
c3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOwogCiAgICAgV1RGOjpTdHJp
bmcgbV9pZGVudGlmaWVyOwogICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyUHJveHk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiBtX2NsaWVudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNjE5
MmZhNjg4MTQyMTU1YTBiMzIxMjhmNzkxMjMxMzhlMTg4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2hvd0V4
dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCAxZGY1NDljNDdmNTVl
OGRmNDZiMjgzNmM0N2NiNGViNGYwYTMxMWJmLi5mODcxYjlhMmM3OGRiZTQzYjZkMjQ4NzNiNDU0
ZWRmMGJjMjk2M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3IubW0KQEAgLTE4NywxMyArMTg3LDE5IEBAIC0gKFdLV2ViVmlldyAqKWV4
dGVuc2lvbkhvc3RXZWJWaWV3CiAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0
cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVuc2lv
bihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNpb25JRCA9IHJldGFp
blB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9v
bCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAvLyBJdCBpcyBhbiBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHByaW9yIHRvIGNyZWF0aW5n
IGEgZnJvbnRlbmQgKGkuZS4sIHdpdGggLWNvbm5lY3Qgb3IgLXNob3cpLgorICAgIGlmICghX2lu
c3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3Bl
Y3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJ
bnZhbGlkUmVxdWVzdCl9XSwgbmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9p
bnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5z
aW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxS
ZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
PiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAg
Y2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9y
S2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9y
KCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JU
b1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6SW5zcGVj
dG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3Rl
ZFNlbGYtPl9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpKTsKKyAgICAgICAgY2Fw
dHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkpKTsKICAgICB9KTsKICNlbHNl
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpAQCAtMjAzLDkg
KzIwOSwxNSBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4
dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogLSAodm9pZCl1bnJlZ2lzdGVyRXh0
ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVy
KCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0
aGlzIG1ldGhvZCBwcmlvciB0byBjcmVhdGluZyBhIGZyb250ZW5kIChpLmUuLCB3aXRoIC1jb25u
ZWN0IG9yIC1zaG93KS4KKyAgICBpZiAoIV9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVk
RmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmco
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpfV0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT51
bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhcHR1
cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTog
V2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1d
KTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmgKaW5kZXggNWU4N2IyNzM1N2VjYjdmNjBiMGYxODMxMDc4ZmI2ZmYxZGM4Nzc1
OS4uODRhNzhiOGM2NWJjMWRmYzJlMTZiNmQ0ZTllY2I0MGFmNmJmYWMxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb24uaApAQCAtMzMsNiArMzMsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitA
cHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKIFdLX0NMQVNTX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSkKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
IDogTlNPYmplY3QKIApAQCAtNDUsOCArNDcsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpKQogICogQHBhcmFtIHRhYkljb25VUkwgVGhlIGxvY2F0aW9uIG9mIGFuIGlt
YWdlIHJlc291cmNlIHRvIHVzZSBmb3IgZGlzcGxheSBpbiB0aGUgY3JlYXRlZCB0YWIncyB0aXRs
ZS4KICAqIEBwYXJhbSBzb3VyY2VVUkwgVGhlIGxvY2F0aW9uIG9mIHRoZSBtYWluIHJlc291cmNl
IHRvIGxvYWQgaW4gdGhlIG5ldyB0YWIncyBpZnJhbWUgYnJvd3NpbmcgY29udGV4dC4KICAqIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGJlIGNhbGxl
ZCB3aGVuIGNyZWF0aW5nIGEgdGFiIHN1Y2NlZWRzIG9yIGZhaWxzLgorICogQGRpc2N1c3Npb24g
VGhlIGluc3BlY3RvclRhYklkZW50aWZpZXIgcHJvdmlkZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFu
ZGxlciBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0YWJzCisgKiB0aGF0IGFyZSBwYXNzZWQgYXMg
YSBwYXJhbWV0ZXIgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgbWV0aG9kcy4KICAq
LwotLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25V
Ukw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051
bGxhYmxlIGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpY3JlYXRl
VGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYklj
b25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0Vycm9yICogX051bGxhYmxlLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBpbnNwZWN0b3JU
YWJJZGVudGlmaWVyKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLyoqCiAgKiBAYWJzdHJhY3QgRXZh
bHVhdGVzIEphdmFTY3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluc3BlY3RlZCBwYWdlIG9u
IGJlaGFsZiBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgpAQCAtNzIsNiArNzYsMTIgQEAg
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogCiBAcHJvcGVydHkgKHJlYWRv
bmx5LCBub25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNpb25JRDsKIAorLyoqCisgKiBAYWJzdHJh
Y3QgQWxsb3dzIHRoZSBjbGllbnQgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlmZWN5Y2xlIGV2ZW50
cyB0aGF0CisgKiBhcmlzZSBmcm9tIHdpdGhpbiBXZWIgSW5zcGVjdG9yLgorICovCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBk
ZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKwogQGVuZAogCiBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDQzMmI5ODgwYjIy
NDM2NzQ1YzY3NDQ2ZWQyYWZlNjE2OWJlY2Q5NDQuLjIwYjQwYTk2NTE5ZTQzNGM1YzE4YWNiMmI0
ZWE2YTM1ZjBkY2Y1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCIKICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgi
CkBAIC0zMyw4ICszNiw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLQogQGltcGxlbWVu
dGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbgogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTQ5LDEz
ICs1MCwyNiBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVybiAqX2V4dGVu
c2lvbjsKIH0KIAorLSAoaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPilkZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30K
KworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
KWRlbGVnYXRlCit7CisgICAgaWYgKCFkZWxlZ2F0ZSAmJiAhX2RlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBfZGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGU+KHNlbGYsIGRlbGVnYXRlKTsKK30KKwogLy8gTUFSSzogQVBJCiAKIC0g
KHZvaWQpY3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihO
U1VSTCAqKXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJj
ZVVSTCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVS
TCwgc291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRC
bG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxJbnNwZWN0
b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9j
ayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtu
b3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6
Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7
CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1
bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC02Nyw5ICs4MSw5IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
U291cmNlIGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiB7CiAgICAgT3B0aW9uYWw8
VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBtYWtlT3B0aW9uYWwoVVJMKGZyYW1l
VVJMKSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbENvbnRleHRT
ZWN1cml0eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IG1ha2VPcHRpb25hbChVUkwo
Y29udGV4dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgX2V4dGVuc2lvbi0+
ZXZhbHVhdGVTY3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENv
bnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVT
Y3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1
cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0
dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6
IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9
XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3Ry
aW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtODgsOSArMTAyLDkgQEAgLSAodm9pZClyZWxvYWRJZ25vcmluZ0Nh
Y2hlOihCT09MKWlnbm9yZUNhY2hlIHVzZXJBZ2VudDooTlNTdHJpbmcgKil1c2VyQWdlbnQgaW4K
IHsKICAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsVXNlckFnZW50ID0gdXNlckFnZW50ID8g
bWFrZU9wdGlvbmFsKFN0cmluZyh1c2VyQWdlbnQpKSA6IFdURjo6bnVsbG9wdDsKICAgICBPcHRp
b25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IG1h
a2VPcHRpb25hbChTdHJpbmcoaW5qZWN0ZWRTY3JpcHQpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBf
ZXh0ZW5zaW9uLT5yZWxvYWRJZ25vcmluZ0NhY2hlKGlnbm9yZUNhY2hlLCBvcHRpb25hbFVzZXJB
Z2VudCwgb3B0aW9uYWxJbmplY3RlZFNjcmlwdCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpXSAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5yZWxvYWRJZ25vcmluZ0NhY2hlKGlnbm9y
ZUNhY2hlLCBvcHRpb25hbFVzZXJBZ2VudCwgb3B0aW9uYWxJbmplY3RlZFNjcmlwdCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKSB9XSk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSkgfV0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZmU4NDE0ZDFmMDgwZmYyNWE4NDE3NGNhM2Q4NjRiZmNkZDIxYjQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBUQVJHRVRf
T1NfT1NYCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9j
b2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisK
Ky8qKgorICogQGFic3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IGV4dGVuc2lvbiBoYXMgYmVlbiBzaG93bi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVu
c2lvbiB0aGF0IGNyZWF0ZWQgdGhlIHNob3duIHRhYi4KKyAqIEBwYXJhbSB0YWJJZGVudGlmaWVy
IElkZW50aWZpZXIgZm9yIHRoZSB0YWIgdGhhdCB3YXMgc2hvd24uCisgKi8KKy0gKHZvaWQpaW5z
cGVjdG9yRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkU2hv
d1RhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKKy8qKgorICog
QGFic3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lv
biBoYXMgYmVlbiBoaWRkZW4uCisgKiBAcGFyYW0gZXh0ZW5zaW9uIFRoZSBleHRlbnNpb24gdGhh
dCBjcmVhdGVkIHRoZSBoaWRkZW4gdGFiLgorICogQHBhcmFtIHRhYklkZW50aWZpZXIgSWRlbnRp
ZmllciBmb3IgdGhlIHRhYiB0aGF0IHdhcyBoaWRkZW4uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9y
RXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oCmluZGV4IDBhMGZhYmM4YTM3MDJkMzI3Mjk2ZjU3MTY0MGVjMTcx
ZmM0NTExZGYuLmFlMzE2OTg3OWM2OTdiYWYyYjAzMDE5MjEyYWJkM2NiNzA0YjZkMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2ltcG9y
dCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6
Okluc3BlY3RvckV4dGVuc2lvbj4gewpAQCAtNDEsNiArNDUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBXcmFwcGVyVHJhaXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CiBAaW50ZXJmYWNlIF9X
S0luc3BlY3RvckV4dGVuc2lvbiAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBfZGVsZWdh
dGU7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbQppbmRleCA3YThmNjAzZWYyZDE5MGUwZmEwYjU1NTc3ZGM4MDVkMzBiNjNlMGFhLi4wNmUy
ZWVjZTcxMmI1OTI1MGY1MzkwYmRjNDgwMTRiNWQ3ZTUwYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjQsMTYgKzE2NCwyMiBAQCAtIChX
S1dlYlZpZXcgKilleHRlbnNpb25Ib3N0V2ViVmlldwogICAgIHJldHVybiBzZWxmLndlYlZpZXc7
CiB9CiAKLS0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5z
aW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlv
bkhhbmRsZXIKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0
ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFi
bGUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNp
b25JRCA9IHJldGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
RXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAvLyBJZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgcHJpb3IgdG8gY3JlYXRp
bmcgYSBmcm9udGVuZCB3aXRoIC1sb2FkRm9yRGVidWdnYWJsZTpiYWNrZW5kQ29tbWFuZHNVUkw6
LCBpdCB3aWxsIG5vdCBzdWNjZWVkLgorICAgIGlmICghbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdCkgfV0sIG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbW90ZUlu
c3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCktPnJlZ2lzdGVyRXh0ZW5zaW9uKGV4
dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRy
KGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRC
bG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxSZWZQdHI8
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVy
ZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBX
ZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0s
IG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6
ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSkgfV0sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihBUEk6Okluc3BlY3RvckV4
dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxm
LT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSk7CisgICAg
ICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgfSk7
CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKQEAg
LTE4Myw5ICsxODksMTQgQEAgLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJp
bmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKikKIC0gKHZvaWQpdW5yZWdp
c3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVu
c2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIC8vIElmIHRo
aXMgbWV0aG9kIGlzIGNhbGxlZCBwcmlvciB0byBjcmVhdGluZyBhIGZyb250ZW5kIHdpdGggLWxv
YWRGb3JEZWJ1Z2dhYmxlOmJhY2tlbmRDb21tYW5kc1VSTDosIGl0IHdpbGwgbm90IHN1Y2NlZWQu
CisgICAgaWYgKCFtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSB9XSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJv
bGxlcigpLT51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5l
cnJvcigpKX1dKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xv
Y2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRv
U3RyaW5nKHJlc3VsdC5lcnJvcigpKSB9XSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29h
L0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTkwZWU3MmVhZjY2OWU5ZTUwNzA4MTQ0OWI2MDA4YjBhOTk2NmI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJBUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CitA
cHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUo
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAgUmV0YWluUHRy
PGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAgdm9p
ZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KTsKKworcHJp
dmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVuc2lv
bkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6Okluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRp
ZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJy
aWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJbnNwZWN0b3JF
eHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3Qgewor
ICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllciA6
IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlm
aWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29j
b2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMzcyZjk4Y2Uz
MWQwYjI5ZDBhNTljZDYyZmFkMDMwZmI0NDBlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5tbQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24s
IGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2lu
c3BlY3RvckV4dGVuc2lvbihpbnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRl
bGVnYXRlKQoreworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNo
b3dUYWJXaXRoSWRlbnRpZmllciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGluc3BlY3RvckV4dGVuc2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlm
aWVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0
ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVu
c2lvbi0+X2V4dGVuc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50PigqdGhpcykpOworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fklu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9X
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6
OmRlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAg
ICA6IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0
b3JFeHRlbnNpb25DbGllbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4
dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7
CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGlu
c3BlY3RvckV4dGVuc2lvbjptX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9y
RXh0ZW5zaW9uLmdldCgpLmdldCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25U
YWJJRF07Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4
dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRh
YldpdGhJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9
IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVn
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9u
Om1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCku
Z2V0KCkgZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmNWEwMjJlYTJlMGM5NzNkYjgzMjlm
MDg4YzU4YzcwMTkzYjA5M2IyLi43ZTAzMDNkZGE5ZTJiZTY3ZmQ2OTRkMjZhNTZmYThhYTI4MTUw
N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQog
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Km1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9leHRlbnNpb25Db250
cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eT4oKm1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZSgqbV9pbnNwZWN0b3JQYWdl
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDBmMWMwOThmNDM1OWQ0
M2U1YmU4NWRmMTdiNmI4NjUzZjEwZWI0MTAuLmE0Mzg5ODRhNjUzNzJlNDdiMTI5OWY1NGM2NmU0
ZWQ1Nzk3NzQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorICAgIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9leHRlbnNpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICAgICAKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkq
IG1faW5zcGVjdG9yUGFnZSB7IG51bGxwdHIgfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKICNl
bmRpZgogICAgIAogICAgIFJlZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5jcHAKaW5kZXggMjUwMTAyMjlhYmNkMjY4NGRmNWVjMGJlOWNjNTAyYWFjMzQ0
NzFkZi4uMWJjNjljOTVmNTNkYjYwMWZkMmQ0ZmZmNTZlMjBiMDc3ZDYyNWQwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
RnJvbnRlbmRQYWdlKCkKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JCYXNlVVJMKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworICAgIG1fZXh0ZW5zaW9uQ29u
dHJvbGxlciA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGUo
Km1faW5zcGVjdG9yUGFnZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxM2JlYjg5YTdj
NzlhYzEyMWI4NTRhNzk2ODYyNmFkNDViNTJlYzRjLi42YWI3Y2E0ZDEzODAxYjc2MGYzY2M0ODcy
NGQ5ZmM1MDQxYTU2MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvclBhZ2U7IH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigp
IGNvbnN0IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyAgICBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSogZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXh0ZW5zaW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBi
b29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KQEAg
LTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3Bl
Y3RvckNsaWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CiAj
ZW5kaWYKICAgICAKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDU0YTkyMGZj
YmVmZmI0YjdjMzQxMjZjOTAwMzNkYmNmMzQ1NWFhZmUuLmYzYTU5ODE1MDhkODFjM2U3MjMxMWJk
NDMxMjA3ZDAzNjEyOTRkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQogCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAKQEAgLTM3LDE4ICszOSwyNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpCiAgICAgOiBtX2luc3BlY3RvclBh
Z2UobWFrZVdlYWtQdHIoaW5zcGVjdG9yUGFnZSkpCiB7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQog
eworICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2Fs
bGJhY2tRdWV1ZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQor
ICAgICAgICBjYWxsYmFjaygpOworCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAg
ICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tzID0g
c3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKLSAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjaygpOworUmVm
PFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFn
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eShpbnNwZWN0b3JQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCkBAIC03NCwzNSArODMsNTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQogCiAv
LyBBUEkKIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRl
ZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1l
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFn
ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9u
IHsgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFtzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vh
a1RoaXMuZ2V0KCkpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+IGV4dGVuc2lvbkFQSU9iamVjdCA9IEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVh
dGUoZXh0ZW5zaW9uSUQsIHN0cm9uZ1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgc3Ryb25nVGhp
cy0+bV9leHRlbnNpb25BUElPYmplY3RNYXAuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25BUElP
YmplY3QuY29weVJlZigpKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShleHRlbnNpb25BUElPYmplY3QpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25J
RCYgZXh0ZW5zaW9uSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29s
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBl
eHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2lu
c3BlY3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0
ZW5zaW9uIHsgZXh0ZW5zaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lv
biB7IGV4dGVuc2lvbklEIH0sIFtzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vha1RoaXMuZ2V0KCkp
LCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzdHJvbmdUaGlzLT5tX2V4dGVuc2lvbkFQSU9iamVjdE1hcC50
YWtlKGV4dGVuc2lvbklEKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5h
bWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
d2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRl
bnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMCwxNSArMTM4LDE1IEBAIHZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3Vy
Y2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25z
dCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVS
TCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwg
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhp
cy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6RXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24ge2V4
dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4s
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNv
bnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRT
ZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYgZGV0YWlscywgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJy
b3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzNywxNSArMTY1LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNv
bnN0IEluCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYg
ZXh0ZW5zaW9uSUQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3Rl
ZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdu
b3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9u
YWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgZXh0ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFn
ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWxvYWRGb3JFeHRlbnNpb24g
e2V4dGVuc2lvbklELCBpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0sIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBPcHRp
b25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICB3
ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRl
bnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Niw2
ICsxODQsMzYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckUKICAgICB9KTsKIH0KIAorLy8gV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgorCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBhdXRvIGl0ID0g
bV9leHRlbnNpb25BUElPYmplY3RNYXAuZmluZChleHRlbnNpb25JRCk7CisgICAgaWYgKGl0ID09
IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbiA9IGl0LT52YWx1ZTsKKyAg
ICBhdXRvIGV4dGVuc2lvbkNsaWVudCA9IGV4dGVuc2lvbi0+Y2xpZW50KCk7CisgICAgaWYgKCFl
eHRlbnNpb25DbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGV4dGVuc2lvbkNsaWVudC0+
ZGlkU2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIGF1dG8gaXQgPSBtX2V4dGVuc2lv
bkFQSU9iamVjdE1hcC5maW5kKGV4dGVuc2lvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9leHRlbnNp
b25BUElPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBUEk6
Okluc3BlY3RvckV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gaXQtPnZhbHVlOworICAgIGF1dG8gZXh0
ZW5zaW9uQ2xpZW50ID0gZXh0ZW5zaW9uLT5jbGllbnQoKTsKKyAgICBpZiAoIWV4dGVuc2lvbkNs
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXh0ZW5zaW9uQ2xpZW50LT5kaWRIaWRlRXh0
ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDllMzAyOWFkNTQ0OTg5ODNk
YmZmOWIyOWU3NGY5YTI4Y2YxYTZmY2MuLjdmZTA2Y2E0NzdhNWQ3ZmE4YjgzYmNhMjhjZDU3Yzg5
MzdmOWNmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oCkBAIC0zNCwzMyArMzQsNDggQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBJbnNwZWN0b3JFeHRl
bnNpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZpbmFsCi0gICAg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PgorICAgICwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBjcmVhdGUoV2Vi
UGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJh
dGVkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUEkuCi0gICAgdm9pZCByZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVU
YWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcm
IHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJ
RCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9u
YWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBPcHRpb25hbDxib29sPiYg
aWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWdp
c3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0
cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4m
Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBj
b25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlw
dFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVS
TD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRl
bnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBp
Z25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworCisgICAgLy8gV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgorICAgIHZv
aWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lv
blRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25UYWJJRCYpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucy4KICAgICB2b2lkIGluc3BlY3Rv
ckZyb250ZW5kTG9hZGVkKCk7CiAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsK
KwogICAgIHZvaWQgd2hlbkZyb250ZW5kSGFzTG9hZGVkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAK
ICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9pbnNwZWN0b3JQYWdlOworICAgIEhhc2hNYXA8
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCwgUmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPj4g
bV9leHRlbnNpb25BUElPYmplY3RNYXA7CiAKICAgICAvLyBVc2VkIHRvIHF1ZXVlIGFjdGlvbnMg
c3VjaCBhcyByZWdpc3RlcmluZyBleHRlbnNpb25zIHRoYXQgaGFwcGVuIGVhcmx5IG9uLgogICAg
IC8vIFRoZXJlJ3Mgbm8gcG9pbnQgc2VuZGluZyB0aGVzZSBiZWZvcmUgdGhlIGZyb250ZW5kIGlz
IGZ1bGx5IGxvYWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDJmYmJhNzI2ZmIzYzVh
YmViYWYyODY3MzAyYThjMjdhNjU0NmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgeworICAgIERp
ZFNob3dFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZXh0ZW5zaW9uVGFi
SUQpCisgICAgRGlkSGlkZUV4dGVuc2lvblRhYihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBl
eHRlbnNpb25UYWJJRCkKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZlMGQ4YWQ2YTUzNzc4MjgyZGQ1YzNkYTNkN2IxZjkwMjUyZWU1Y2YuLmJiY2QyZmQ2NzI0
NmEyNGI2NDEzODdjZTQ2YjI4MTllMDg0NmE1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxNyw2ICsxNTE3LDExIEBACiAJCTk5
NTVBNkY1MUM3OTg2RTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMTFD
Nzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oICovOyB9Owog
CQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZG
MjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgKi87IH07
CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3Rz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZG
MzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovOyB9Owor
CQk5OTZCMkI5ODI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJOTk2QjJCOTkyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5NkIyQjk2MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTk5NkIyQjlBMjVFMjQ0
ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk2QjJCOTcyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTk5NkIyQjlEMjVFMjU3RkYw
MDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8q
IEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi87IH07CisJCTk5NkIyQkExMjVFMjU5MTEw
MDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8q
IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9X
S0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUz
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJ
CTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC00ODgyLDYg
KzQ4ODcsMTQgQEAKIAkJOTk1NUE2RjExQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNr
ZW5kRGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21h
dGlvbkJhY2tlbmREaXNwYXRjaGVycy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9B
dXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9j
b2xPYmplY3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1dG9t
YXRpb25Qcm90b2NvbE9iamVjdHMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9B
dXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2Nv
bE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblBy
b3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9u
UHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTk5NkIyQjkzMjVFMjQzMTQwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5NzI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2
QjJCOUIyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNp
b25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5RTI1RTI1
ODJDMDA3MTkzNzkgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29u
ZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC03ODYwLDYgKzc4
NzMsNyBAQAogCQkJCTkxOTc5NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5oICovLAogCQkJCTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JF
eHRlbnNpb24uaCAqLywKIAkJCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5NkIyQkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAogCQkJCTk5Nzk2NUEyMjUzMTI4QzcwMEIz
MUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8sCiAJCQkJOTlCMTY3NTUyNTJC
QjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi8sCiAJCQkJ
NUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCkBA
IC05MjA5LDYgKzkyMjMsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTE5Nzk0MDAyM0RCQzQ5
MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggKi8sCiAJCQkJOTE5NzkzRkYyM0RCQzQ5
MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLm1tICovLAorCQkJCTk5NkIyQjlDMjVFMjU3
RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAorCQkJCTk5NkIy
QjlCMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
OTIzMCw2ICs5MjQ2LDcgQEAKIAkJCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBF
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCAqLywKIAkJCQk5
OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaCAqLywKKwkJCQk5OTZCMkI5MzI1RTI0MzE0MDA3MTkzNzkgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU1QkE4
MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJ
QTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAog
CQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8s
CkBAIC05OTg1LDYgKzEwMDAyLDcgQEAKIAkJCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyog
QVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTk5OUI3RjRGMjU1NEJBM0YwMEY0
NTBBNCAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwICovLAogCQkJCTk5QkUzQjEyMjU0MjJG
NDEwMEM2NTUxQyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKKwkJCQk5OTZCMkI5RTI1
RTI1ODJDMDA3MTkzNzkgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggKi8sCiAJCQkJ
MzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNwcCAq
LywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCAqLywKQEAgLTExMDYwLDYgKzExMDc4LDkgQEAKIAkJCQkxQ0E4Qjk0
NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAogCQkJ
CTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFF
MyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAorCQkJ
CTk5NkIyQjk1MjVFMjQ0ODEwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTk2QjJCOTYyNUUyNDQ4MjAw
NzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMu
aCAqLywKKwkJCQk5OTZCMkI5NzI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkxQ0JCRTQ5RTE5
QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgg
Ki8sCiAJCQkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTQ4MSw2ICsxMTUwMiw3IEBACiAJCQkJOTkwMzZBRTIy
M0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2QjJCQTEy
NUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OTc5NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE3ODgsNiArMTE4MTAsNyBAQAogCQkJCUNFNTUwRTE1MjI4Mzc1MjIwMEQy
ODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MDUy
M0RCQzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTE5Nzk0MDIyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OTZCMkI5RDI1RTI1N0ZGMDA3MTkzNzkgLyogSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RTM5MUZEMjE4M0MxRjgwMEM4
RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVCQ0U1
REYxQzUwNzY2QTAwQ0RFM0ZBIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTIyNzQsNiArMTIyOTcs
OCBAQAogCQkJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzk2NTlFMjUzMTBBNDkwMEIz
MUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCMkI5OTI1
RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2QjJCOUEyNUUyNDQ4MjAwNzE5Mzc5IC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVj
dG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MkIxQkEzOEU2MTAwN0NE
MzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0
QTAxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNDE1Nyw2ICsxNDE4Miw3IEBACiAJCQkJQzE4RjNBMTUyNTYzMzM0MzAwNzk3RTY2IC8q
IFdlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFD
QThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTc5NjU5RjI1MzEwQTQ5MDBCMzFBRTMgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTk5NkIyQjk4MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3OEEyMTJCNkFCMTAwRjQ5M0ZEIC8q
IFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MjgwRjMxOTE5OTgy
QTAwNkFEOUY5IC8qIFdlYktpdC5tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3Bw
CmluZGV4IGQxMzkwYmZkNmY2YmUyMzE1NjY3YzA0ZmQ2YmVjM2Q2YWMxNTUyZGQuLmM3YWM1ZDZi
ZmYyNjgwN2RlM2VkMWJiZmJhOTJhMmE4OGYzZDY1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3Bw
CkBAIC0yNzIsNyArMjcyLDMwIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNldERpYWdu
b3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgbV9mcm9udGVuZEFQ
SURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygic2V0RGlhZ25vc3Rp
Y0xvZ2dpbmdBdmFpbGFibGUiX3MsIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShtX2RpYWdub3N0aWNM
b2dnaW5nQXZhaWxhYmxlKSB9KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfVEVMRU1FVFJZKQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorYm9vbCBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lv
blRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4
dGVuc2lvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2V4dGVuc2lv
bkNvbnRyb2xsZXItPmRpZFNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRh
YklEKTsKK30KKwordm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRh
Yihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVu
c2lvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlci0+ZGlkSGlkZUV4dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogV2ViQ29yZTo6UGFn
ZSogUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kUGFnZSgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJ
LmgKaW5kZXggYjhkYTlhOWY4YTVhNzY2ZDEzNjEyMjZhZjBjNGU4NTYxNjU2YjNkNS4uMDBhM2Vl
MDFlZDFmNTY5NDI0YTU4ZDVjNjQ3NjUwYTRmMTk3MWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaApA
QCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgRmxvYXRS
ZWN0OwpAQCAtMzksOCArNDMsMTAgQEAgY2xhc3MgRmxvYXRSZWN0OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOwogY2xhc3Mg
V2ViUGFnZTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitjbGFzcyBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5z
cGVjdG9yVUkgZmluYWwKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3Rv
clVJPgpAQCAtMTA5LDYgKzExNSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWFnbm9zdGljTG9n
Z2luZ0F2YWlsYWJsZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGU7IH0KICAgICB2b2lkIGxvZ0RpYWdub3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50
TmFtZSwgY29uc3QgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlv
bmFyeSYpIG92ZXJyaWRlOwogI2VuZGlmCisgICAgICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBib29s
IGNhblNhdmUoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc1VuZGVyVGVz
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDFhMmQ3MTAwYTVl
YjI4Zjc1YTg0NWVmMjliYTAxOTI1MjczOWNjZTMuLmVmMmUwZjk2MmFlOGMyNmIwMzhmMzYyNTU2
OTBlM2I3N2I3ODMxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0zNTUsNyArMzU1LDMwIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OnNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxl
KQogCiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1
bHRBc3luYygic2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUiX3MsIHsgSlNPTjo6VmFsdWU6
OmNyZWF0ZShtX2RpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKSB9KTsKIH0KLSNlbmRpZgorI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfVEVMRU1FVFJZKQorCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorYm9vbCBXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25z
KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkU2hv
d0V4dGVuc2lvblRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4
dGVuc2lvblRhYklEKQoreworICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRTaG93RXh0ZW5z
aW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRI
aWRlRXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpz
aG93Q29uc29sZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmgKaW5kZXggOTk1YzIyMjQ1YmZmYTRlNWRhMjg2ZjNkY2I2NjYx
MDUzMzJkYTgyMS4uNjI5ZTQ1ZGM2ZjgwYmMyMDI1MDdmYmFhNzg1YjQ1ZTE2NDcyMTAwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJJ
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7
CkBAIC0xNDcsNiArMTUxLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGRpYWdub3N0aWNMb2dnaW5n
QXZhaWxhYmxlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZTsgfQogICAgIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNvbnN0IFdURjo6U3RyaW5nJiBldmVu
dE5hbWUsIGNvbnN0IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rp
b25hcnkmKSBvdmVycmlkZTsKICNlbmRpZgorICAgICAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisgICAgYm9vbCBzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25J
RCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hl
cigpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDdlYjUyNzJhNjA0NDVk
OTAwZTg4M2Q1ZTY1YjQ5ZGRhYjNmN2VmMi4uYTQ3NGZhMjkyMmFhNmM3MmRhMTE4NDRlNGFlY2Iy
ZDE1YjQ3OTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIK
KyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC00OCwzNiArNDksMzggQEAgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIoV2ViQ29yZTo6SW4KICAgICBhdXRvKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJv
bnRlbmRQYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdl
KCpwYWdlKS5pZGVudGlmaWVyKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2VJZGVudGlm
aWVyID0gV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCpwYWdlKS5pZGVudGlmaWVyKCk7CisKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lu
c3BlY3RvclBhZ2VJZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcigpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCitPcHRpb25hbDxJbnNw
ZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OnBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIGlmICghcmVz
dWx0KSB7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0LmVycm9yKCkpIHsKICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZDoKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwogICAgICAgICBjYXNlIFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpFeGVjdXRpb25T
dXNwZW5kZWQ6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Oklu
dGVybmFsRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW50ZXJuYWxFcnJvcjsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKLSAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUKG1fZnJvbnRlbmRDbGllbnQpOwogICAgIGF1
dG8gZ2xvYmFsT2JqZWN0ID0gbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVy
KCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsK
IAogICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOwogICAgIGlmICgh
dmFsdWVPckV4Y2VwdGlvbi5oYXNfdmFsdWUoKSkgewogICAgICAgICBMT0coSW5zcGVjdG9yLCAi
RW5jb3VudGVyZWQgZXhjZXB0aW9uIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6
ICVzIiwgdmFsdWVPckV4Y2VwdGlvbi5lcnJvcigpLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAg
ICAgfQogICAgIAogICAgIC8vIElmIHRoZSBldmFsdWF0aW9uIHJlc3VsdCBpcyBhIHN0cmluZywg
dGhlIGZyb250ZW5kIHJldHVybmVkIGFuIGVycm9yIHN0cmluZy4KQEAgLTg3LDE4ICs5MCwxOCBA
QCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpwYXJzZUluc3BlYwogICAgIGlmIChzY3JpcHRWYWx1ZS5pc1N0cmluZygp
KSB7CiAgICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gc2NyaXB0VmFsdWUudG9XVEZTdHJpbmco
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiQ29udGV4dERlc3Ry
b3llZCJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29u
dGV4dERlc3Ryb3llZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpDb250ZXh0RGVzdHJveWVkOwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJJbnRl
cm5hbEVycm9yIl9zKQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yOworICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludmFs
aWRSZXF1ZXN0Il9zKQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdDsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiUmVn
aXN0cmF0aW9uRmFpbGVkIl9zKQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOwogICAgICAgICBpZiAocmVzdWx0
U3RyaW5nID09ICJOb3RJbXBsZW1lbnRlZCJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ7CiAKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludGVybmFsRXJyb3I7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEw
NiwxMCArMTA5LDEwIEBAIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjCiAKIC8vIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCiAKLXZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JF
eHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBl
eHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJ
bnZhbGlkUmVxdWVzdCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMTksMTEgKzEyMiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0
ZW5zaQogICAgIH07CiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVy
KCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywg
V1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8gcGFyc2Vk
RXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0
aW9uUmVzdWx0KHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFr
VGhpcy0+cGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9y
LnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTMyLDIxICsx
MzUsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3Rl
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4
dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVz
dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1
ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CiAgICAg
bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5k
V2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50
cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
KSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlz
LT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0
KSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUV4dGVu
c2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQocGFyc2VkRXJyb3IudmFsdWUoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNjcsMTAgKzE3MCwxMCBAQCBKU0M6OkpT
T2JqZWN0KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRp
b25SZXN1bHRBc09iamVjdAogICAgIHJldHVybiB2YWx1ZU9yRXhjZXB0aW9uLnZhbHVlKCkuZ2V0
T2JqZWN0KCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpj
cmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lv
bklELCBjb25zdCBTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNw
ZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVh
dGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE4MiwxMSArMTg1LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0CiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNo
ZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZvckV4dGVuc2lv
biJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29u
dGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJy
b3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9u
UmVzdWx0KHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhp
cy0+cGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZh
bHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk1LDE0ICsxOTgs
MTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZv
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQKICAgICAgICAgYXV0byBvYmplY3RSZXN1bHQg
PSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3VsdCk7CiAgICAg
ICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CiAgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAiVW5l
eHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9yRnJvbnRlbmRB
UEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJv
cikpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFr
VGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRH
bG9iYWxPYmplY3QoKTsKICAgICAgICAgSlNDOjpKU1ZhbHVlIGZvdW5kUHJvcGVydHkgPSBvYmpl
Y3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXh0ZW5zaW9uVGFiSUQiX3MpKTsK
ICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5IHx8ICFmb3VuZFByb3BlcnR5LmlzU3RyaW5nKCkp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKSk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5h
bEVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjEwLDEwICsy
MTMsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRh
YkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYs
IGNvbnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRl
U2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lv
bklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJh
bWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3Qg
T3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGll
bnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzMywxNyArMjM2LDE3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9u
dGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImV2YWx1
YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0
byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJv
bnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgaWYg
KCFmcm9udGVuZEdsb2JhbE9iamVjdCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vh
a1RoaXMtPnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChy
ZXN1bHQpKSB7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNl
RXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChyZXN1bHQpKSB7CiAgICAgICAgICAg
ICBhdXRvIGV4Y2VwdGlvbkRldGFpbHMgPSByZXN1bHQudmFsdWUoKS5lcnJvcigpOwogICAgICAg
ICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2
YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4Y2VwdGlvbkRl
dGFpbHMuc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJl
ciwgZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFpbHMubWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RG
OjpudWxsb3B0LCBwYXJzZWRFcnJvcik7CkBAIC0yNTQsNyArMjU3LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3QKICAgICAgICAgYXV0byBvYmplY3RSZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFw
RXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3VsdCk7CiAgICAgICAgIGlmICghb2JqZWN0UmVz
dWx0KSB7CiAgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAiVW5leHBlY3RlZCBub24tb2JqZWN0
IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0
ZW5zaW9uKCkuIik7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVs
bG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChyZXN1bHQudmFsdWUoKSk7CkBAIC0yNjIsNyArMjY1LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlNDOjpKU1ZhbHVlIGVycm9yUGF5bG9hZCA9
IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3QtPnZtKCksICJlcnJvciJfcykpOwogICAg
ICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBpZiAo
IWVycm9yUGF5bG9hZC5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5h
bEVycm9yKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVs
bG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yNzMsNyArMjc2LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFBheWxvYWQg
PSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAicmVzdWx0Il9zKSk7CiAg
ICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9iamVjdCwg
cmVzdWx0UGF5bG9hZCk7CiAgICAgICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVlKSB7Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVy
bmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4MSwxMCAr
Mjg0LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYg
aWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVsb2FkRm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBP
cHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJB
Z2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMDMs
MTggKzMwNiwxOCBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVs
b2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVucwogCiAgICAgbV9mcm9udGVuZENs
aWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFz
eW5jKCJyZWxvYWRGb3JFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+
bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxP
YmplY3QoKTsKICAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0
cm95ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgewotICAgICAg
ICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2
YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwgaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JU
b1N0cmluZygqcGFyc2VkRXJyb3IpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoYXV0byBw
YXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25S
ZXN1bHQocmVzdWx0KSkgeworICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVy
cm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwg
SW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKCpwYXJzZWRFcnJvcikudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwYXJzZWRFcnJvcik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMyw2ICszMjYsMTYgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnMKICAgICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVu
c2lvblRhYklEKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5OjpEaWRTaG93RXh0ZW5zaW9uVGFiIHsgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRh
YklEIH0sIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0
b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OkRpZEhpZGVFeHRlbnNpb25UYWIgeyBleHRlbnNpb25JRCwg
ZXh0ZW5zaW9uVGFiSUQgfSwgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggZjMzMzky
MzVlMGNhMjcxNmE0NmFmZWQ5ODcxNzg4NmU2NTJhNzRkYi4uZTQ2OTY2ZWNmMTgyOTlkODI0MjQz
MmYyNmY5MDI1ODAzMTFjZGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTYzLDE3ICs2NCwyNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlciBJUEMgbWVzc2FnZXMuCi0gICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4m
Jik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lv
bklEJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0
YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+
KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25h
bDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4mKT4mJik7Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUs
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZv
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0
YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYs
IGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZv
aWQgcmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25z
dCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVz
ZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4m
KT4mJik7CisKKyAgICAvLyBDYWxsYmFja3MgZnJvbSB0aGUgZnJvbnRlbmQuCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3Vs
dCk7Ci0gICAgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOworICAgIE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJl
c3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25S
ZXN1bHQpOwogCiAgICAgV2Vha1B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudD4g
bV9mcm9udGVuZENsaWVudDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2luc3BlY3Rv
clBhZ2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4
IDBiNjVlNWNhY2Y0OTA4YWMyMzdlNDVmZjk3ZjA1YmExM2UxZGViNjMuLjQ5MmI0Y2E2NThiNWU4
ODBkZGM5ZjI1YjJmNzIxZDE4OTcxNGU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yMywxMiArMjMsMTIgQEAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKLSAgICBSZWdpc3RlckV4
dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFtZSkgLT4gKEV4cGVj
dGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMK
LSAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4gKEV4cGVjdGVk
PGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAg
ICBSZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFt
ZSkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkg
QXN5bmMKKyAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4gKEV4
cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKIAot
ICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJO
YW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywg
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIEV2YWx1
YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNv
dXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJp
dHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+
IGVycm9yKSBBc3luYwotICAgIFJlbG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQs
IE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudCwg
T3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIENyZWF0ZVRhYkZvckV4dGVu
c2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwg
VVJMIHNvdXJjZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBBc3luYworICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmlu
ZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVS
TCwgT3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEs
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIFJlbG9hZEZvckV4dGVu
c2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBPcHRp
b25hbDxTdHJpbmc+IHVzZXJBZ2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkg
LT4gKE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQo=
</data>
<flag name="commit-queue"
          id="440449"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421574</attachid>
            <date>2021-02-25 15:32:49 -0800</date>
            <delta_ts>2021-02-25 17:02:48 -0800</delta_ts>
            <desc>Patch v2.5 - more UnifiedSources drama</desc>
            <filename>bug-222252-20210225153249.patch</filename>
            <type>text/plain</type>
            <size>124568</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ0MjMwODBjZDY2ZWFl
MTYyMmZhOTBlMDVlMDUxMjI0NWU0MTNkNC4uOTM0NzJhYTA4MTBhMWMxNWI3ZTY5MmZjMzgwMzNj
Y2JiZTZiODliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTIxICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rvcjog
YWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjI1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMDY2ODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEV4cG9zZSBt
ZXRob2RzIHRoYXQgdGhlIGZyb250ZW5kIGNhbiBjYWxsIHRvIHBhc3MgYWxvbmcgZXh0ZW5zaW9u
IGxpZmVjeWNsZSBldmVudHMKKyAgICAgICAgdmlhIHRoZSBmcm9udGVuZCBjbGllbnQuIEFkZCAn
c3VwcG9ydHNXZWJFeHRlbnNpb25zJyB0byBhbGxvdyBmb3IgZmVhdHVyZSBkZXRlY3Rpb24gZnJv
bSBXZWJJbnNwZWN0b3JVSS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnN1
cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYik6CisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnN1
cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKwogMjAyMS0wMi0yNSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFwcGVuZGluZyBh
IHBhcnRpYWwgc2VnbWVudCBvZiBhIFdlYk0gYXVkaW8gZmlsZSByZXN1bHRzIGluIG5vIGFkZGl0
aW9uYWwgc2FtcGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggN2U5MTA4MjAwMTQ0NzI2
NTJiNTliMDFhNzBkNTk5ZjE0OWY3NWVjYS4uNGY2MjkxODFhZWRhMTgyZmRjZWU2ZmVlOWM3NjJj
OWFlYzhmMzRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjEtMDItMjEgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBX
ZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgcmVjZWl2aW5nIFdlYiBFeHRlbnNpb24gZXZl
bnRzIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjUyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MTIwNjY4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6IFVw
ZGF0ZSBjb21tZW50IGZvciBuYW1lc3BhY2UgY2hhbmdlLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRh
Y2hlZCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5w
cm90b3R5cGUuZGV0YWNoZWQpOgorICAgICAgICBXaGVuIGFuIGV4dGVuc2lvbiB0YWIgaXMgc2hv
d24gb3IgaGlkZGVuLCBub3RpZnkgdGhlIGZyb250ZW5kIGhvc3QgYWJvdXQgdGhlIGV2ZW50Lgor
CiAyMDIxLTAyLTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNjkzNTkpOiBTb3VyY2VzOiB0aGUgSW1hZ2Vz
IGZvbGRlciBkb2VzIG5vdCBsb2FkIG1vc3QgaW1hZ2VzIGluIHRoZSBtYWluIGNvbnRlbnQgYXJl
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkYTYzNmJkYzM1MjU3NzZhNDhiNTMyMWNkY2I0ZWZhYTBhNDRiNGM5Li5l
ZTQ0YzVlNDY2MzY2ZjA0N2RlODEwNWZkYzkyOGIxOGRjNDdjN2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1MiBAQAorMjAyMS0wMi0yMSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2Vi
IEV4dGVuc2lvbiBldmVudHMgdmlhIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjA2Njg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmlu
IFJvdXNzby4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgY2xpZW50cyB0
byByZWNlaXZlIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLiBGb3Igbm93IHRoaXMgaW5jbHVk
ZXMKKyAgICAgICAgZXh0ZW5zaW9uIHRhYiBzaG93bi9oaWRkZW4sIGJ1dCB3aWxsIGV2ZW50dWFs
bHkgaW5jbHVkZSBwYWdlIG5hdmlnYXRpb25zIGFuZCBvdGhlciBldmVudHMgZXhwb3NlZAorICAg
ICAgICB2aWEgV2ViIEV4dGVuc2lvbnMgQVBJLgorCisgICAgICAgIFRoaXMgaXMgaW1wbGVtZW50
ZWQgYXQgdGhlIFdlYktpdCBsZXZlbCB2aWEgbmV3IEluc3BlY3RvckZyb250ZW5kQ2xpZW50IG1l
dGhvZHMuIFRoaXMgZ2V0cyBwaXBlZCB0bworICAgICAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSB2aWEgSVBDLCB3aGljaCB0aGVuIHBhc3NlcyBvbiB0aGUgZXZlbnQg
dG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuCisKKyAgICAgICAgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUgaXMgYSBkZWxlZ2F0ZSBvZiBfV0tJbnNwZWN0b3JFeHRlbnNpb24u
IEl0J3MgZm9yIHJlY2VpdmluZyBsaWZlY3ljbGUgZXZlbnRzLCBhbmQKKyAgICAgICAgaXMgaW1w
bGVtZW50ZWQgc2ltaWxhcmx5IHRvIF9XS0luc3BlY3RvckRlbGVnYXRlLiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBub3cga2VlcHMgYSBtYXAgb2YKKyAgICAgICAgZXh0
ZW5zaW9uIEFQSSBvYmplY3RzIHNvIHRoYXQgaXQgY2FuIGNhbGwgb3V0IHRvIHRoZSB0aGUgYXBw
cm9wcmlhdGUgZXh0ZW5zaW9uIEFQSSBvYmplY3QncyBjbGllbnQvZGVsZWdhdGUuCisKKyAgICAg
ICAgVG8gYmV0dGVyIGhhbmRsZSB0aGUgc2l0dWF0aW9uIHdoZXJlIGNsaWVudCBjb21wbGV0aW9u
IGhhbmRsZXJzIG1heSBiZSBpbnZva2VkIGFmdGVyIHRoZSBpbnNwZWN0b3IgcGFnZSBoYXMgYmVl
biB0b3JuIGRvd24sCisgICAgICAgIHN3aXRjaCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSB0byBiZSBSZWZDb3VudGVkIGluc3RlYWQgb2Ygc3RkOjp1bmlxdWVfcHRyIHNv
IHRoYXQgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIEFQSSBvYmplY3QgY2FuIGJlIHJldHJpZXZl
ZCBpbiB0aGUgYXN5bmMgSVBDIHJlcGx5IGJsb2NrLiAoSVBDIG1lc3NhZ2UgcmVjZWl2ZXIgY29k
ZSBrbm93cyBob3cgdG8gcmVmIHRoZSByZWNlaXZlcgorICAgICAgICBpZiBpdCBleHBlY3RzIHRv
IGRlbGl2ZXIgYSByZXNwb25zZSkuCisKKyAgICAgICAgTGFzdGx5LCBzaW5jZSB0aGlzIHBhdGNo
IGludHJvZHVjZXMgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IgYXQgdGhlIFdlYkNvcmUgbGV2ZWws
IEkgZGVjaWRlZCB0byBtb3ZlIHRoZSBjb250ZW50cworICAgICAgICBvZiBJbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5oIHRvIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlLiBJdCBtYWRlIG1vcmUgc2Vu
c2UgdGhhbiB0eXBpbmcgb3V0IFdlYkNvcmU6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yCisgICAg
ICAgIGFuZCB0aGUgbGlrZS4gQXMgcGFydCBvZiB0aGlzIGNoYW5nZSwgdGhlIHN0cmluZyB0eXBl
IGFsaWFzZXMgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCBhbmQgSW5zcGVjdG9yOkV4dGVuc2lvblRh
YklEIGFyZQorICAgICAgICBub3cgZGVmaW5lZCBpbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgQWRkIGdlbmVyYXRlZCBmaWxlcyBmb3Ig
bmV3IG1lc3NhZ2UgcmVjZWl2ZXIuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3
IGZpbGVzIGZvciBpbnNwZWN0b3IgZXh0ZW5zaW9uIGNsaWVudC9kZWxlZ2F0ZSBib2lsZXJwbGF0
ZSBjbGFzc2VzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmg6CisgICAgICAgICogU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRoZXNlIHR5cGVzIGFuZCBoZWxw
ZXJzIHRvIEluc3BlY3RvciBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUluc3BlY3RvckV4dGVuc2lvbi5jcHA6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6c2V0Q2xpZW50KTogQWRkIGEgY2xpZW50IG1lbWJlciB3aGljaCBpcyB1c2VkIHRvIGNhbGwg
b3V0IHRvIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLgorICAgICAgICAoQVBJOjpJbnNw
ZWN0b3JFeHRlbnNpb246OmNyZWF0ZVRhYik6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoQVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0KTogRml4IG5hbWVzcGFjZXMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNp
b25JbnRlcm5hbC5oLgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRp
ZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGll
bnQ6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBBZGp1c3QgdG8gbmV3IHR5cGUgc2lnbmF0dXJlIHRoYXQg
cmV0dXJucyBhbiBpbml0aWFsaXplZCBBUEk6Okluc3BlY3RvckV4dGVuc2lvbi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHJl
Z2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB1bnJlZ2lzdGVy
RXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBBZGp1c3QgdG8gbmV3IHR5
cGUgc2lnbmF0dXJlIHRoYXQgcmV0dXJucyBhbiBpbml0aWFsaXplZCBBUEk6Okluc3BlY3RvckV4
dGVuc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaDogQWRkIHRoZSBkZWxlZ2F0ZSBwcm9wZXJ0eSBhbmQgdXBk
YXRlIGRvY3VtZW50YXRpb24gdG8gbWVudGlvbiBpdHMgaW50ZW5kZWQgdXNhZ2UuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOiBB
ZGQgZGVsZWdhdGUgc3RvcmFnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGRl
bGVnYXRlXSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBzZXREZWxlZ2F0ZTpd
KToKKyAgICAgICAgQWRkZWQuCisKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGNy
ZWF0ZVRhYldpdGhOYW1lOnRhYkljb25VUkw6c291cmNlVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0p
OiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGV2YWx1
YXRlU2NyaXB0OmZyYW1lVVJMOmNvbnRleHRTZWN1cml0eU9yaWdpbjp1c2VDb250ZW50U2NyaXB0
Q29udGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogIEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6OmRlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVu
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6fkluc3BlY3RvckV4
dGVuc2lvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMg
T2JqQy10by1DKysgYnJpZGdlIGNvZGUgdG8gY29ubmVjdCBBUEk6Okluc3BlY3RvckV4dGVuc2lv
bkNsaWVudCAodXNlZCBieSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkK
KyAgICAgICAgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgKHVzZWQgYnkgY2xpZW50
IGNvZGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOiBGaXggbmFtZXNwYWNlcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgTWFrZSB0aGlzIGNsYXNzIGFuIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLiBJdCByZWNlaXZlcyBtZXNzYWdlcyBmb3IgZXh0ZW5zaW9uIGxpZmVjeWNsZSBl
dmVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6Cisg
ICAgICAgIE1ha2UgdGhpcyBjbGFzcyBhbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gSXQgcmVjZWl2
ZXMgbWVzc2FnZXMgZm9yIGV4dGVuc2lvbiBsaWZlY3ljbGUgZXZlbnRzLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIEV4cGFuZCB0aGlzIGNvZGUgb3V0IHNvIHRoYXQgd2UgY2FuIHNh
dmUgQVBJOjpJbnNwZWN0b3JFeHRlbnNpb24gaW5zdGFuY2VzIGludG8gb3VyIG93biBtYXAKKyAg
ICAgICAgYmVmb3JlIHNlbmRpbmcgaXQgdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLiBUaGlzIG1h
cCBrZWVwcyBzdHJvbmcgcmVmZXJlbmNlcyB0byB0aGUgZXh0ZW5zaW9uCisgICAgICAgIEFQSSBv
YmplY3RzIHNpbmNlIHRoZXkgbmVlZCB0byBiZSB1c2VkIHRvIHNlbmQgZXZlbnRzIGF0IGFuIGFy
Yml0cmFyeSB0aW1lIGluIHRoZSBmdXR1cmUuCisgICAgICAgIFByZXZpb3VzbHksIHRoZXkgd2Vy
ZSBrZXB0IGFsaXZlIChvciBub3QpIGJ5IHRoZSBBUEkgY2xpZW50LgorCisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0
ZW5zaW9uKToKKyAgICAgICAgV2hlbiB0aGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZWdpc3Rl
cmVkLCByZW1vdmUgdGhlIGFzc29jaWF0ZWQgZXh0ZW5zaW9uIEFQSSBvYmplY3QgKGFuZAorICAg
ICAgICBvdXIgc3Ryb25nIHJlZmVyZW5jZSB0byBpdCkuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lv
bik6IEZpeCBuYW1lc3BhY2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOiBGaXggbmFt
ZXNwYWNlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZGlkSGlkZUV4dGVuc2lvblRhYik6Cisg
ICAgICAgIEFkZGVkLiBUcnkgdG8gbG9vayB1cCB0aGUgYXNzb2NpYXRlZCBBUEkgb2JqZWN0IGZv
ciB0aGUgZXh0ZW5zaW9uIGFuZCBmb3J3YXJkIHRoZSBldmVudCB0bworICAgICAgICB0aGUgY2xp
ZW50IG9mIHRoZSBBUEkgb2JqZWN0LCB3aGljaCBpcyB1bHRpbWF0ZWx5IF9XS0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclVJ
OjpzdXBwb3J0c1dlYkV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclVJOjpkaWRIaWRlRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQWRkZWQuIERlZmVy
IHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlciB0byBoYW5kbGUgZnVydGhlciBldmVudCBwcm9w
YWdhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZFNob3dFeHRlbnNpb25UYWIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYik6Cisg
ICAgICAgIEFkZGVkLiBEZWZlciB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgdG8gaGFuZGxl
IGZ1cnRoZXIgZXZlbnQgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgIEZpeCBuYW1lc3BhY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOgor
ICAgICAgICBCZSBtb3JlIHByZWNpc2UgYWJvdXQgYXNzb2NpYXRpbmcgdGhpcyBtZXNzYWdlIHJl
Y2VpdmVyIHdpdGggdGhlIGluc3BlY3RvciBwYWdlJ3MgaWRlbnRpZmllci4KKyAgICAgICAgQWxz
bywgc2F2ZSB0aGUgcGFnZSBpZGVudGlmaWVyIHNvIHRoYXQgbWV0aG9kcyB0aGF0IG5lZWQgdG8g
c2VuZCBJUEMgbWVzc2FnZXMgY2FuIHNlbmQKKyAgICAgICAgdGhlIG1lc3NhZ2UgdG8gdGhlIGNv
cnJlY3QgZGVzdGluYXRpb25JRC4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVh
dGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4
dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgorICAgICAgICBGaXggbmFtZXNwYWNl
cy4KKworICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmRpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICBBZGRlZC4K
KwogMjAyMS0wMi0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSBXZWJDb250ZW50IHNhbmRib3ggdG8gYWxsb3cgaXQgdG8gY2FsbCB0YXNrX2NyZWF0
ZV9pZGVudGl0eV90b2tlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFl
MDU3YzU4YTFiMDQuLjdlZmViMWY3ODM4NzA2NTlhNDk0YTY2MzE1NmJhM2UyNDFlNzE5N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oCkBAIC0zOSw2ICszOSwxMyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK3VzaW5nIEV4dGVuc2lvbklEID0gV1RGOjpTdHJp
bmc7Cit1c2luZyBFeHRlbnNpb25UYWJJRCA9IFdURjo6U3RyaW5nOworfQorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwpAQCAtMTEwLDYgKzExNywxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY0V2ZW50KGNv
bnN0IFN0cmluZyYgLyogZXZlbnROYW1lICovLCBjb25zdCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dDo6VmFsdWVEaWN0aW9uYXJ5JikgeyB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIo
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9u
VGFiSUQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYp
IHsgfQorI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3Nh
Z2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCmluZGV4IDE4MGNkYmE4NDUzZTMxYmZmMTVmYmNiOTUyYTdjMTZkYmM1ZjAyOGQu
LjY1Nzc0MjNjYzBjNjRhOWQ2NTYxMWE2ZGY4NzU3OGNmNjZlNmMyMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02NzMs
NCArNjczLDMyIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZl
bnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9URUxFTUVUUlkpCiAKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBw
b3J0c1dlYkV4dGVuc2lvbnMoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
KyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnN1cHBvcnRzV2ViRXh0ZW5zaW9ucygp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRTaG93RXh0
ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIG1fY2xpZW50LT5kaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25U
YWJJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9u
VGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFi
SUQpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1f
Y2xpZW50LT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaAppbmRleCBlMjk4OTNiYjM1NTNhZDU0NjgyOGY3NmI1NDBiZWI4YzZjZWQy
MzVkLi40NTA2NmI5YTgxYWMzM2NkN2JiODc3YWI4OTE5MmYyYjAzNWRjZmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2
LDYgKzEzNiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljRXZlbnQoY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYgcGF5bG9hZCk7CiAjZW5kaWYKIAorICAg
IGJvb2wgc3VwcG9ydHNXZWJFeHRlbnNpb25zKCk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyAgICB2b2lkIGRpZEhpZGVF
eHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb25UYWJJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDE3ZThm
NWI4ZDJhZWM4NTdkYzZmNTcxNjRhZGU3YTE0N2Y5NzQ3NjIuLjMyYzU3NDNhMGU2M2Q1ODIzOTk4
MTNkZGMzMDMwYTgzNDQyNDc5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC05NSw2ICs5NSwxMCBAQAogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNEaWFnbm9zdGljTG9nZ2luZzsKICAgICBb
Q29uZGl0aW9uYWw9SU5TUEVDVE9SX1RFTEVNRVRSWV0gdW5kZWZpbmVkIGxvZ0RpYWdub3N0aWNF
dmVudChET01TdHJpbmcgZXZlbnROYW1lLCBET01TdHJpbmcgY29udGVudCk7CisKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c1dlYkV4dGVuc2lvbnM7CisgICAgW0NvbmRp
dGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRlZmluZWQgZGlkU2hvd0V4dGVuc2lvblRh
YihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmluZyBleHRlbnNpb25UYWJJRCk7CisgICAg
W0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRlZmluZWQgZGlkSGlkZUV4dGVu
c2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmluZyBleHRlbnNpb25UYWJJRCk7
CiB9OwogCiBkaWN0aW9uYXJ5IENvbnRleHRNZW51SXRlbSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvbi5qcwppbmRleCA2ZmJjMzdhZWE3YTE4OTNiMWY3MDJiNTRjYmMyNzA3NThi
ZTk1ZTU0Li44ZWFmZTAzOTI0ZDU5NmFiY2RkZWFiY2MxYmVlYTJlY2EzZDQxYmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKQEAgLTQwLDcgKzQwLDcgQEAgV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uCiAgICAgZ2V0
IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7IH0KIH07CiAKLS8vIE5v
dGU6IHRoZXNlIHZhbHVlcyBhcmUgc3lub255bW91cyB3aXRoIHRoZSB2YWx1ZXMgb2YgZW51bSBj
bGFzcyBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yLgorLy8gTm90ZTogdGhlc2UgdmFs
dWVzIGFyZSBzeW5vbnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3IuCiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlID0g
ewogICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0RGVzdHJveWVkIiwKICAgICBJbnRlcm5h
bEVycm9yOiAiSW50ZXJuYWxFcnJvciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDMzZmRmYTAwZmQ0M2NjMDE5ZmNk
MTRjZmJlOTAxOWY1OTdkMGE4M2UuLjE5MjU1NjdlZmYzYmRiY2RiMjA4MmQ2ODRiOTNkNGJhZGZl
MGJiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDIyIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGF0dGFjaGVkKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9z
dC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRlbnNpb24uZXh0ZW5zaW9uSUQsIHRoaXMu
X2V4dGVuc2lvblRhYklEKTsKKyAgICB9CisKKyAgICBkZXRhY2hlZCgpCisgICAgeworICAgICAg
ICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnN1cHBvcnRzV2ViRXh0ZW5zaW9ucykKKyAgICAg
ICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5kaWRIaWRlRXh0ZW5zaW9uVGFiKHRoaXMuX2V4
dGVuc2lvbi5leHRlbnNpb25JRCwgdGhpcy5fZXh0ZW5zaW9uVGFiSUQpOworCisgICAgICAgIHN1
cGVyLmRldGFjaGVkKCk7CisgICAgfQorCiAgICAgdGFiSW5mbygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGFiSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDQ2MzU1YTExOGYyOTA5M2RlNGYxZDJmNmVmODIwZmRhOWRh
ZWU1ZjUuLjY4YTI2ZDZhNDZjNzlkMDc4NzQ5YjJhNTlmZTMzMWViODhhOTAxMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNDEzLDYg
KzQxMyw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjA0ZTFhNjZlYzgyNGNlNGM0MWM5MmM1MDhmMzVh
MzEyOTVjNzJhLi41YmEyODgxYTU2ZTNiMmIzNDM4MmRjZTAzMWUzNDdkMjg3MWY3YzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5IFwKIAlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKIAlVSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IFwKIAlVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAogCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5IFwKIAlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDk5ZGRlMDBkMWU0NDFlMzMzZjVi
NWY1MjE2MzkyNjU0OGVhOGQzMDguLjA3ZWE0NjVlOGE4N2NiYWZmZGIyZGQ4OTEzYmI0ZGI1M2Rl
NTUxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU3
LDggKzY1Nyw5IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnSlNDOjpN
ZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAg
ICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5o
PiddLAogICAgICAgICAnSVBDOjpTZW1hcGhvcmUnOiBbJyJJUENTZW1hcGhvcmUuaCInXSwKLSAg
ICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclRhcmdldC5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cic6IFsnIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUnOiBbJzxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaD4nXSwKKyAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcic6IFsnPFdlYkNvcmUv
RGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4nXSwKICAgICAgICAgJ01l
ZGlhVGltZSc6IFsnPHd0Zi9NZWRpYVRpbWUuaD4nXSwKQEAgLTc1Myw3ICs3NTQsNiBAQCBkZWYg
aGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBb
JyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
clN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVU
eXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKICAgICAgICAg
J1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6
IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0
aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCBiYjNlZWU4OGRlZmJjNGY4
NzAwYzkwNTZhMjJiYTMxNTI1ZGM5OGFmLi44NjY0OWE3NzExZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3
ZDZjMjdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuY3BwCkBAIC0zMCwyMCArMzAsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci1XVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIGVycm9yKQorV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhF
eHRlbnNpb25FcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7Ci0gICAgY2FzZSBJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICBjYXNlIEV4dGVuc2lv
bkVycm9yOjpJbnRlcm5hbEVycm9yOgogICAgICAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7
Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CisgICAg
Y2FzZSBFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CiAgICAgICAgIHJldHVybiAiSW52
YWxpZFJlcXVlc3QiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZDoKKyAgICBjYXNlIEV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgog
ICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgorICAgIGNhc2UgRXh0ZW5zaW9uRXJy
b3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDoKICAgICAgICAgcmV0dXJuICJSZWdpc3RyYXRpb25GYWls
ZWQiX3M7Ci0gICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6
CisgICAgY2FzZSBFeHRlbnNpb25FcnJvcjo6Tm90SW1wbGVtZW50ZWQ6CiAgICAgICAgIHJldHVy
biAiTm90SW1wbGVtZW50ZWQiX3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
SW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaAppbmRleCBlMjY3Zjg1NzQxNmZkYzRmZmI1MjA5MmYy
NTM3NzU2MThmY2ZjYWRmLi5lNjk1YmIwNWIzNzgwMjg5OTkxODJiNDU4NGQ4OWViZjFmY2Y3MmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgK
QEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9u
RGV0YWlsczsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yIDogdWludDhfdDsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworZW51bSBjbGFz
cyBFeHRlbnNpb25FcnJvciA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEluc3BlY3RvckV4dGVuc2lvblRh
YklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3Ry
aW5nOwotdXNpbmcgSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCA9IEV4cGVjdGVk
PEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj47Cit1c2luZyBFeHRlbnNp
b25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBXVEY6OlN0cmluZzsK
K3VzaW5nIEV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQgPSBFeHBlY3RlZDxFeHBlY3RlZDxSZWZQ
dHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgRXh0ZW5zaW9uRXJyb3I+OwogCi1lbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
IDogdWludDhfdCB7CitlbnVtIGNsYXNzIEV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CiAgICAg
Q29udGV4dERlc3Ryb3llZCwKICAgICBJbnRlcm5hbEVycm9yLAogICAgIEludmFsaWRSZXF1ZXN0
LApAQCAtNTIsMjAgKzUyLDIwIEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3Ig
OiB1aW50OF90IHsKICAgICBOb3RJbXBsZW1lbnRlZCwKIH07CiAKLVdURjo6U3RyaW5nIGluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworV1RG
OjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25FcnJvcik7CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKIG5hbWVzcGFjZSBX
VEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAg
IFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IsCi0gICAgICAgIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAotICAgICAgICBXZWJLaXQ6Oklu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQsCi0gICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVkCisgICAgICAgIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Oklu
dGVybmFsRXJyb3IsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0LAorICAgICAgICBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25G
YWlsZWQsCisgICAgICAgIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Ok5vdEltcGxlbWVudGVk
CiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMWNlNWEzZGMyOTllMTA1
YmMxY2EwNzFhZGEzN2NhNWFjOTdkYWFlLi4wOWI0ZGFkODcwNDIzYzFjM2E2M2I3NjZmMWM1MGE2
YWU5OTE0ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjIsNiArNDIyLDcgQEAgVUlQ
cm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2Ft
ZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAogVUlQcm9jZXNzL0luc3BlY3Rvci9D
b2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0lu
c3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDgzN2ZkODUw
ZjgwZjU1Mjg4ZmFiNGRjYWY0NGRmMzhiMzk1NzJkMjcuLjJhMjAzNzY1NDU4ZGI1NGI3YmRkMzk5
MmY1OTE5OWJhZTI2YmE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC00NSwzMCArNDUsMzUgQEAgUmVmPElu
c3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JFeHRl
bnNpb24oaWRlbnRpZmllciwgZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUs
IGNvbnN0IFdURjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnNldENsaWVudChVbmlxdWVSZWY8
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNs
aWVudC5tb3ZlVG9VbmlxdWVQdHIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmNy
ZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYklj
b25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5jcmVhdGVUYWJGb3JFeHRlbnNpb24o
bV9pZGVudGlmaWVyLCB0YWJOYW1lLCB0YWJJY29uVVJMLCBzb3VyY2VVUkwsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRl
U2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJbnNwZWN0b3JFeHRl
bnNpb246OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNv
bnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJM
PiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVu
dFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+ZXZhbHVhdGVT
Y3JpcHRGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJ
Z25vcmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0
aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5n
PiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9wdGlv
bmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2Vy
QWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgK
aW5kZXggZDU1ZmExYTA4N2Q4NTdhNTQ1OTFjMWViYTgxNWMzOGVhMGNkZWMwMy4uNWRiNDMxY2Zi
MjQyOTRhOTRmYjIzNDBlYjI0MjQwOWQ5NzFiYzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCisjaW5jbHVkZSAiQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KQEAgLTQ2LDE1ICs0NywxOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAg
dm9pZCBjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJM
JiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25UYWJJRCwgV2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2Ny
aXB0KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6
VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRpb25SZXN1bHQpPiYmKTsKLSAgICB2b2lkIHJlbG9hZElnbm9yaW5nQ2FjaGUoY29uc3QgT3B0
aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIHVz
ZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYg
dGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3Vy
Y2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0
aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250
ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShjb25z
dCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5n
PiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0
LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCk+JiYpOworCisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFVu
aXF1ZVJlZjxJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+JiYpOwogCiBwcml2YXRlOgogICAgIElu
c3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOwogCiAgICAgV1RGOjpTdHJp
bmcgbV9pZGVudGlmaWVyOwogICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyUHJveHk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiBtX2NsaWVudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNjE5
MmZhNjg4MTQyMTU1YTBiMzIxMjhmNzkxMjMxMzhlMTg4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2hvd0V4
dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCAxZGY1NDljNDdmNTVl
OGRmNDZiMjgzNmM0N2NiNGViNGYwYTMxMWJmLi5mODcxYjlhMmM3OGRiZTQzYjZkMjQ4NzNiNDU0
ZWRmMGJjMjk2M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3IubW0KQEAgLTE4NywxMyArMTg3LDE5IEBAIC0gKFdLV2ViVmlldyAqKWV4
dGVuc2lvbkhvc3RXZWJWaWV3CiAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0
cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVuc2lv
bihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNpb25JRCA9IHJldGFp
blB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9v
bCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAvLyBJdCBpcyBhbiBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIHByaW9yIHRvIGNyZWF0aW5n
IGEgZnJvbnRlbmQgKGkuZS4sIHdpdGggLWNvbm5lY3Qgb3IgLXNob3cpLgorICAgIGlmICghX2lu
c3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3Bl
Y3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJ
bnZhbGlkUmVxdWVzdCl9XSwgbmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9p
bnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5z
aW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxS
ZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
PiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAg
Y2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9y
S2V5OiBXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9y
KCkpfV0sIG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JU
b1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6SW5zcGVj
dG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3Rl
ZFNlbGYtPl9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpKTsKKyAgICAgICAgY2Fw
dHVyZWRCbG9jayhuaWwsIHdyYXBwZXIocmVzdWx0LnZhbHVlKCkpKTsKICAgICB9KTsKICNlbHNl
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpAQCAtMjAzLDkg
KzIwOSwxNSBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4
dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogLSAodm9pZCl1bnJlZ2lzdGVyRXh0
ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVy
KCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0
aGlzIG1ldGhvZCBwcmlvciB0byBjcmVhdGluZyBhIGZyb250ZW5kIChpLmUuLCB3aXRoIC1jb25u
ZWN0IG9yIC1zaG93KS4KKyAgICBpZiAoIV9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVk
RmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmco
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpfV0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT51
bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNhcHR1
cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTog
V2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1d
KTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmgKaW5kZXggNWU4N2IyNzM1N2VjYjdmNjBiMGYxODMxMDc4ZmI2ZmYxZGM4Nzc1
OS4uODRhNzhiOGM2NWJjMWRmYzJlMTZiNmQ0ZTllY2I0MGFmNmJmYWMxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb24uaApAQCAtMzMsNiArMzMsOCBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitA
cHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKIFdLX0NMQVNTX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSkKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
IDogTlNPYmplY3QKIApAQCAtNDUsOCArNDcsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpKQogICogQHBhcmFtIHRhYkljb25VUkwgVGhlIGxvY2F0aW9uIG9mIGFuIGlt
YWdlIHJlc291cmNlIHRvIHVzZSBmb3IgZGlzcGxheSBpbiB0aGUgY3JlYXRlZCB0YWIncyB0aXRs
ZS4KICAqIEBwYXJhbSBzb3VyY2VVUkwgVGhlIGxvY2F0aW9uIG9mIHRoZSBtYWluIHJlc291cmNl
IHRvIGxvYWQgaW4gdGhlIG5ldyB0YWIncyBpZnJhbWUgYnJvd3NpbmcgY29udGV4dC4KICAqIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGJlIGNhbGxl
ZCB3aGVuIGNyZWF0aW5nIGEgdGFiIHN1Y2NlZWRzIG9yIGZhaWxzLgorICogQGRpc2N1c3Npb24g
VGhlIGluc3BlY3RvclRhYklkZW50aWZpZXIgcHJvdmlkZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFu
ZGxlciBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0YWJzCisgKiB0aGF0IGFyZSBwYXNzZWQgYXMg
YSBwYXJhbWV0ZXIgdG8gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgbWV0aG9kcy4KICAq
LwotLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25V
Ukw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TU3RyaW5nICogX051
bGxhYmxlIGluc3BlY3RvclRhYklEKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpY3JlYXRl
VGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihOU1VSTCAqKXRhYklj
b25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0Vycm9yICogX051bGxhYmxlLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBpbnNwZWN0b3JU
YWJJZGVudGlmaWVyKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLyoqCiAgKiBAYWJzdHJhY3QgRXZh
bHVhdGVzIEphdmFTY3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluc3BlY3RlZCBwYWdlIG9u
IGJlaGFsZiBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgpAQCAtNzIsNiArNzYsMTIgQEAg
V0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogCiBAcHJvcGVydHkgKHJlYWRv
bmx5LCBub25hdG9taWMpIE5TU3RyaW5nICpleHRlbnNpb25JRDsKIAorLyoqCisgKiBAYWJzdHJh
Y3QgQWxsb3dzIHRoZSBjbGllbnQgdG8gcmVjZWl2ZSBleHRlbnNpb24gbGlmZWN5Y2xlIGV2ZW50
cyB0aGF0CisgKiBhcmlzZSBmcm9tIHdpdGhpbiBXZWIgSW5zcGVjdG9yLgorICovCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBk
ZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKwogQGVuZAogCiBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDQzMmI5ODgwYjIy
NDM2NzQ1YzY3NDQ2ZWQyYWZlNjE2OWJlY2Q5NDQuLjIwYjQwYTk2NTE5ZTQzNGM1YzE4YWNiMmI0
ZWE2YTM1ZjBkY2Y1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCIKICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgi
CkBAIC0zMyw4ICszNiw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLQogQGltcGxlbWVu
dGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbgogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTQ5LDEz
ICs1MCwyNiBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVybiAqX2V4dGVu
c2lvbjsKIH0KIAorLSAoaWQgPF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPilkZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30K
KworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
KWRlbGVnYXRlCit7CisgICAgaWYgKCFkZWxlZ2F0ZSAmJiAhX2RlbGVnYXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBfZGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGU+KHNlbGYsIGRlbGVnYXRlKTsKK30KKwogLy8gTUFSSzogQVBJCiAKIC0g
KHZvaWQpY3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihO
U1VSTCAqKXRhYkljb25VUkwgc291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TU3RyaW5nICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgX2V4dGVuc2lvbi0+Y3JlYXRlVGFiKHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJj
ZVVSTCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8V2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25UYWJJRCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVS
TCwgc291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRC
bG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxJbnNwZWN0
b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVyZWRCbG9j
ayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtu
b3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBXZWJLaXQ6
Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7
CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWls
dXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1
bHQuZXJyb3IoKSl9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC02Nyw5ICs4MSw5IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
U291cmNlIGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiB7CiAgICAgT3B0aW9uYWw8
VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBtYWtlT3B0aW9uYWwoVVJMKGZyYW1l
VVJMKSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbENvbnRleHRT
ZWN1cml0eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IG1ha2VPcHRpb25hbChVUkwo
Y29udGV4dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgX2V4dGVuc2lvbi0+
ZXZhbHVhdGVTY3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENv
bnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVT
Y3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1
cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXB0
dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6
IFdlYktpdDo6aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9
XSwgbmlsKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3Ry
aW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtODgsOSArMTAyLDkgQEAgLSAodm9pZClyZWxvYWRJZ25vcmluZ0Nh
Y2hlOihCT09MKWlnbm9yZUNhY2hlIHVzZXJBZ2VudDooTlNTdHJpbmcgKil1c2VyQWdlbnQgaW4K
IHsKICAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsVXNlckFnZW50ID0gdXNlckFnZW50ID8g
bWFrZU9wdGlvbmFsKFN0cmluZyh1c2VyQWdlbnQpKSA6IFdURjo6bnVsbG9wdDsKICAgICBPcHRp
b25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IG1h
a2VPcHRpb25hbChTdHJpbmcoaW5qZWN0ZWRTY3JpcHQpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBf
ZXh0ZW5zaW9uLT5yZWxvYWRJZ25vcmluZ0NhY2hlKGlnbm9yZUNhY2hlLCBvcHRpb25hbFVzZXJB
Z2VudCwgb3B0aW9uYWxJbmplY3RlZFNjcmlwdCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpXSAoV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICBfZXh0ZW5zaW9uLT5yZWxvYWRJZ25vcmluZ0NhY2hlKGlnbm9y
ZUNhY2hlLCBvcHRpb25hbFVzZXJBZ2VudCwgb3B0aW9uYWxJbmplY3RlZFNjcmlwdCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKSB9XSk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSkgfV0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZmU4NDE0ZDFmMDgwZmYyNWE4NDE3NGNhM2Q4NjRiZmNkZDIxYjQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBUQVJHRVRf
T1NfT1NYCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9j
b2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisK
Ky8qKgorICogQGFic3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IGV4dGVuc2lvbiBoYXMgYmVlbiBzaG93bi4KKyAqIEBwYXJhbSBleHRlbnNpb24gVGhlIGV4dGVu
c2lvbiB0aGF0IGNyZWF0ZWQgdGhlIHNob3duIHRhYi4KKyAqIEBwYXJhbSB0YWJJZGVudGlmaWVy
IElkZW50aWZpZXIgZm9yIHRoZSB0YWIgdGhhdCB3YXMgc2hvd24uCisgKi8KKy0gKHZvaWQpaW5z
cGVjdG9yRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkU2hv
d1RhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKKy8qKgorICog
QGFic3RyYWN0IENhbGxlZCB3aGVuIGEgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lv
biBoYXMgYmVlbiBoaWRkZW4uCisgKiBAcGFyYW0gZXh0ZW5zaW9uIFRoZSBleHRlbnNpb24gdGhh
dCBjcmVhdGVkIHRoZSBoaWRkZW4gdGFiLgorICogQHBhcmFtIHRhYklkZW50aWZpZXIgSWRlbnRp
ZmllciBmb3IgdGhlIHRhYiB0aGF0IHdhcyBoaWRkZW4uCisgKi8KKy0gKHZvaWQpaW5zcGVjdG9y
RXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldp
dGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXI7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oCmluZGV4IDBhMGZhYmM4YTM3MDJkMzI3Mjk2ZjU3MTY0MGVjMTcx
ZmM0NTExZGYuLmFlMzE2OTg3OWM2OTdiYWYyYjAzMDE5MjEyYWJkM2NiNzA0YjZkMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2ltcG9y
dCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6
Okluc3BlY3RvckV4dGVuc2lvbj4gewpAQCAtNDEsNiArNDUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBXcmFwcGVyVHJhaXRzPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CiBAaW50ZXJmYWNlIF9X
S0luc3BlY3RvckV4dGVuc2lvbiAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPiBfZGVsZWdh
dGU7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbQppbmRleCA3YThmNjAzZWYyZDE5MGUwZmEwYjU1NTc3ZGM4MDVkMzBiNjNlMGFhLi4wNmUy
ZWVjZTcxMmI1OTI1MGY1MzkwYmRjNDgwMTRiNWQ3ZTUwYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0xNjQsMTYgKzE2NCwyMiBAQCAtIChX
S1dlYlZpZXcgKilleHRlbnNpb25Ib3N0V2ViVmlldwogICAgIHJldHVybiBzZWxmLndlYlZpZXc7
CiB9CiAKLS0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5z
aW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlv
bkhhbmRsZXIKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0
ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFi
bGUpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQotICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNp
b25JRCA9IHJldGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
RXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAvLyBJZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgcHJpb3IgdG8gY3JlYXRp
bmcgYSBmcm9udGVuZCB3aXRoIC1sb2FkRm9yRGVidWdnYWJsZTpiYWNrZW5kQ29tbWFuZHNVUkw6
LCBpdCB3aWxsIG5vdCBzdWNjZWVkLgorICAgIGlmICghbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdCkgfV0sIG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbW90ZUlu
c3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCktPnJlZ2lzdGVyRXh0ZW5zaW9uKGV4
dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRy
KGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRC
bG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxSZWZQdHI8
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgY2FwdHVy
ZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBX
ZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0s
IG5pbCk7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6
ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSkgfV0sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihBUEk6Okluc3BlY3RvckV4
dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxm
LT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSk7CisgICAg
ICAgIGNhcHR1cmVkQmxvY2sobmlsLCB3cmFwcGVyKHJlc3VsdC52YWx1ZSgpKSk7CiAgICAgfSk7
CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKQEAg
LTE4Myw5ICsxODksMTQgQEAgLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJp
bmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKikKIC0gKHZvaWQpdW5yZWdp
c3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVu
c2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIC8vIElmIHRo
aXMgbWV0aG9kIGlzIGNhbGxlZCBwcmlvciB0byBjcmVhdGluZyBhIGZyb250ZW5kIHdpdGggLWxv
YWRGb3JEZWJ1Z2dhYmxlOmJhY2tlbmRDb21tYW5kc1VSTDosIGl0IHdpbGwgbm90IHN1Y2NlZWQu
CisgICAgaWYgKCFtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSB9XSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJv
bGxlcigpLT51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleTogV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5l
cnJvcigpKX1dKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xv
Y2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRv
U3RyaW5nKHJlc3VsdC5lcnJvcigpKSB9XSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29h
L0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTkwZWU3MmVhZjY2OWU5ZTUwNzA4MTQ0OWI2MDA4YjBhOTk2NmI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJBUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CitA
cHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUo
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uICosIGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZT4pOworICAgIH5JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSgpOworCisgICAgUmV0YWluUHRy
PGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAgdm9p
ZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+KTsKKworcHJp
dmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVuc2lv
bkNsaWVudChJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6Okluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudAorICAgICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRp
ZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpIG92ZXJy
aWRlOworCisgICAgICAgIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBtX2luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlOworICAgIH07CisKKyAgICBXZWFrT2JqQ1B0cjxfV0tJbnNwZWN0b3JF
eHRlbnNpb24+IG1faW5zcGVjdG9yRXh0ZW5zaW9uOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3Qgewor
ICAgICAgICBib29sIGluc3BlY3RvckV4dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllciA6
IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlm
aWVyIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29j
b2EvSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMzcyZjk4Y2Uz
MWQwYjI5ZDBhNTljZDYyZmFkMDMwZmI0NDBlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0
ZS5tbQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIgorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6SW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUoX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICppbnNwZWN0b3JFeHRlbnNpb24s
IGlkIDxfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgOiBtX2lu
c3BlY3RvckV4dGVuc2lvbihpbnNwZWN0b3JFeHRlbnNpb24pCisgICAgLCBtX2RlbGVnYXRlKGRl
bGVnYXRlKQoreworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4dGVuc2lvbkRpZFNo
b3dUYWJXaXRoSWRlbnRpZmllciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGluc3BlY3RvckV4dGVuc2lvbjpkaWRTaG93VGFiV2l0aElkZW50aWZpZXI6KV07CisgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRhYldpdGhJZGVudGlm
aWVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRXh0
ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjopXTsKKworICAgIGluc3BlY3RvckV4dGVu
c2lvbi0+X2V4dGVuc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50PigqdGhpcykpOworfQorCitJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZTo6fklu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlKCkgPSBkZWZhdWx0OworCitSZXRhaW5QdHI8aWQgPF9X
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlPj4gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6
OmRlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKworSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4dGVuc2lvbkNsaWVudDo6SW5zcGVjdG9y
RXh0ZW5zaW9uQ2xpZW50KEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAg
ICA6IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6On5JbnNwZWN0
b3JFeHRlbnNpb25DbGllbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbkRlbGVn
YXRlOjpJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFt
X2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckV4
dGVuc2lvbkRpZFNob3dUYWJXaXRoSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1fZGVsZWdhdGU7
CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIGlu
c3BlY3RvckV4dGVuc2lvbjptX2luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1faW5zcGVjdG9y
RXh0ZW5zaW9uLmdldCgpLmdldCgpIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpleHRlbnNpb25U
YWJJRF07Cit9CisKK3ZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU6Okluc3BlY3RvckV4
dGVuc2lvbkNsaWVudDo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRXh0ZW5zaW9uRGlkSGlkZVRh
YldpdGhJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9
IG1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVn
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRXh0ZW5zaW9u
Om1faW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubV9pbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCku
Z2V0KCkgZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOmV4dGVuc2lvblRhYklEXTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmNWEwMjJlYTJlMGM5NzNkYjgzMjlm
MDg4YzU4YzcwMTkzYjA5M2IyLi43ZTAzMDNkZGE5ZTJiZTY3ZmQ2OTRkMjZhNTZmYThhYTI4MTUw
N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQog
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Km1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCi0gICAgbV9leHRlbnNpb25Db250
cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eT4oKm1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZSgqbV9pbnNwZWN0b3JQYWdl
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDBmMWMwOThmNDM1OWQ0
M2U1YmU4NWRmMTdiNmI4NjUzZjEwZWI0MTAuLmE0Mzg5ODRhNjUzNzJlNDdiMTI5OWY1NGM2NmU0
ZWQ1Nzk3NzQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAgIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorICAgIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5KiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9leHRlbnNpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKICAgICAKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkq
IG1faW5zcGVjdG9yUGFnZSB7IG51bGxwdHIgfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKICNl
bmRpZgogICAgIAogICAgIFJlZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eS5jcHAKaW5kZXggMjUwMTAyMjlhYmNkMjY4NGRmNWVjMGJlOWNjNTAyYWFjMzQ0
NzFkZi4uMWJjNjljOTVmNTNkYjYwMWZkMmQ0ZmZmNTZlMjBiMDc3ZDYyNWQwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
RnJvbnRlbmRQYWdlKCkKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JCYXNlVVJMKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQotICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworICAgIG1fZXh0ZW5zaW9uQ29u
dHJvbGxlciA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpjcmVhdGUo
Km1faW5zcGVjdG9yUGFnZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxM2JlYjg5YTdj
NzlhYzEyMWI4NTRhNzk2ODYyNmFkNDViNTJlYzRjLi42YWI3Y2E0ZDEzODAxYjc2MGYzY2M0ODcy
NGQ5ZmM1MDQxYTU2MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvclBhZ2U7IH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLSAgICBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigp
IGNvbnN0IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyAgICBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSogZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXh0ZW5zaW9uQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBi
b29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KQEAg
LTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3Bl
Y3RvckNsaWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CiAj
ZW5kaWYKICAgICAKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDU0YTkyMGZj
YmVmZmI0YjdjMzQxMjZjOTAwMzNkYmNmMzQ1NWFhZmUuLmYzYTU5ODE1MDhkODFjM2U3MjMxMWJk
NDMxMjA3ZDAzNjEyOTRkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQogCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAKQEAgLTM3LDE4ICszOSwyNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpCiAgICAgOiBtX2luc3BlY3RvclBh
Z2UobWFrZVdlYWtQdHIoaW5zcGVjdG9yUGFnZSkpCiB7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2UtPndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQog
eworICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2Fs
bGJhY2tRdWV1ZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQor
ICAgICAgICBjYWxsYmFjaygpOworCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7CiAg
ICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKK30KIAotICAgIGF1dG8gY2FsbGJhY2tzID0g
c3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKLSAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjaygpOworUmVm
PFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFn
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eShpbnNwZWN0b3JQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCkBAIC03NCwzNSArODMsNTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQogCiAv
LyBBUEkKIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRl
ZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1l
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFn
ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9u
IHsgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFtzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vh
a1RoaXMuZ2V0KCkpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+IGV4dGVuc2lvbkFQSU9iamVjdCA9IEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVh
dGUoZXh0ZW5zaW9uSUQsIHN0cm9uZ1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgc3Ryb25nVGhp
cy0+bV9leHRlbnNpb25BUElPYmplY3RNYXAuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25BUElP
YmplY3QuY29weVJlZigpKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShleHRlbnNpb25BUElPYmplY3QpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25J
RCYgZXh0ZW5zaW9uSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29s
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBl
eHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2lu
c3BlY3RvclBhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0
ZW5zaW9uIHsgZXh0ZW5zaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lv
biB7IGV4dGVuc2lvbklEIH0sIFtzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vha1RoaXMuZ2V0KCkp
LCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
UmVnaXN0cmF0aW9uRmFpbGVkKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzdHJvbmdUaGlzLT5tX2V4dGVuc2lvbkFQSU9iamVjdE1hcC50
YWtlKGV4dGVuc2lvbklEKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwg
Y29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3RvckV4dGVuc2lvblRhYklELCBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHRhYk5h
bWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
d2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRl
bnNpb25JRCwgdGFiTmFtZSwgdGFiSWNvblVSTCwgc291cmNlVVJMLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMCwxNSArMTM4LDE1IEBAIHZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmNyZWF0ZVRhYkZvckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3Vy
Y2UsIGNvbnN0IE9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFdU
Rjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25z
dCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVS
TCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwg
Y29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhp
cy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6RXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24ge2V4
dGVuc2lvbklELCBzY3JpcHRTb3VyY2UsIGZyYW1lVVJMLCBjb250ZXh0U2VjdXJpdHlPcmlnaW4s
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0fSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNv
bnN0IE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZv
ckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRT
ZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYgZGV0YWlscywgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJy
b3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzNywxNSArMTY1LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNv
bnN0IEluCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYg
ZXh0ZW5zaW9uSUQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3Rl
ZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdu
b3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9u
YWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgZXh0ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFn
ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWxvYWRGb3JFeHRlbnNpb24g
e2V4dGVuc2lvbklELCBpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0sIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBPcHRp
b25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICB3
ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRl
bnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Niw2
ICsxODQsMzYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckUKICAgICB9KTsKIH0KIAorLy8gV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgorCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpkaWRTaG93RXh0ZW5zaW9u
VGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKK3sKKyAgICBhdXRvIGl0ID0g
bV9leHRlbnNpb25BUElPYmplY3RNYXAuZmluZChleHRlbnNpb25JRCk7CisgICAgaWYgKGl0ID09
IG1fZXh0ZW5zaW9uQVBJT2JqZWN0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IGV4dGVuc2lvbiA9IGl0LT52YWx1ZTsKKyAg
ICBhdXRvIGV4dGVuc2lvbkNsaWVudCA9IGV4dGVuc2lvbi0+Y2xpZW50KCk7CisgICAgaWYgKCFl
eHRlbnNpb25DbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGV4dGVuc2lvbkNsaWVudC0+
ZGlkU2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAgIGF1dG8gaXQgPSBtX2V4dGVuc2lv
bkFQSU9iamVjdE1hcC5maW5kKGV4dGVuc2lvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9leHRlbnNp
b25BUElPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBUEk6
Okluc3BlY3RvckV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gaXQtPnZhbHVlOworICAgIGF1dG8gZXh0
ZW5zaW9uQ2xpZW50ID0gZXh0ZW5zaW9uLT5jbGllbnQoKTsKKyAgICBpZiAoIWV4dGVuc2lvbkNs
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXh0ZW5zaW9uQ2xpZW50LT5kaWRIaWRlRXh0
ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDllMzAyOWFkNTQ0OTg5ODNk
YmZmOWIyOWU3NGY5YTI4Y2YxYTZmY2MuLjdmZTA2Y2E0NzdhNWQ3ZmE4YjgzYmNhMjhjZDU3Yzg5
MzdmOWNmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oCkBAIC0zNCwzMyArMzQsNDggQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBJbnNwZWN0b3JFeHRl
bnNpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZpbmFsCi0gICAg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PgorICAgICwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBjcmVhdGUoV2Vi
UGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJh
dGVkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CisKICAgICAvLyBBUEkuCi0gICAgdm9pZCByZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBjcmVhdGVU
YWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcm
IHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJ
RCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlw
dEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9u
YWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBjb25zdCBPcHRpb25hbDxib29sPiYg
aWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWdp
c3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0
cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4m
Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBj
b25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlw
dFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVS
TD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRl
bnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBp
Z25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworCisgICAgLy8gV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgorICAgIHZv
aWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29u
c3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lv
blRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25UYWJJRCYpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucy4KICAgICB2b2lkIGluc3BlY3Rv
ckZyb250ZW5kTG9hZGVkKCk7CiAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKTsK
KwogICAgIHZvaWQgd2hlbkZyb250ZW5kSGFzTG9hZGVkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAK
ICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9pbnNwZWN0b3JQYWdlOworICAgIEhhc2hNYXA8
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCwgUmVmUHRyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPj4g
bV9leHRlbnNpb25BUElPYmplY3RNYXA7CiAKICAgICAvLyBVc2VkIHRvIHF1ZXVlIGFjdGlvbnMg
c3VjaCBhcyByZWdpc3RlcmluZyBleHRlbnNpb25zIHRoYXQgaGFwcGVuIGVhcmx5IG9uLgogICAg
IC8vIFRoZXJlJ3Mgbm8gcG9pbnQgc2VuZGluZyB0aGVzZSBiZWZvcmUgdGhlIGZyb250ZW5kIGlz
IGZ1bGx5IGxvYWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDJmYmJhNzI2ZmIzYzVh
YmViYWYyODY3MzAyYThjMjdhNjU0NmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgeworICAgIERp
ZFNob3dFeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZXh0ZW5zaW9uVGFi
SUQpCisgICAgRGlkSGlkZUV4dGVuc2lvblRhYihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBl
eHRlbnNpb25UYWJJRCkKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1D
b2xvckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1D
b2xvckNvbnRyb2wuaAppbmRleCAyNGFkNGFhMDcyMjg5YWQ3Zjc3ZjdhMTcyMDRlZTIyZmJmOWZl
ODhmLi5mOTYwMzU3NWE4MGMzZTJkMTJkNmY4NGZmZTBkNDJhMDVhYjJlYTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJv
bC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWxCYXNlLmgi
CiAKK0BjbGFzcyBVSUNvbG9yOwogQGNsYXNzIFdLQ29udGVudFZpZXc7CiAKIEBpbnRlcmZhY2Ug
V0tGb3JtQ29sb3JDb250cm9sIDogV0tGb3JtUGVyaXBoZXJhbEJhc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlMGQ4YWQ2YTUzNzc4
MjgyZGQ1YzNkYTNkN2IxZjkwMjUyZWU1Y2YuLmJiY2QyZmQ2NzI0NmEyNGI2NDEzODdjZTQ2YjI4
MTllMDg0NmE1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTUxNyw2ICsxNTE3LDExIEBACiAJCTk5NTVBNkY1MUM3OTg2RTAwMEVC
NkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMTFDNzk4NjY0MDBFQjZBOTMgLyog
QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTU1QTZGNjFDNzk4NkUz
MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMg
LyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3OTg2
RTUwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMg
LyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovOyB9OworCQk5OTZCMkI5ODI1RTI0NDgy
MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk2QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk2QjJCOTkyNUUyNDQ4
MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkIy
Qjk2MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VzLmggKi87IH07CisJCTk5NkIyQjlBMjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjJCOTcyNUUyNDQ4
MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi87IH07CisJCTk5NkIyQjlEMjVFMjU3RkYwMDcxOTM3OSAvKiBJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk2QjJCOUMyNUUyNTdFRTAwNzE5Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lv
bkRlbGVnYXRlLmggKi87IH07CisJCTk5NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk2QjJCQTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9u
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk5Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTk5Nzk2NTlGMjUzMTBBNDkw
MEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3
OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC00ODgyLDYgKzQ4ODcsMTQgQEAKIAkJOTk1
NUE2RjExQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvbkJhY2tlbmREaXNwYXRj
aGVycy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uQmFja2VuZERp
c3BhdGNoZXJzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5NTVB
NkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1dG9tYXRpb25Qcm90b2NvbE9iamVj
dHMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xP
YmplY3RzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk1NUE2
RjMxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5NkIyQjkzMjVFMjQzMTQw
MDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2
QjJCOTUyNUUyNDQ4MTAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOTYyNUUyNDQ4MjAw
NzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTZCMkI5NzI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjJCOUIyNUUyNTdFRTAwNzE5
Mzc5IC8qIEluc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyogQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhB
QzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQy
MURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9u
Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OTY1OUEy
NTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC03ODYwLDYgKzc4NzMsNyBAQAogCQkJCTkxOTc5
NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAogCQkJCTk5
QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJ
CQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICov
LAorCQkJCTk5NkIyQkEwMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25E
ZWxlZ2F0ZS5oICovLAogCQkJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0
b3JFeHRlbnNpb25Ib3N0LmggKi8sCiAJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9X
S0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAw
QjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCkBAIC05MjA5LDYgKzkyMjMsOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3Bl
Y3RvckRlbGVnYXRlLmggKi8sCiAJCQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3Bl
Y3RvckRlbGVnYXRlLm1tICovLAorCQkJCTk5NkIyQjlDMjVFMjU3RUUwMDcxOTM3OSAvKiBJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAorCQkJCTk5NkIyQjlCMjVFMjU3RUUwMDcxOTM3
OSAvKiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Q29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTIzMCw2ICs5MjQ2LDcgQEAK
IAkJCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCAqLywKIAkJCQk5OUIxNjc1QTI1MkJCQUREMDA3
MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKKwkJ
CQk5OTZCMkI5MzI1RTI0MzE0MDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNE
IC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAw
N0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJE
NjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC05OTg1LDYgKzEwMDAy
LDcgQEAKIAkJCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oICovLAogCQkJCTk5OUI3RjRGMjU1NEJBM0YwMEY0NTBBNCAvKiBBUElJbnNwZWN0
b3JFeHRlbnNpb24uY3BwICovLAogCQkJCTk5QkUzQjEyMjU0MjJGNDEwMEM2NTUxQyAvKiBBUElJ
bnNwZWN0b3JFeHRlbnNpb24uaCAqLywKKwkJCQk5OTZCMkI5RTI1RTI1ODJDMDA3MTkzNzkgLyog
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggKi8sCiAJCQkJMzFCMzYyOTAyMTQxRUFCQzAw
N0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIzNjI4RTIx
NDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJCQk3Q0U0
RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAq
LywKQEAgLTExMDYwLDYgKzExMDc4LDkgQEAKIAkJCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTk5Nzk2NTlCMjUzMTBBNDgw
MEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAorCQkJCTk5NkIyQjk1MjVFMjQ0ODEw
MDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJOTk2QjJCOTYyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQk5OTZCMkI5
NzI1RTI0NDgyMDA3MTkzNzkgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyog
V2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQkJFNDlGMTlCNjZD
NTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJNTFGMDYwREQx
NjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CkBAIC0xMTQ4MSw2ICsxMTUwMiw3IEBACiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8q
IF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2QjJCQTEyNUUyNTkxMTAwNzE5Mzc5IC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5
NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NzIxMzA4NDZBMDBC
MUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3ODgs
NiArMTE4MTAsNyBAQAogCQkJCUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MDUyM0RCQzRCQjAwMjU3ODkyIC8q
IEluc3BlY3RvckJyb3dzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MDIyM0RC
QzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
OTZCMkI5RDI1RTI1N0ZGMDA3MTkzNzkgLyogSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1RTM5MUZEMjE4M0MxRjgwMEM4RkIzMSAvKiBJbnNwZWN0b3JU
YXJnZXRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVCQ0U1REYxQzUwNzY2QTAwQ0RFM0ZB
IC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTIyNzQsNiArMTIyOTcsOCBAQAogCQkJCTk5QjE2NzY0
MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlC
MTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCMkI5OTI1RTI0NDgyMDA3MTkzNzkgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTk2QjJCOUEyNUUyNDQ4MjAwNzE5Mzc5IC8qIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MkIxQkEzOEU2MTAwN0NEMzNEIC8qIFdlYkluc3BlY3Rv
clV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0QTAxODg0RTRGMDAwRUQ4NkRC
IC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDE1Nyw2ICsxNDE4
Miw3IEBACiAJCQkJQzE4RjNBMTUyNTYzMzM0MzAwNzk3RTY2IC8qIFdlYkluc3BlY3RvclByZWZl
cmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5OTc5NjU5RjI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk5NkIy
Qjk4MjVFMjQ0ODIwMDcxOTM3OSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0JCRTRBMDE5QjY2
QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ5MkE3OEEyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYktleWJvYXJkRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MjgwRjMxOTE5OTgyQTAwNkFEOUY5IC8qIFdlYktp
dC5tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IGQxMzkwYmZkNmY2
YmUyMzE1NjY3YzA0ZmQ2YmVjM2Q2YWMxNTUyZGQuLmM3YWM1ZDZiZmYyNjgwN2RlM2VkMWJiZmJh
OTJhMmE4OGYzZDY1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0yNzIsNyArMjcyLDMw
IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxh
YmxlKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3Bh
dGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygic2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUi
X3MsIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShtX2RpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKSB9
KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfVEVMRU1FVFJZKQorCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorYm9vbCBSZW1vdGVXZWJJbnNwZWN0b3JV
STo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0
b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmRpZFNo
b3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKTsKK30KKwordm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYgZXh0ZW5zaW9uVGFiSUQpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+ZGlkSGlkZUV4dGVu
c2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOworfQorI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogV2ViQ29yZTo6UGFnZSogUmVtb3RlV2ViSW5zcGVj
dG9yVUk6OmZyb250ZW5kUGFnZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKaW5kZXggYjhkYTlhOWY4
YTVhNzY2ZDEzNjEyMjZhZjBjNGU4NTYxNjU2YjNkNS4uMDBhM2VlMDFlZDFmNTY5NDI0YTU4ZDVj
NjQ3NjUwYTRmMTk3MWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaApAQCAtMzIsNiArMzIsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2luY2x1ZGUg
Ikluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgRmxvYXRSZWN0OwpAQCAtMzksOCArNDMs
MTAgQEAgY2xhc3MgRmxvYXRSZWN0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOwogY2xhc3MgV2ViUGFnZTsKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI7CisjZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yVUkgZmluYWwKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3RvclVJPgpAQCAtMTA5LDYgKzEx
NSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGU7IH0KICAgICB2b2lk
IGxvZ0RpYWdub3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSYpIG92ZXJyaWRlOwog
I2VuZGlmCisgICAgICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBi
b29sIHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2hvd0V4
dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25UYWJJRCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRh
Yihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25UYWJJRCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBib29sIGNhblNhdmUoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc1VuZGVyVGVzdCgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDFhMmQ3MTAwYTVlYjI4Zjc1YTg0NWVmMjliYTAx
OTI1MjczOWNjZTMuLmVmMmUwZjk2MmFlOGMyNmIwMzhmMzYyNTU2OTBlM2I3N2I3ODMxZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuY3BwCkBAIC0zNTUsNyArMzU1LDMwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldERp
YWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgbV9mcm9udGVu
ZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygic2V0RGlhZ25v
c3RpY0xvZ2dpbmdBdmFpbGFibGUiX3MsIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShtX2RpYWdub3N0
aWNMb2dnaW5nQXZhaWxhYmxlKSB9KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1JfVEVMRU1FVFJZKQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorYm9v
bCBXZWJJbnNwZWN0b3JVSTo6c3VwcG9ydHNXZWJFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkU2hvd0V4dGVuc2lvblRhYihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKQorewor
ICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvbklE
LCBleHRlbnNpb25UYWJJRCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZEhpZGVFeHRl
bnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNp
b25UYWJJRCkKK3sKKyAgICBpZiAoIW1fZXh0ZW5zaW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5kaWRIaWRlRXh0ZW5zaW9uVGFiKGV4
dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93Q29uc29sZSgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
LmgKaW5kZXggOTk1YzIyMjQ1YmZmYTRlNWRhMjg2ZjNkY2I2NjYxMDUzMzJkYTgyMS4uNjI5ZTQ1
ZGM2ZjgwYmMyMDI1MDdmYmFhNzg1YjQ1ZTE2NDcyMTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaApAQCAtMzIsNiArMzIs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CkBAIC0xNDcsNiArMTUxLDEy
IEBAIHB1YmxpYzoKICAgICBib29sIGRpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZTsgfQogICAgIHZvaWQgbG9n
RGlhZ25vc3RpY0V2ZW50KGNvbnN0IFdURjo6U3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rpb25hcnkmKSBvdmVycmlkZTsK
ICNlbmRpZgorICAgICAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAg
Ym9vbCBzdXBwb3J0c1dlYkV4dGVuc2lvbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNob3dF
eHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uVGFiSUQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25U
YWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uVGFiSUQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFj
a2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hlcigpIGZpbmFsIHsgcmV0dXJu
IG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDdlYjUyNzJhNjA0NDVkOTAwZTg4M2Q1ZTY1YjQ5ZGRh
YjNmN2VmMi4uYTQ3NGZhMjkyMmFhNmM3MmRhMTE4NDRlNGFlY2IyZDE1YjQ3OTMxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CkBAIC00OCwzNiArNDksMzggQEAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6SW4K
ICAgICBhdXRvKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CiAgICAg
QVNTRVJUKHBhZ2UpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCpwYWdlKS5pZGVudGlmaWVy
KCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyID0gV2ViUGFnZTo6ZnJv
bUNvcmVQYWdlKCpwYWdlKS5pZGVudGlmaWVyKCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2VJZGVudGlm
aWVyLCAqdGhpcyk7CiB9CiAKIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2VJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25F
cnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCitPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlRXh0ZW5zaW9uRXJy
b3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2
YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIHN3
aXRjaCAocmVzdWx0LmVycm9yKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDoK
LSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZDsKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250
ZXh0RGVzdHJveWVkOwogICAgICAgICBjYXNlIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlcjo6RXZhbHVhdGlvbkVycm9yOjpFeGVjdXRpb25TdXNwZW5kZWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2
YWx1YXRpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRDbGllbnQpOwogICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0g
bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxP
YmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKIAogICAgIGF1dG8gdmFsdWVP
ckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOwogICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbi5o
YXNfdmFsdWUoKSkgewogICAgICAgICBMT0coSW5zcGVjdG9yLCAiRW5jb3VudGVyZWQgZXhjZXB0
aW9uIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwgdmFsdWVPckV4Y2Vw
dGlvbi5lcnJvcigpLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgfQogICAgIAogICAgIC8v
IElmIHRoZSBldmFsdWF0aW9uIHJlc3VsdCBpcyBhIHN0cmluZywgdGhlIGZyb250ZW5kIHJldHVy
bmVkIGFuIGVycm9yIHN0cmluZy4KQEAgLTg3LDE4ICs5MCwxOCBAQCBPcHRpb25hbDxJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJz
ZUluc3BlYwogICAgIGlmIChzY3JpcHRWYWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIGF1dG8g
cmVzdWx0U3RyaW5nID0gc2NyaXB0VmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiQ29udGV4dERlc3Ryb3llZCJfcykKLSAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKKyAg
ICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkOwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJJbnRlcm5hbEVycm9yIl9zKQotICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwor
ICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJy
b3I7CiAgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludmFsaWRSZXF1ZXN0Il9zKQotICAg
ICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdDsK
KyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdDsKICAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiUmVnaXN0cmF0aW9uRmFpbGVkIl9z
KQotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRp
b25GYWlsZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
UmVnaXN0cmF0aW9uRmFpbGVkOwogICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJOb3RJbXBs
ZW1lbnRlZCJfcykKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
Tm90SW1wbGVtZW50ZWQ7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6Tm90SW1wbGVtZW50ZWQ7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAg
ICAgfQogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEwNiwxMCArMTA5LDEwIEBAIE9w
dGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OnBhcnNlSW5zcGVjCiAKIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlciBJUEMgbWVzc2FnZXMuCiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5z
aW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29s
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMTksMTEgKzEyMiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaQogICAgIH07CiAgICAg
bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5k
V2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMp
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkp
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+
cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkp
IHsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VFeHRlbnNp
b25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTMyLDIxICsxMzUsMjEgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3RvckV4dGVuc2kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9u
SUQmIGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIElu
c3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZh
bGlkUmVxdWVzdCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpT
T046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CiAgICAgbV9mcm9udGVuZENsaWVudC0+
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1
bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRp
b25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFy
ZXN1bHQpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKElu
c3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4
dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgeworICAgICAgICBpZiAo
YXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1
YXRpb25SZXN1bHQocmVzdWx0KSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQocGFyc2VkRXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0xNjcsMTAgKzE3MCwxMCBAQCBKU0M6OkpTT2JqZWN0KiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdAog
ICAgIHJldHVybiB2YWx1ZU9yRXhjZXB0aW9uLnZhbHVlKCkuZ2V0T2JqZWN0KCk7CiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcm
IHRhYk5hbWUsIGNvbnN0IFVSTCYgdGFiSWNvblVSTCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JFeHRlbnNpb25UYWJJ
RCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYg
dGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFi
SUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE4MiwxMSArMTg1LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0CiAgICAgfTsKICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1h
bmRXaXRoUmVzdWx0QXN5bmMoImNyZWF0ZVRhYkZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1
bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFy
c2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsK
KyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VFeHRlbnNpb25F
cnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk1LDE0ICsxOTgsMTQgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3JFeHQKICAgICAgICAgYXV0byBvYmplY3RSZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFw
RXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3VsdCk7CiAgICAgICAgIGlmICghb2JqZWN0UmVz
dWx0KSB7CiAgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAiVW5leHBlY3RlZCBub24tb2JqZWN0
IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0
ZW5zaW9uKCkuIik7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcikpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW50ZXJuYWxFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENs
aWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAg
ICAgICAgSlNDOjpKU1ZhbHVlIGZvdW5kUHJvcGVydHkgPSBvYmplY3RSZXN1bHQtPmdldChmcm9u
dGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xv
YmFsT2JqZWN0LT52bSgpLCAiZXh0ZW5zaW9uVGFiSUQiX3MpKTsKICAgICAgICAgaWYgKCFmb3Vu
ZFByb3BlcnR5IHx8ICFmb3VuZFByb3BlcnR5LmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJ
bnRlcm5hbEVycm9yKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjEwLDEwICsyMTMsMTAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0b3JFeHQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPElu
c3BlY3RvckV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlv
bmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpu
dWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzMywxNyArMjM2LDE3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25z
dCBJbnNwZWN0CiAKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIo
KS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5z
aW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxv
cHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxP
YmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVy
KCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9i
amVjdCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChyZXN1bHQpKSB7CisgICAgICAg
IGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9t
RXZhbHVhdGlvblJlc3VsdChyZXN1bHQpKSB7CiAgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkRl
dGFpbHMgPSByZXN1bHQudmFsdWUoKS5lcnJvcigpOwogICAgICAgICAgICAgTE9HKEluc3BlY3Rv
ciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUg
ZnJvbnRlbmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4Y2VwdGlvbkRldGFpbHMuc291cmNlVVJMLnV0
ZjgoKS5kYXRhKCksIGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlciwgZXhjZXB0aW9uRGV0YWls
cy5jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFpbHMubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBwYXJzZWRF
cnJvcik7CkBAIC0yNTQsNyArMjU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAg
ICAgYXV0byBvYmplY3RSZXN1bHQgPSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJlc3VsdEFz
T2JqZWN0KHJlc3VsdCk7CiAgICAgICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CiAgICAgICAgICAg
ICBMT0coSW5zcGVjdG9yLCAiVW5leHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVybmVkIGZy
b20gSW5zcGVjdG9yRnJvbnRlbmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChy
ZXN1bHQudmFsdWUoKSk7CkBAIC0yNjIsNyArMjY1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3QKICAgICAgICAgSlNDOjpKU1ZhbHVlIGVycm9yUGF5bG9hZCA9IG9iamVjdFJlc3VsdC0+Z2V0
KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRl
bmRHbG9iYWxPYmplY3QtPnZtKCksICJlcnJvciJfcykpOwogICAgICAgICBpZiAoIWVycm9yUGF5
bG9hZC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1N0
cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51
bGxvcHQsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCkBAIC0yNzMsNyArMjc2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3QKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFBheWxvYWQgPSBvYmplY3RSZXN1bHQtPmdl
dChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250
ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAicmVzdWx0Il9zKSk7CiAgICAgICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9iamVjdCwgcmVzdWx0UGF5bG9hZCk7CiAg
ICAgICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVlKSB7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Oklu
dGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51
bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4MSwxMCArMjg0LDEwIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9u
SUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5q
ZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdu
b3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9u
YWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
T3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVl
c3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMDMsMTggKzMwNiwxOCBAQCB2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3RvckV4dGVucwogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElE
aXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWxvYWRGb3JFeHRl
bnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRl
eHREZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
YXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAg
aWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERl
c3Ryb3llZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
YXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9y
RnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgewotICAgICAgICAgICAgTE9HKEluc3BlY3Rv
ciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUg
ZnJvbnRlbmQ6ICVzIiwgaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZygqcGFyc2VkRXJy
b3IpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtU
aGlzLT5wYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgewor
ICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdo
aWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwgSW5zcGVjdG9yOjpleHRlbnNp
b25FcnJvclRvU3RyaW5nKCpwYXJzZWRFcnJvcikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihwYXJzZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTMyMyw2ICszMjYsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnMKICAg
ICB9KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZFNo
b3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQs
IGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRTaG93
RXh0ZW5zaW9uVGFiIHsgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9y
UGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6ZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBl
eHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFi
SUQpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHk6OkRpZEhpZGVFeHRlbnNpb25UYWIgeyBleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQgfSwg
bV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggZjMzMzkyMzVlMGNhMjcxNmE0NmFmZWQ5
ODcxNzg4NmU2NTJhNzRkYi4uZTQ2OTY2ZWNmMTgyOTlkODI0MjQzMmYyNmY5MDI1ODAzMTFjZGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTYzLDE3ICs2NCwyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKIAogICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2Fn
ZXMuCi0gICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsK
LSAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25J
RCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3JF
eHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBl
dmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNv
bnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25h
bDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4mKT4m
Jik7Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9u
SUQmLCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsK
KyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25J
RCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwm
IHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0
IE9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxVUkw+JiBjb250ZXh0U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IE9wdGlvbmFsPElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgcmVsb2FkRm9yRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBPcHRpb25hbDxib29sPiYg
aWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CisKKyAgICAvLyBD
YWxsYmFja3MgZnJvbSB0aGUgZnJvbnRlbmQuCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworICAgIHZvaWQgZGlk
SGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSlNDOjpK
U09iamVjdCogdW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7Ci0gICAgT3B0aW9uYWw8
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9t
RXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6
OkV2YWx1YXRpb25SZXN1bHQpOworICAgIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+IHBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwogCiAgICAgV2Vh
a1B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsK
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDBiNjVlNWNhY2Y0OTA4YWMy
MzdlNDVmZjk3ZjA1YmExM2UxZGViNjMuLjQ5MmI0Y2E2NThiNWU4ODBkZGM5ZjI1YjJmNzIxZDE4
OTcxNGU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yMywxMiArMjMsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlciBOb3RSZWZDb3VudGVkIHsKLSAgICBSZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0
ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFtZSkgLT4gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBVbnJlZ2lzdGVyRXh0
ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICBSZWdpc3RlckV4dGVuc2lv
bihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFtZSkgLT4gKEV4cGVjdGVkPGJv
b2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICBVbnJlZ2lz
dGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKIAotICAgIENyZWF0ZVRhYkZvckV4
dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVS
TCwgVVJMIHNvdXJjZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywgV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5z
aW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJM
PiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFs
PGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9w
dGlvbmFsPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwotICAg
IFJlbG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIE9wdGlvbmFsPGJvb2w+IGln
bm9yZUNhY2hlLCBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudCwgT3B0aW9uYWw8U3RyaW5nPiBp
bmplY3RlZFNjcmlwdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+IGVycm9yKSBBc3luYworICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVSTCkgLT4g
KEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3lu
YworICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3Ry
aW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+IGVycm9yKSBBc3luYworICAgIFJlbG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBPcHRpb25hbDxTdHJpbmc+IHVzZXJB
Z2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>