<?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>152087</bug_id>
          
          <creation_ts>2015-12-09 11:41:02 -0800</creation_ts>
          <short_desc>[MediaStream] Expose media capture devices persistent permissions to WebCore</short_desc>
          <delta_ts>2015-12-10 20:08:04 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>152000</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1147886</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-09 11:41:02 -0800</bug_when>
    <thetext>Make it possible for WebCore to check to see if persistent permission to access media capture devices has been granted to the page&apos;s origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147977</commentid>
    <comment_count>1</comment_count>
      <attachid>267052</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-09 15:30:56 -0800</bug_when>
    <thetext>Created attachment 267052
Preliminary patch for the bots.

Patch without useful ChangeLog entries for the bots to mull over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147978</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-09 15:32:08 -0800</bug_when>
    <thetext>Attachment 267052 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 44 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148007</commentid>
    <comment_count>3</comment_count>
      <attachid>267056</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-09 17:04:16 -0800</bug_when>
    <thetext>Created attachment 267056
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148012</commentid>
    <comment_count>4</comment_count>
      <attachid>267056</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-09 17:12:49 -0800</bug_when>
    <thetext>Comment on attachment 267056
Patch.

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

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:86
&gt; +    m_hasUserMediaPermission = access;

Is storing in m_hasUserMediaPermission thread-safe given the callOnMainThread() below?

&gt; Source/WebCore/Modules/mediastream/UserMediaController.h:67
&gt; +inline void UserMediaController::checkUserMediaPermission(Ref&lt;UserMediaPermissionCheck&gt;&amp;&amp; request)

I don&apos;t really like this model of a &quot;check&quot; function taking ownership of the UserMediaPermissionCheck passed in.

&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.cpp:43
&gt; +RefPtr&lt;UserMediaPermissionCheck&gt; UserMediaPermissionCheck::create(Document&amp; document, UserMediaPermissionCheckClient&amp; client)

This should return a Ref&lt;&gt;

&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.cpp:81
&gt; +    m_protector = this;

Weird. Why doesn&apos;t someone own this explicitly?

&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.h:69
&gt; +    RefPtr&lt;UserMediaPermissionCheck&gt; m_protector;

Odd to have this here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148013</commentid>
    <comment_count>5</comment_count>
      <attachid>267056</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-09 17:30:17 -0800</bug_when>
    <thetext>Comment on attachment 267056
Patch.

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

&gt;&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:86
&gt;&gt; +    m_hasUserMediaPermission = access;
&gt; 
&gt; Is storing in m_hasUserMediaPermission thread-safe given the callOnMainThread() below?

Yes, this is the callback from the permission checker so it is called exactly once.

&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaController.h:67
&gt;&gt; +inline void UserMediaController::checkUserMediaPermission(Ref&lt;UserMediaPermissionCheck&gt;&amp;&amp; request)
&gt; 
&gt; I don&apos;t really like this model of a &quot;check&quot; function taking ownership of the UserMediaPermissionCheck passed in.

The check function doesn&apos;t take ownership, it passes it along to the client (the WK1 or WK2 WebUserMediaClient ) which stores it in a map and calls the UI delegate (WK1) or page proxy (WK2).

&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.cpp:43
&gt;&gt; +RefPtr&lt;UserMediaPermissionCheck&gt; UserMediaPermissionCheck::create(Document&amp; document, UserMediaPermissionCheckClient&amp; client)
&gt; 
&gt; This should return a Ref&lt;&gt;

Oops, will fix.

&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.cpp:81
&gt;&gt; +    m_protector = this;
&gt; 
&gt; Weird. Why doesn&apos;t someone own this explicitly?

Actually, the checker is owned by a MediaDevicesRequest so this isn&apos;t necessary. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148038</commentid>
    <comment_count>6</comment_count>
      <attachid>267056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-09 19:26:52 -0800</bug_when>
    <thetext>Comment on attachment 267056
Patch.

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaController.h:67
&gt;&gt;&gt; +inline void UserMediaController::checkUserMediaPermission(Ref&lt;UserMediaPermissionCheck&gt;&amp;&amp; request)
&gt;&gt; 
&gt;&gt; I don&apos;t really like this model of a &quot;check&quot; function taking ownership of the UserMediaPermissionCheck passed in.
&gt; 
&gt; The check function doesn&apos;t take ownership, it passes it along to the client (the WK1 or WK2 WebUserMediaClient ) which stores it in a map and calls the UI delegate (WK1) or page proxy (WK2).

So the argument type should just be UserMediaPermissionCheck&amp; instead of Ref&amp;&amp;. Same for requestUserMediaAccess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148151</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-10 06:36:54 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 267056 [details]
&gt; Patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267056&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaController.h:67
&gt; &gt;&gt;&gt; +inline void UserMediaController::checkUserMediaPermission(Ref&lt;UserMediaPermissionCheck&gt;&amp;&amp; request)
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t really like this model of a &quot;check&quot; function taking ownership of the UserMediaPermissionCheck passed in.
&gt; &gt; 
&gt; &gt; The check function doesn&apos;t take ownership, it passes it along to the client (the WK1 or WK2 WebUserMediaClient ) which stores it in a map and calls the UI delegate (WK1) or page proxy (WK2).
&gt; 
&gt; So the argument type should just be UserMediaPermissionCheck&amp; instead of
&gt; Ref&amp;&amp;. Same for requestUserMediaAccess.

OK, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148152</commentid>
    <comment_count>8</comment_count>
      <attachid>267102</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-10 06:37:24 -0800</bug_when>
    <thetext>Created attachment 267102
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148245</commentid>
    <comment_count>9</comment_count>
      <attachid>267102</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-12-10 10:19:59 -0800</bug_when>
    <thetext>Comment on attachment 267102
Updated patch.

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

r=me with comments.

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:84
&gt; +void MediaDevicesRequest::didCompleteCheck(bool access)

nit: I think we usually name booleans so that they start with something like is/can/should for clarity.

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:91
&gt; +    RefPtr&lt;MediaDevicesRequest&gt; protectedThis(this);

Hmm, this looks unsafe. MediaDevicesRequest is not ThreadSafeRefCounted.

&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.cpp:75
&gt; +    Document* document = downcast&lt;Document&gt;(scriptExecutionContext());

nit: I would prefer:
auto&amp; document = downcast&lt;Document&gt;(*scriptExecutionContext());

&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.h:50
&gt; +class UserMediaPermissionCheck : public ContextDestructionObserver, public RefCounted&lt;UserMediaPermissionCheck&gt; {

Could be final ?

&gt; Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.h:41
&gt; +    static PassRefPtr&lt;UserMediaPermissionCheckProxy&gt; create(UserMediaPermissionRequestManagerProxy&amp; manager, uint64_t userMediaID)

We don&apos;t use PassRefPtr anymore. This should return a Ref&lt;&gt;

&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:63
&gt; +PassRefPtr&lt;UserMediaPermissionCheckProxy&gt; UserMediaPermissionRequestManagerProxy::createUserMediaPermissionCheck(uint64_t userMediaID)

Should return a Ref&lt;&gt;.

&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:65
&gt; +    RefPtr&lt;UserMediaPermissionCheckProxy&gt; request = UserMediaPermissionCheckProxy::create(*this, userMediaID);

Ref&lt;&gt;

&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:66
&gt; +    m_pendingDeviceRequests.add(userMediaID, request.get());

request.ptr()

&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h:40
&gt; +    PassRefPtr&lt;UserMediaPermissionCheckProxy&gt; createUserMediaPermissionCheck(uint64_t userMediaID);

Ref&lt;&gt;

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:90
&gt; +void UserMediaPermissionRequestManager::startUserMediaPermissionCheck(WebCore::UserMediaPermissionCheck&amp; request)

You don&apos;t need the WebCore::

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:92
&gt; +    Document* document = downcast&lt;Document&gt;(request.scriptExecutionContext());

auto*

&gt; Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm:84
&gt; +    DEPRECATED_DEFINE_STATIC_LOCAL(UserMediaCheckMap, requests, ());

static NeverDestroyed&lt;&gt; ?

&gt; Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm:119
&gt; +void WebUserMediaClient::requestUserMediaAccess(UserMediaRequest&amp; prpRequest)

We should get rid of the prp prefix

&gt; Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm:123
&gt; +    UserMediaRequest* request = &amp;prpRequest;

We don&apos;t really need this local variable anymore I believe.

&gt; Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm:153
&gt; +void WebUserMediaClient::checkUserMediaPermission(UserMediaPermissionCheck&amp; prpRequest)

We should drop the prp prefix

&gt; Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm:157
&gt; +    UserMediaPermissionCheck* request = &amp;prpRequest;

Not needed?

&gt; Tools/WebKitTestRunner/TestController.h:289
&gt; +    typedef Vector&lt;std::pair&lt;WKRetainPtr&lt;WKSecurityOriginRef&gt;, WKRetainPtr&lt;WKUserMediaPermissionRequestRef&gt;&gt;&gt; PermissionRequestMap;

Calling this &quot;Map&quot; is a tad confusing. Maybe List or Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148248</commentid>
    <comment_count>10</comment_count>
      <attachid>267102</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-12-10 10:22:12 -0800</bug_when>
    <thetext>Comment on attachment 267102
Updated patch.

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

&gt; Source/WebCore/Modules/mediastream/UserMediaPermissionCheck.h:34
&gt; +#include &lt;wtf/PassRefPtr.h&gt;

Useless include.

&gt; Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.h:31
&gt; +#include &lt;wtf/PassRefPtr.h&gt;

Useless include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148265</commentid>
    <comment_count>11</comment_count>
      <attachid>267116</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-10 11:51:01 -0800</bug_when>
    <thetext>Created attachment 267116
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148266</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-10 11:52:08 -0800</bug_when>
    <thetext>Attachment 267116 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:25:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148280</commentid>
    <comment_count>13</comment_count>
      <attachid>267121</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-10 13:02:08 -0800</bug_when>
    <thetext>Created attachment 267121
Another updated patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148413</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-10 20:08:04 -0800</bug_when>
    <thetext>Committed r193944: https://trac.webkit.org/r193944</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267052</attachid>
            <date>2015-12-09 15:30:56 -0800</date>
            <delta_ts>2015-12-09 17:04:16 -0800</delta_ts>
            <desc>Preliminary patch for the bots.</desc>
            <filename>devices_access_patch_5.txt</filename>
            <type>text/plain</type>
            <size>99647</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTEyLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
RXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6On5NZWRpYURldmljZXNSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVJlcXVlc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFDbGllbnQ6On5Vc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFD
b250cm9sbGVyOjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJNZWRpYUNvbnRyb2xsZXI6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2s6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2s6On5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzZWN1cml0eU9yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OmNvbnRleHREZXN0cm95
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnNldERldmljZUFj
Y2Vzc01vZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrQ2xpZW50Ojp+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2V0Q2xpZW50KToKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptZWRpYVN0cmVhbUNlbnRlck92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Vc2VyTWVkaWFDbGllbnRNb2NrLmg6IFJlbW92ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorCiAyMDE1LTEyLTA4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTGlnaHQgY2xlYW51cCBpbiBUZXh0UGFpbnRlci4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTc1LDYgKzk3NSw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuY3BwCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ29udHJvbGxlci5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuY3BwCiAKICAgICBNb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250
ZW50VXRpbHMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5Mzc3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgTWVkaWFEZXZpY2VzUmVxdWVz
dDo6TWVkaWFEZXZpY2VzUmVxdWVzdAogCiBNZWRpYURldmljZXNSZXF1ZXN0Ojp+TWVkaWFEZXZp
Y2VzUmVxdWVzdCgpCiB7CisgICAgaWYgKG1fcGVybWlzc2lvbkNoZWNrKQorICAgICAgICBtX3Bl
cm1pc3Npb25DaGVjay0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBTZWN1cml0eU9yaWdpbiog
TWVkaWFEZXZpY2VzUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtNjUsMjggKzY3
LDQ0IEBAIFNlY3VyaXR5T3JpZ2luKiBNZWRpYURldmljZXNSZXF1ZXN0OjpzZWMKIHZvaWQgTWVk
aWFEZXZpY2VzUmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICBpZiAobV9wZXJtaXNzaW9u
Q2hlY2spIHsKKyAgICAgICAgbV9wZXJtaXNzaW9uQ2hlY2stPnNldENsaWVudChudWxscHRyKTsK
KyAgICAgICAgbV9wZXJtaXNzaW9uQ2hlY2sgPSBudWxscHRyOworICAgIH0KICAgICBtX3Byb3Rl
Y3RvciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6c3RhcnQoKQog
ewogICAgIG1fcHJvdGVjdG9yID0gdGhpczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyh0aGlzKTsKKyAgICBtX3Bl
cm1pc3Npb25DaGVjayA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6Y3JlYXRlKCpkb3duY2Fz
dDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgKnRoaXMpOworICAgIG1fcGVy
bWlzc2lvbkNoZWNrLT5zdGFydCgpOworfQorCit2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRp
ZENvbXBsZXRlQ2hlY2soYm9vbCBhY2Nlc3MpCit7CisgICAgbV9oYXNVc2VyTWVkaWFQZXJtaXNz
aW9uID0gYWNjZXNzOworCisgICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAg
ICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhwcm90ZWN0ZWRUaGlzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBNZWRpYURl
dmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVJlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmZvVmVj
dG9yJiBjYXB0dXJlZERldmljZXMpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKKyAgICAgICAgbV9wcm90
ZWN0b3IgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgVmVjdG9yPFJl
ZlB0cjxNZWRpYURldmljZUluZm8+PiBkZXZpY2VJbmZvOwogICAgIGZvciAoYXV0byBkZXZpY2Ug
OiBjYXB0dXJlZERldmljZXMpIHsKICAgICAgICAgVHJhY2tTb3VyY2VJbmZvKiB0cmFja0luZm8g
PSBkZXZpY2UuZ2V0KCk7CiAgICAgICAgIFN0cmluZyBkZXZpY2VUeXBlID0gdHJhY2tJbmZvLT5r
aW5kKCkgPT0gVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpBdWRpbyA/IE1lZGlhRGV2aWNl
SW5mbzo6YXVkaW9JbnB1dFR5cGUoKSA6IE1lZGlhRGV2aWNlSW5mbzo6dmlkZW9JbnB1dFR5cGUo
KTsKIAotICAgICAgICAvLyBGSVhNRTogbGFiZWwgaXMgc3VwcG9zZWQgdG8gYmUgZW1wdHkgdW5s
ZXNzIGEgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIGFuIGFjdGl2ZSBNZWRpYVN0cmVhbVRyYWNrIGlu
IHRoZSBjdXJyZW50IGJyb3dzaW5nIGNvbnRleHQsIG9yCi0gICAgICAgIC8vIHBlcnNpc3RlbnQg
cGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlc2UgbG9jYWwgZGV2aWNlcyBoYXMgYmVlbiBncmFudGVk
IHRvIHRoZSBwYWdlJ3Mgb3JpZ2luLgotICAgICAgICBkZXZpY2VJbmZvLmFwcGVuZChNZWRpYURl
dmljZUluZm86OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRyYWNrSW5mby0+bGFi
ZWwoKSwgdHJhY2tJbmZvLT5pZCgpLCB0cmFja0luZm8tPmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkp
OworICAgICAgICBBdG9taWNTdHJpbmcgbGFiZWwgPSBtX2hhc1VzZXJNZWRpYVBlcm1pc3Npb24g
PyB0cmFja0luZm8tPmxhYmVsKCkgOiBlbXB0eUF0b207CisgICAgICAgIGRldmljZUluZm8uYXBw
ZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbGFi
ZWwsIHRyYWNrSW5mby0+aWQoKSwgdHJhY2tJbmZvLT5ncm91cElkKCksIGRldmljZVR5cGUpKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NSw3ICs0
Niw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwogCi1jbGFzcyBNZWRpYURldmljZXNSZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsK
K2NsYXNzIE1lZGlhRGV2aWNlc1JlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50LCBwdWJsaWMgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50LCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFEZXZpY2Vz
OjpFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTYzLDEw
ICs2NCwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ29tcGxldGVSZXF1ZXN0KGNvbnN0IFRy
YWNrU291cmNlSW5mb1ZlY3RvciYpIGZpbmFsOwogCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZpbmFsOworCisgICAg
Ly8gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50CisgICAgdm9pZCBkaWRDb21wbGV0ZUNo
ZWNrKGJvb2wpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgTWVkaWFEZXZpY2VzOjpFbnVtZXJhdGVE
ZXZpY2VzUHJvbWlzZSBtX3Byb21pc2U7CiAgICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+
IG1fcHJvdGVjdG9yOworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IG1fcGVy
bWlzc2lvbkNoZWNrOworCisgICAgYm9vbCBtX2hhc1VzZXJNZWRpYVBlcm1pc3Npb24geyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCShyZXZpc2lv
biAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFBhZ2U7CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s7CiBj
bGFzcyBVc2VyTWVkaWFSZXF1ZXN0OwogCiBjbGFzcyBVc2VyTWVkaWFDbGllbnQgewpAQCAtNDcs
NiArNDgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBY2Nl
c3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
VXNlck1lZGlhQWNjZXNzUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOwogCisgICAgdmly
dHVhbCB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihSZWY8VXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVjayhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKSA9IDA7CisKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5Vc2VyTWVkaWFDbGllbnQoKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIu
aAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNs
dWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCIKICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1
ZXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDYgKzQ0LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhSZWY8VXNlck1lZGlhUmVxdWVzdD4mJik7
CiAgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3Qm
KTsKIAorICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFJlZjxVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2s+JiYpOworICAgIHZvaWQgY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAgICAgc3RhdGljIFVzZXJNZWRpYUNvbnRy
b2xsZXIqIGZyb20oUGFnZSogcGFnZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VXNlck1lZGlhQ29u
dHJvbGxlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkp
OyB9CiAKQEAgLTYwLDYgKzY0LDE2IEBAIGlubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OmNhbmNlbFUKICAgICBtX2NsaWVudC0+Y2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChyZXF1
ZXN0KTsKIH0KIAoraW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6Y2hlY2tVc2VyTWVk
aWFQZXJtaXNzaW9uKFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+JiYgcmVxdWVzdCkKK3sK
KyAgICBtX2NsaWVudC0+Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFdURjo6bW92ZShyZXF1ZXN0
KSk7Cit9CisKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNhbmNlbFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjayhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7Cisg
ICAgbV9jbGllbnQtPmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1ZXN0KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNNZWRpYURldmljZUluZm8uaCIKKyNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrPiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCYgY2xpZW50KQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhkb2N1bWVu
dCwgY2xpZW50KSk7Cit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja0NsaWVudCYgY2xpZW50KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2NsaWVudCgmY2xpZW50KQoreworfQorCitVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2s6On5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soKQoreworfQorCitT
ZWN1cml0eU9yaWdpbiogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzZWN1cml0eU9yaWdpbigp
IGNvbnN0Cit7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0
dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKworICAgIHJl
dHVybiBudWxscHRyOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6Y29udGV4
dERlc3Ryb3llZCgpCit7CisgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHRE
ZXN0cm95ZWQoKTsKKyAgICBtX3Byb3RlY3RvciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrOjpzdGFydCgpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBj
b250cm9sbGVyID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC0+cGFnZSgpKTsK
KyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvdGVjdG9y
ID0gdGhpczsKKyAgICBjb250cm9sbGVyLT5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oKnRoaXMp
OworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2V0SGFzUGVyc2lzdGVudFBl
cm1pc3Npb24oYm9vbCBtb2RlKQoreworICAgIG1faGFzUGVyc2lzdGVudFBlcm1pc3Npb24gPSBt
b2RlOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVD
aGVjayhtX2hhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKTsKKworICAgIG1fcHJvdGVjdG9yID0gbnVs
bHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tfaAorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFNlY3VyaXR5
T3JpZ2luOworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgflVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCgpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlQ2hlY2soYm9vbCkgPSAwOworfTsKKworY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLCBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4gY3JlYXRlKERv
Y3VtZW50JiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50Jik7CisKKyAgICB2aXJ0dWFs
IH5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2
b2lkIHNldENsaWVudChVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIYXNQZXJz
aXN0ZW50UGVybWlzc2lvbihib29sKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrQ2xpZW50Jik7CisKKyAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgorICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisKKyAgICBS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiBtX3Byb3RlY3RvcjsKKyAgICBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQqIG1fY2xpZW50OworCisgICAgYm9vbCBtX2hhc1BlcnNp
c3RlbnRQZXJtaXNzaW9uIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAsNiArMTMwLDggQEAKIAkJMDcyNzdFNTMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJl
YW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcyNzdFNDcxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFjay5oICovOyB9Owog
CQkwNzI3N0U1NDE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDgx
N0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJ
MDcyNzdFNTUxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3N0U0OTE3RDAx
OENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCAqLzsgfTsKKwkJMDcyOTdG
QTcxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5N0ZBNTFDMTg4MUM1
MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAqLzsgc2V0dGluZ3MgPSB7
QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwNzI5N0ZBODFDMTg4MUM1MDAzRjA3MzUgLyogVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzI5N0ZBNjFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDcyQUUxRTUxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBRTFERjE4M0Mw
NzQxMDAwQTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKIAkJMDcyQUUxRTYxODND
MDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyQUUxRTAxODNDMDc0MTAwMEE1
OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tICovOyB9OwogCQkwNzJBRTFFODE4
M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMUUyMTgzQzA3NDEwMDBB
NTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovOyB9OwpAQCAtMTU0LDcgKzE1
Niw3IEBACiAJCTA3Mzc5NEZEMTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc5NEY3
MTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmNwcCAqLzsgfTsKIAkJMDczNzk0
RkUxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc5NEY4MTlGNTg2NEUwMEU1QTA0NSAv
KiBSVENOb3RpZmllcnNNb2NrLmggKi87IH07CiAJCTA3Mzk0RUM4MUJBQjJDQ0QwMEJFOTlDRCAv
KiBNZWRpYURldmljZXNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3Mzk0RUM3MUJBQjJDQ0QwMEJFOTlDRCAvKiBNZWRpYURldmljZXNS
ZXF1ZXN0LmNwcCAqLzsgfTsKLQkJMDczOTRFQ0ExQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2
aWNlc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mzk0RUM5MUJBQjJDRDcwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0LmggKi87
IH07CisJCTA3Mzk0RUNBMUJBQjJDRDcwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM5NEVDOTFC
QUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3M0JFMzQwMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTMzRTE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0
b3JVc2VyTWVkaWEuY3BwICovOyB9OwogCQkwNzNCRTM0MTE3RDE3RTAxMDAyQkQ0MzEgLyogSlNO
YXZpZ2F0b3JVc2VyTWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3M0JFMzNGMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRp
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
M0JFMzQ4MTdEMTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzQyMTdE
MTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCAqLzsgfTsKQEAg
LTExNDgsNyArMTE1MCw2IEBACiAJCTJENzdBQzJCMUJGMkI5ODcwMDcyNDcwQSAvKiBOU1RleHRG
aW5kZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENzdBQzI4MUJGMkI5ODYwMDcyNDcwQSAvKiBOU1RleHRGaW5kZXJTUEkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDc3QUMyRDFCRjJCOUEw
MDA3MjQ3MEEgLyogTlNWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRDc3QUMyQzFCRjJCOUEwMDA3MjQ3MEEgLyogTlNWaWV3U1BJLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ3RUQwQUIx
QkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0VEMEE5MUJBRTk5MTcwMDQzQjNFNSAv
KiBUaW1lckV2ZW50QmFzZWRNb2NrLmggKi87IH07Ci0JCTJEN0VEMEFDMUJBRTk5MTcwMDQzQjNF
NSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBQTFCQUU5OTE3MDA0M0IzRTUgLyogVXNlck1lZGlhQ2xp
ZW50TW9jay5oICovOyB9OwogCQkyRDgyODdGNjE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExv
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEODI4N0Y0MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uY3BwICovOyB9Owog
CQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgyODdGNTE2RTRBMDM4MDA4
NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ4RkVCREMxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3Nz
ZmFkZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEOEZFQkRBMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgKi87
IH07CkBAIC03NDM5LDYgKzc0NDAsOCBAQAogCQkwNzI3N0U0ODE3RDAxOENDMDAxNTUzNEQgLyog
SlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzI3N0U0OTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNr
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRy
YWNrRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyODQ3RTIxNkVCQzVC
MDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
VGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjk3RkE1MUMxODgx
QzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdGQTYxQzE4ODFDNTAwM0YwNzM1IC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcyQUUxREYxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblJlcGxhY2VtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkFFMUUwMTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzJBRTFFMTE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTAwLDcgKzg1
MDMsNiBAQAogCQkyRDc3QUMyODFCRjJCOTg2MDA3MjQ3MEEgLyogTlNUZXh0RmluZGVyU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVGV4dEZpbmRlclNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDc3QUMyQzFCRjJCOUEwMDA3MjQ3MEEgLyogTlNW
aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVmlld1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyog
VGltZXJFdmVudEJhc2VkTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW1lckV2ZW50QmFzZWRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEN0VE
MEFBMUJBRTk5MTcwMDQzQjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYUNsaWVudE1vY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2Nh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0TG9j
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgyODdGNTE2RTRBMDM4
MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDhGRUJEQTE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMDYsNiArMTUyMDgsOCBAQAogCQkJCTA3MjIx
QjhEMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDbGllbnQuaCAqLywKIAkJCQkwNzIyMUI4
RTE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMDcy
MjFCOEYxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuaCAqLywKKwkJCQkw
NzI5N0ZBNTFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAq
LywKKwkJCQkwNzI5N0ZBNjFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmggKi8sCiAJCQkJMDcyMjFCOTAxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYVJlcXVl
c3QuY3BwICovLAogCQkJCTA3MjIxQjkxMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFSZXF1
ZXN0LmggKi8sCiAJCQkpOwpAQCAtMTcxNTMsNyArMTcxNTcsNiBAQAogCQkJCTBGRTcxNDAzMTQy
MTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwICovLAogCQkJCTBGRTcxNDA0
MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCAqLywKIAkJCQkyRDdFRDBB
OTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5oICovLAotCQkJCTJEN0VE
MEFBMUJBRTk5MTcwMDQzQjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IG1vY2s7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjYxOTgsNiAr
MjYyMDEsNyBAQAogCQkJCUNEQUI2RDJFMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJv
bHNIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNTk3NDFEQjFCN0QxNDAxMDAyMDFDOTIgLyog
SlNNZWRpYURldmljZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTE1NzM5QkJCMUI0MjAxMkQw
MEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcyOTdGQTgx
QzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQyM0ExMjYxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTQxOTBDRDY4MjY5MDBGQURBNzUg
LyogSlNNZWRpYUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNDMzlCNzBDMEQzRDhEMDA1
RjREN0EgLyogSlNNZWRpYUxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjc4OTcsNyArMjc5MDEs
NiBAQAogCQkJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkyMDM5ODMxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJ
bnB1dEJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MkUxN0QxNEQxQzAwNDIwQUEx
IC8qIFVzZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkQ3RUQwQUMxQkFFOTkx
NzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
OEUwOTJGMTdEMTREMUMwMDQyMEFBMSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkzMDE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlhUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzQjc5NzIxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNz
YWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY5MSw2ICsyOTY5NCw3IEBACiAJCQkJ
NTE3MTM5MDUxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRh
YmxlVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFBNTgzNzgwMDRB
REI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcyOTdGQTcx
QzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjQ2NDk3MTFEODIzNDkwMDY0NTVCMCAvKiBK
U0RPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0NjQ5QzExRDgyMzhDMDA2
NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2su
aAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Vc2Vy
TWVkaWFDbGllbnRNb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVc2VyTWVkaWFDbGllbnRN
b2NrX2gKLSNkZWZpbmUgVXNlck1lZGlhQ2xpZW50TW9ja19oCi0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jaW5jbHVkZSAiVGltZXJFdmVudEJhc2VkTW9jay5oIgotI2luY2x1ZGUgIlVz
ZXJNZWRpYUNsaWVudC5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIgOiBw
dWJsaWMgTW9ja05vdGlmaWVyIHsKLXB1YmxpYzoKLSAgICBVc2VyTWVkaWFDbGllbnRSZXF1ZXN0
Tm90aWZpZXIoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcmVxdWVzdCwgYm9vbCByZXF1ZXN0U3Vj
Y2VzcykKLSAgICAgICAgOiBtX3JlcXVlc3QoV1RGOjptb3ZlKHJlcXVlc3QpKQotICAgICAgICAs
IG1fcmVxdWVzdFN1Y2Nlc3MocmVxdWVzdFN1Y2Nlc3MpCi0gICAgewotICAgIH0KLQotICAgIHZv
aWQgZmlyZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoIW1fcmVxdWVzdFN1Y2Nlc3Mp
IHsKLSAgICAgICAgICAgIG1fcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGF1ZGlvRGV2aWNlVUlE
cyA9IG1fcmVxdWVzdC0+YXVkaW9EZXZpY2VVSURzKCk7Ci0gICAgICAgIGF1dG8gdmlkZW9EZXZp
Y2VVSURzICA9IG1fcmVxdWVzdC0+dmlkZW9EZXZpY2VVSURzKCk7Ci0gICAgICAgIFN0cmluZyBh
bGxvd2VkQXVkaW9VSUQgPSBhdWRpb0RldmljZVVJRHMuc2l6ZSgpID8gYXVkaW9EZXZpY2VVSURz
LmF0KDApIDogZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgU3RyaW5nIHZpZGVvQXVkaW9VSUQgPSB2
aWRlb0RldmljZVVJRHMuc2l6ZSgpID8gdmlkZW9EZXZpY2VVSURzLmF0KDApIDogZW1wdHlTdHJp
bmcoKTsKLQotICAgICAgICBtX3JlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoYWxsb3dl
ZEF1ZGlvVUlELCB2aWRlb0F1ZGlvVUlEKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmPFVz
ZXJNZWRpYVJlcXVlc3Q+IG1fcmVxdWVzdDsKLSAgICBib29sIG1fcmVxdWVzdFN1Y2Nlc3M7Ci19
OwotCi1jbGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrIGZpbmFsIDogcHVibGljIFVzZXJNZWRpYUNs
aWVudCwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgewotcHVibGljOgotICAgIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRp
YUFjY2VzcyhSZWY8VXNlck1lZGlhUmVxdWVzdD4mJiByZXF1ZXN0KSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgUmVmUHRyPFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcj4gbm90aWZpZXIg
PSBhZG9wdFJlZihuZXcgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyKFdURjo6bW92ZShy
ZXF1ZXN0KSwgdHJ1ZSkpOwotICAgICAgICBtX3RpbWVyRXZlbnRzLmFwcGVuZChhZG9wdFJlZihu
ZXcgVGltZXJFdmVudCh0aGlzLCBub3RpZmllcikpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUmVmUHRyPFVzZXJNZWRpYUNsaWVudFJlcXVlc3RO
b3RpZmllcj4gbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5v
dGlmaWVyKHJlcXVlc3QsIGZhbHNlKSk7Ci0gICAgICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFk
b3B0UmVmKG5ldyBUaW1lckV2ZW50KHRoaXMsIG5vdGlmaWVyKSkpOwotICAgIH0KLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
LSNlbmRpZiAvLyBVc2VyTWVkaWFDbGllbnRNb2NrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw2IEBACiAjaW5j
bHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKICNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suaCIK
LSNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBAQAorMjAxNS0x
Mi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBb
TWVkaWFTdHJlYW1dIEV4cG9zZSBtZWRpYSBjYXB0dXJlIGRldmljZXMgcGVyc2lzdGVudCBwZXJt
aXNzaW9ucyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTIwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bk9wZW5Q
YW5lbCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGlj
eUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6
OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgIChBUEk6OlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrR2V0VHlwZUlEKToKKyAgICAgICAgKFdLVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrU2V0SGFzUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eTo6c2V0SGFzUGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRl
UmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lv
bkRlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmNyZWF0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRDb21wbGV0
ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2Vy
TWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlz
c2lvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpzdGFydFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFBY2Nl
c3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpjaGVja1Vz
ZXJNZWRpYVBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6
OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNS0xMi0wOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIFJlbmFtZSBVc2VyTWVkaWFD
bGllbnQgYW5kIFVzZXJNZWRpYUNvbnRyb2xsZXIgbWV0aG9kcwpJbmRleDogU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogICAgIFVJUHJvY2Vzcy9TdGF0
aXN0aWNzUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNw
cAorICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKICAgICBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiAgICAg
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCiAgICAgVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC00NTQsNiArNDU1LDcgQEAgc2V0KFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2
ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKICAgICAg
ICAgVXNlckNvbnRlbnRFeHRlbnNpb24sCiAgICAgICAgIFVzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmUsCisgICAgICAgIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaywKICAgICAgICAgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIFZpYnJhdGlvbiwKICAgICAgICAgVmlld3BvcnRB
dHRyaWJ1dGVzLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNp
b24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tTZXNzaW9uU3RhdAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyQ29udGVudENv
bnRyb2xsZXIqIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlKiBXS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250ZW50Rmls
dGVyKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sqIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLVXNlclNjcmlwdCogV0tVc2VyU2NyaXB0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tWaWJyYXRpb24qIFdLVmlicmF0aW9uUmVmOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgiCisK
KyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OlVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCkKKyAgICA6IG1fbWFuYWdlcigm
bWFuYWdlcikKKyAgICAsIG1fdXNlck1lZGlhSUQodXNlck1lZGlhSUQpCit7Cit9CisKK3ZvaWQg
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9u
KGJvb2wgYWxsb3dlZCkKK3sKKyAgICBBU1NFUlQobV9tYW5hZ2VyKTsKKyAgICBpZiAoIW1fbWFu
YWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tYW5hZ2VyLT5kaWRDb21wbGV0ZVVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjayhtX3VzZXJNZWRpYUlELCBhbGxvd2VkKTsKKyAgICBtX21hbmFn
ZXIgPSBudWxscHRyOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Ojpp
bnZhbGlkYXRlKCkKK3sKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eV9o
CisjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5X2gKKworI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk7CisKK2NsYXNzIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IGNyZWF0ZShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1l
ZGlhSUQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlEKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihib29sIGFsbG93ZWQpOworICAgIHZvaWQgaW52
YWxpZGF0ZSgpOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1l
ZGlhSUQpOworCisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqIG1f
bWFuYWdlcjsKKyAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eV9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDE5Mzc3
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE2ICszMiwxNiBAQCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6CiAKIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiB7Ci0gICAg
Zm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisgICAgZm9y
IChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMudmFsdWVzKCkpCiAg
ICAgICAgIHJlcXVlc3QtPmludmFsaWRhdGUoKTsKIAotICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNs
ZWFyKCk7CisgICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuY2xlYXIoKTsKIH0KIAogUGFz
c1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHZpZGVvRGV2aWNlVUlEcykKIHsKICAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlEcywgdmlkZW9EZXZpY2VV
SURzKTsKLSAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQsIHJlcXVlc3QuZ2V0
KCkpOworICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwgcmVx
dWVzdC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC01MCw3
ICs1MCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHIKICAgICBp
ZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9wZW5k
aW5nUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCkpCisgICAgaWYgKCFtX3BlbmRpbmdVc2VyTWVk
aWFSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKQEAgLTYwLDQgKzYwLDI2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHIKICNlbmRpZgogfQogCitQYXNzUmVmUHRyPFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6Y3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90IHVzZXJNZWRpYUlEKQor
eworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4gcmVxdWVzdCA9IFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRpYUlEKTsK
KyAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQsIHJlcXVlc3QuZ2V0
KCkpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKwordm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAo
IW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wZW5kaW5n
RGV2aWNlUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCkpCisgICAgICAgIHJldHVybjsKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1c2VyTWVkaWFJ
RCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShh
bGxvd2VkKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogI2lmbmRlZiBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCiAjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5X2gKIAorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTMyLDE0ICszMywxNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0cygpOwogCi0gICAgLy8gQ3JlYXRlIGEgcmVxdWVz
dCB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuCiAgICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKLQotICAgIC8vIENhbGxlZCBieSBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5IHdoZW4gYSBkZWNpc2lvbiBpcyBtYWRlIGJ5IHRoZSB1c2VyLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwg
Ym9vbCBhbGxvdywgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2
aWRlb0RldmljZVVJRCk7CiAKKworICAgIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHk+IGNyZWF0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50NjRfdCB1c2VyTWVk
aWFJRCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50
NjRfdCwgYm9vbCBhbGxvdyk7CisKIHByaXZhdGU6Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+PiBtX3BlbmRpbmdSZXF1ZXN0czsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4+IG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4+IG1fcGVuZGluZ0RldmljZVJl
cXVlc3RzOwogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjU5LDYgKzUyNTksMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQ
ZXJtaQogICAgICAgICByZXF1ZXN0LT5kZW55KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCit7CisgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOworCisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKSk7CisgICAgUmVmUHRyPFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5PiByZXF1ZXN0ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVzZXJNZWRpYUlEKTsK
KworICAgIGlmICghbV91aUNsaWVudC0+Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2lu
KCp0aGlzLCAqZnJhbWUsICpvcmlnaW4uZ2V0KCksICpyZXF1ZXN0LmdldCgpKSkKKyAgICAgICAg
cmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oZmFsc2UpOworfQorCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24odWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAgICBpZiAoIWlzUmVxdWVzdElE
VmFsaWQocmVxdWVzdElEKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5MCw2ICsxMTkwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBn
ZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7
CiAKICAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3Qg
dXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmlkZW9EZXZpY2VVSURzKTsKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZv
ckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJ1bk1vZGFsKCk7CiAgICAgdm9pZCBub3RpZnlT
Y3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYgKzI2Miw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAj
IE1lZGlhU3RlYW0gbWVzc2FnZXMKICAgICBSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZy
YW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllciwgVmVjdG9yPFN0cmluZz4gYXVkaW9EZXZpY2VVSURzLCBWZWN0b3I8U3RyaW5n
PiB2aWRlb0RldmljZVVJRHMpCisgICAgQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
dWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyKQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdlcwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkocmV2aXNpb24gMTkzNzc5
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBOYXRpdmVXZWJX
aGVlbEV2ZW50OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk7CiBj
bGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTMxLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViS2l0OjpXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFNlY3VyaXR5T3JpZ2lu
KiwgV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYs
IFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBTZWN1
cml0eU9yaWdpbiosIFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqKSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgLy8gUHJpbnRpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDYgKzc0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3Mg
RG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTsKQEAgLTE2MSw2ICsxNjIsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJl
ZiwgV2ViCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZVJlZiwgQVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlKQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYsIEFQSTo6VXNlckNvbnRl
bnRFeHRlbnNpb24pCitXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tSZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6OlVzZXJT
Y3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblBy
b3h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJl
dmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE3LDYgKzIwMTcsMTUgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAorICAgICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
T3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmIHJlcXVl
c3QpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY2hlY2tV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgbV9jbGllbnQuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKCZy
ZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9s
aWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBB
UEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVu
dC5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VQ
aW5uZWRTdGF0ZURpZENoYW5nZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoYW5n
ZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9y
aWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcGVybWlzc2lv
blJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDaGVj
a1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1JlZiBkZXZpY2VzUmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VEaWRDbGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2VDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0YWRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogCkBAIC01NDUsNiArNTQ2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQ
YWdlVUlDbGllbnRWNiB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CiAgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW47CiB9IFdLUGFnZVVJQ2xpZW50VjY7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2suaCIKKworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgor
I2luY2x1ZGUgIldLTXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eTo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tT
ZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiB1
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgYm9vbCBhbGxvd2VkKQoreworICAgIHRvSW1w
bCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPnNldEhhc1BlcnNpc3RlbnRQZXJtaXNz
aW9uKGFsbG93ZWQpOworfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tfaAorI2RlZmluZSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja19oCisK
KyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrU2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tSZWYsIGJvb2wpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
LyogV0tNZWRpYURldmljZXNSZXF1ZXN0X2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsMTAgQEAKIAkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8q
IEFQSUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi87IH07
CiAJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTcxOEUyNUFFMTAwQ0Ux
Rjg4IC8qIEZpbmRDbGllbnQubW0gKi87IH07CiAJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAv
KiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovOyB9OworCQkw
NzI5N0Y5RTFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdG
OUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCAq
Lzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwNzI5N0Y5RjFDMTdCQkVB
MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RjlEMUMxN0JCRUEwMDNGMDcz
NSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07CisJCTA3Mjk3RkEyMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2suY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJ
CTA3Mjk3RkEzMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGQTEx
QzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FE
RjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJ
Q29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMEYwQzM2NTgxOEMwNTFCQTAwRjYwN0Q3IC8q
IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbSAqLzsgfTsKIAkJMEYwQzM2NUExOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVy
UmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmgg
Ki87IH07CkBAIC0yMTY3LDYgKzIxNzEsMTAgQEAKIAkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4
IC8qIEFQSUZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
RmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxNzE4RTI1
QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEZpbmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjk3RkEwMUMxODZB
REIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAv
KiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5
MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjdENkE1RkU4NDAzMDdD
MDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBLaXQuZnJh
bWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTYxODUsNiArNjE5Myw4IEBACiAJ
CQkJQkMwNkY0MzkxMkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eS5jcHAgKi8sCiAJCQkJQkMwNkY0MzgxMkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovLAogCQkJCTMxNjA3RjM4MTk2MjcwMDIwMDlC
ODdEQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKKwkJCQkwNzI5N0Y5QzFDMTdC
QkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwICovLAorCQkJ
CTA3Mjk3RjlEMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5oICovLAogCQkJCUJDNkVEQUE1MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi8s
CiAJCQkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovLAog
CQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8sCkBAIC02
NDgxLDYgKzY0OTEsOCBAQAogCQkJCTdDODlEMjlFMUE2Nzg1NTQwMDNBNUZERSAvKiBXS1VzZXJD
b250ZW50Q29udHJvbGxlclJlZi5oICovLAogCQkJCTdDMjQxMzA2MUFBQ0ZDQjQwMEE1OEMxNSAv
KiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwICovLAogCQkJCTdDMjQxMzA3MUFB
Q0ZDQjQwMEE1OEMxNSAvKiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuaCAqLywKKwkJ
CQkwNzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
Y3BwICovLAorCQkJCTA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVjay5oICovLAogCQkJCTRBNDEwRjM1MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAqLywKIAkJCQk0QTQxMEYzNjE5QUY3QUMzMDAyRUJB
QjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovLAogCQkJCTdDODlEMkExMUE2
Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuY3BwICovLApAQCAtNzc3NCw2ICs3Nzg2
LDcgQEAKIAkJCQlCQzA2RjQzQTEyREJDQ0ZCMDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBNDE4ODRFNEYwMDBF
RDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4MEND
RDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkFEMTI0N0U3OEQwMEJDMEVDNCAvKiBIYW5kbGVN
ZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NUExQjFCMzM2ODI3MDA1Njc0NUIgLyog
SGFuZ0RldGVjdGlvbkRpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y5MERFMzEzNzY1
NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBA
IC04MjY2LDYgKzgyNzksNyBAQAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU1RjYx
MjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M5MzhFMTExODBERTQ0
MDA4NUU1RkUgLyogV0tDb250ZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUZCNUYz
OTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzMDkzNDVCMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAwODQsNiArMTAwOTgsNyBAQAogCQkJCUJDNTRDQzEzMTJENjc0RUUw
MDVDNjdCMCAvKiBXS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzA2RjQ0RjEyREJERjNGMDAyRDc4REUgLyogV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MTk5MTJENkNEMTIwMDEyQTcyQSAvKiBXS0dl
b2xvY2F0aW9uUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcyOTdGQTIxQzE4NkFE
QjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQ0I0RTUwMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1MTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYxNzRBQTcxNDJBQUM2MTAwMzkyNTBGIC8qIFdLR2VvbWV0cnkuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0xMDA5OCw2ICsxMDExMyw3IEBACiAJCQkJMEYzQzcyNUMxOTZGNjA1MjAwQUVE
RDBDIC8qIFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1
NDI5M0E1MTk1QTQzREQwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVj
b2duaXplci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMxNUNEMTgwMDlFNzAzMSAv
KiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcyOTdG
OUUxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMzRDNBM0I1MTMzOTYwMEIwMDcwOUJFNCAvKiBXS01lZGlhQ2Fj
aGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM5OEM0OEE5MUI2RkQ1QjUwMDE0NTEw
MyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
OUNENDM5RTFCNEIwMjUzMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OlVzZXJNCiB7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpzdGFydFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFVzZXJNZWRpYVJlcXVlc3QoVXNl
ck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4ocmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOwpAQCAt
NTYsOCArNTYsOCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAg
ICAgfQogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQoKTsKLSAg
ICBtX2lkVG9SZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKLSAgICBtX3JlcXVl
c3RUb0lETWFwLmFkZCgmcmVxdWVzdCwgcmVxdWVzdElEKTsKKyAgICBtX2lkVG9Vc2VyTWVkaWFS
ZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKKyAgICBtX3VzZXJNZWRpYVJlcXVl
c3RUb0lETWFwLmFkZCgmcmVxdWVzdCwgcmVxdWVzdElEKTsKIAogICAgIFdlYkZyYW1lKiB3ZWJG
cmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CiAgICAgQVNTRVJUKHdlYkZy
YW1lKTsKQEAgLTY2LDIwICs2NiwyMCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6CiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVz
dFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlE
KCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHJlcXVlc3QuYXVkaW9EZXZpY2VVSURz
KCksIHJlcXVlc3QudmlkZW9EZXZpY2VVSURzKCkpKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVx
dWVzdCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxVc2Vy
TWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgdWludDY0X3Qg
cmVxdWVzdElEID0gbV9yZXF1ZXN0VG9JRE1hcC50YWtlKCZyZXF1ZXN0KTsKKyAgICB1aW50NjRf
dCByZXF1ZXN0SUQgPSBtX3VzZXJNZWRpYVJlcXVlc3RUb0lETWFwLnRha2UoJnJlcXVlc3QpOwog
ICAgIGlmICghcmVxdWVzdElEKQogICAgICAgICByZXR1cm47Ci0gICAgbV9pZFRvUmVxdWVzdE1h
cC5yZW1vdmUocmVxdWVzdElEKTsKKyAgICBtX2lkVG9Vc2VyTWVkaWFSZXF1ZXN0TWFwLnJlbW92
ZShyZXF1ZXN0SUQpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3Ry
aW5nJiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVx
dWVzdCA9IG1faWRUb1JlcXVlc3RNYXAudGFrZShyZXF1ZXN0SUQpOworICAgIFJlZlB0cjxVc2Vy
TWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gbV9pZFRvVXNlck1lZGlhUmVxdWVzdE1hcC50YWtlKHJl
cXVlc3RJRCk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9yZXF1
ZXN0VG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7CisgICAgbV91c2VyTWVkaWFSZXF1ZXN0VG9JRE1h
cC5yZW1vdmUocmVxdWVzdCk7CiAKICAgICBpZiAoYWxsb3dlZCkKICAgICAgICAgcmVxdWVzdC0+
dXNlck1lZGlhQWNjZXNzR3JhbnRlZChhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSUQpOwpA
QCAtODcsNiArODcsNDUgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OgogICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIH0KIAordm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4ocmVxdWVzdC5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1l
bnQtPmZyYW1lKCkgOiBudWxscHRyOworCisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICByZXF1
ZXN0LnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7Cisg
ICAgbV9pZFRvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrTWFwLmFkZChyZXF1ZXN0SUQsICZyZXF1
ZXN0KTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1RvSURNYXAuYWRkKCZyZXF1ZXN0
LCByZXF1ZXN0SUQpOworCisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21D
b3JlRnJhbWUoKmZyYW1lKTsKKyAgICBBU1NFUlQod2ViRnJhbWUpOworCisgICAgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiA9IHJlcXVlc3Quc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFt
ZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkpKTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNh
bmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2smIHJlcXVlc3QpCit7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gbV91c2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tUb0lETWFwLnRha2UoJnJlcXVlc3QpOworICAgIGlmICghcmVxdWVzdElE
KQorICAgICAgICByZXR1cm47CisgICAgbV9pZFRvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrTWFw
LnJlbW92ZShyZXF1ZXN0SUQpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgcmVx
dWVzdElELCBib29sIGFsbG93ZWQpCit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjaz4gcmVxdWVzdCA9IG1faWRUb1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja01hcC50YWtlKHJl
cXVlc3RJRCk7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm47CisgICAgbV91c2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tUb0lETWFwLnJlbW92ZShyZXF1ZXN0KTsKKyAgICAKKyAgICBy
ZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihhbGxvd2VkKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lv
biAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsy
MSw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJNZWRpYVJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
QEAgLTM0LDE2ICszNSwyMiBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIgCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKFdlYlBhZ2UmKTsKIAotICAgIHZvaWQgc3RhcnRSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3QmKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdCYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9E
ZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOworICAgIHZvaWQgc3RhcnRV
c2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsKKyAgICB2b2lkIGNh
bmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOworICAgIHZv
aWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3Ry
aW5nJiB2aWRlb0RldmljZVVJRCk7CisKKyAgICB2b2lkIHN0YXJ0VXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpOworICAgIHZvaWQgY2Fu
Y2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjayYpOworICAgIHZvaWQgZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWlu
dDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2Um
IG1fcGFnZTsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0Pj4gbV9pZFRvUmVxdWVzdE1hcDsKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0PiwgdWludDY0X3Q+IG1fcmVxdWVzdFRvSURNYXA7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+PiBtX2lkVG9V
c2VyTWVkaWFSZXF1ZXN0TWFwOworICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3Q+LCB1aW50NjRfdD4gbV91c2VyTWVkaWFSZXF1ZXN0VG9JRE1hcDsKKworICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+
PiBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8
V2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiwgdWludDY0X3Q+IG1fdXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrVG9JRE1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMjMgQEAgdm9pZCBXZWJVc2VyTWVkaWFD
bGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RV
c2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcHJSZXF1ZXN0KQogewogICAg
IFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QgPSBwclJlcXVlc3QubGVha1JlZigpOwotICAgIG1f
cGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFydFJlcXVlc3QocmVx
dWVzdCk7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0
YXJ0VXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJVc2VyTWVkaWFDbGll
bnQ6OmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2Fu
Y2VsUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKCkuY2FuY2VsVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKK30KKwordm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihSZWY8V2ViQ29yZTo6
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiYmIHByUmVxdWVzdCkKK3sKKyAgICBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QgPSBwclJlcXVlc3QubGVha1JlZigpOworICAgIG1fcGFn
ZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFydFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayhyZXF1ZXN0KTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNl
bFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2smIHJlcXVlc3QpCit7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcigpLmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1ZXN0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCShyZXZp
c2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTQgQEAg
cHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhS
ZWY8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5j
ZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVy
cmlkZTsKIAorICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFJlZjxXZWJDb3JlOjpV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYp
IG92ZXJyaWRlOworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTkzNzc5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzY1LDYgKzMzNjUsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZl
VXNlck1lZGlhUGVybWlzcwogewogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFs
bG93ZWQsIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiB9CisKK3ZvaWQgV2ViUGFn
ZTo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlh
SUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5kaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1c2VyTWVkaWFJRCwgYWxs
b3dlZCk7Cit9CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMDUsNiArMTEwNSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVj
aXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBh
dWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CisgICAgV0tfRVhQ
T1JUIHZvaWQgZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNl
ck1lZGlhSUQsIGJvb2wgYWxsb3dlZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICAjIE1lZGlhU3RlYW0KICAgICBEaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRl
Y2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIFN0cmluZyBhdWRpb0Rl
dmljZVVJRCwgU3RyaW5nIHZpZGVvRGV2aWNlVUlEKQorICAgIERpZENvbXBsZXRlVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCiAjZW5k
aWYKIAogICAgICMgTm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
OTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzNSBAQAorMjAxNS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEV4cG9zZSBtZWRpYSBjYXB0dXJlIGRl
dmljZXMgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5tbToKKyAgICAgICAgKHVzZXJNZWRpYVJlcXVlc3RzTWFwKToKKyAgICAgICAgKEFkZFJlcXVl
c3RUb1JlcXVlc3RNYXApOgorICAgICAgICAoUmVtb3ZlUmVxdWVzdEZyb21SZXF1ZXN0TWFwKToK
KyAgICAgICAgKHVzZXJNZWRpYUNoZWNrTWFwKToKKyAgICAgICAgKEFkZFBlcm1pc3Npb25DaGVj
a1RvTWFwKToKKyAgICAgICAgKFJlbW92ZVBlcm1pc3Npb25DaGVja0Zyb21NYXApOgorICAgICAg
ICAoV2ViVXNlck1lZGlhQ2xpZW50OjpXZWJVc2VyTWVkaWFDbGllbnQpOgorICAgICAgICAoV2Vi
VXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKToKKyAgICAgICAgKFdlYlVz
ZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdCk6CisgICAgICAgIChX
ZWJVc2VyTWVkaWFDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbik6CisgICAgICAgIChX
ZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAg
ICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGFsbG93XSk6CisgICAgICAgICgtW1dl
YlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGRlbnldKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlh
UG9saWN5Q2hlY2tlckxpc3RlbmVyIGluaXRXaXRoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOl0p
OgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXIgY2FuY2VsVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrXSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNo
ZWNrZXJMaXN0ZW5lciBhbGxvd10pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lDaGVj
a2VyTGlzdGVuZXIgZGVueV0pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2Vy
TGlzdGVuZXIgZGVueU9ubHlUaGlzUmVxdWVzdF0pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQ
b2xpY3lDaGVja2VyTGlzdGVuZXIgc2hvdWxkQ2xlYXJDYWNoZV0pOgorICAgICAgICAoQWRkUmVx
dWVzdFRvTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFJlbW92ZVJlcXVlc3RGcm9tTWFwKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg6CisKIDIwMTUt
MTItMDggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11
cCB0bzoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyTWVkaWFD
bGllbnQ7CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s7CiBjbGFzcyBVc2VyTWVkaWFS
ZXF1ZXN0OwogfQogCkBAIC00NCw5ICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgfldlYlVzZXJNZWRp
YUNsaWVudCgpOwogCiAgICAgLy8gVXNlck1lZGlhQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+JiYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhS
ZWY8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5j
ZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFJlZjxXZWJDb3JlOjpV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYp
IG92ZXJyaWRlOworCisgICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQkocmV2aXNpb24g
MTkzNzc5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVl
c3QuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CkBA
IC01MCw2ICs1MSwxNCBAQCAtICh2b2lkKWNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3Q7CiAt
ICh2b2lkKWRlbnk7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tl
ckxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiB7CisgICAg
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4gX3JlcXVlc3Q7Cit9CistIChpZClpbml0
V2l0aFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazooUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2s+KXJlcXVlc3Q7CistICh2b2lkKWNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
azsKKy0gKHZvaWQpZGVueTsKK0BlbmQKKwogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVc2VyTWVk
aWFSZXF1ZXN0PiwgUmV0YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyPj4gVXNlck1l
ZGlhUmVxdWVzdHNNYXA7CiAKIHN0YXRpYyBVc2VyTWVkaWFSZXF1ZXN0c01hcCYgdXNlck1lZGlh
UmVxdWVzdHNNYXAoKQpAQCAtNTgsMTYgKzY3LDM1IEBAIHN0YXRpYyBVc2VyTWVkaWFSZXF1ZXN0
c01hcCYgdXNlck1lZGlhUmUKICAgICByZXR1cm4gcmVxdWVzdHM7CiB9CiAKLXN0YXRpYyB2b2lk
IEFkZFJlcXVlc3RUb01hcChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0LCBSZXRhaW5QdHI8V2Vi
VXNlck1lZGlhUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyKQorc3RhdGljIHZvaWQgQWRkUmVxdWVz
dFRvUmVxdWVzdE1hcChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0LCBSZXRhaW5QdHI8V2ViVXNl
ck1lZGlhUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyKQogewogICAgIHVzZXJNZWRpYVJlcXVlc3Rz
TWFwKCkuc2V0KHJlcXVlc3QsIGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIHZvaWQgUmVtb3ZlUmVx
dWVzdEZyb21NYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyB2b2lkIFJlbW92
ZVJlcXVlc3RGcm9tUmVxdWVzdE1hcChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQogewogICAg
IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkucmVtb3ZlKHJlcXVlc3QpOwogfQogCit0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4sIFJldGFpblB0cjxXZWJVc2Vy
TWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXI+PiBVc2VyTWVkaWFDaGVja01hcDsKKworc3RhdGlj
IFVzZXJNZWRpYUNoZWNrTWFwJiB1c2VyTWVkaWFDaGVja01hcCgpCit7CisgICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVzZXJNZWRpYUNoZWNrTWFwLCByZXF1ZXN0cywgKCkpOwor
ICAgIHJldHVybiByZXF1ZXN0czsKK30KKworc3RhdGljIHZvaWQgQWRkUGVybWlzc2lvbkNoZWNr
VG9NYXAoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKiByZXF1ZXN0LCBSZXRhaW5QdHI8V2ViVXNl
ck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyPiBsaXN0ZW5lcikKK3sKKyAgICB1c2VyTWVkaWFD
aGVja01hcCgpLnNldChyZXF1ZXN0LCBsaXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIFJlbW92
ZVBlcm1pc3Npb25DaGVja0Zyb21NYXAoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKiByZXF1ZXN0
KQoreworICAgIHVzZXJNZWRpYUNoZWNrTWFwKCkucmVtb3ZlKHJlcXVlc3QpOworfQorCisKIFdl
YlVzZXJNZWRpYUNsaWVudDo6V2ViVXNlck1lZGlhQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTEwMyw3ICsxMzEsNyBAQCB2b2lkIFdlYlVz
ZXJNZWRpYUNsaWVudDo6cmVxdWVzdFVzZXJNZWRpCiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndl
Yk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1
cml0eU9yaWdpbjpyZXF1ZXN0LT5zZWN1cml0eU9yaWdpbigpXTsKIAogICAgIENhbGxVSURlbGVn
YXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwgbGlzdGVuZXIpOwotICAgIEFkZFJl
cXVlc3RUb01hcChyZXF1ZXN0LCBsaXN0ZW5lcik7CisgICAgQWRkUmVxdWVzdFRvUmVxdWVzdE1h
cChyZXF1ZXN0LCBsaXN0ZW5lcik7CiAKICAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOwogICAgIFts
aXN0ZW5lciByZWxlYXNlXTsKQEAgLTEyMiw2ICsxNTAsNDAgQEAgdm9pZCBXZWJVc2VyTWVkaWFD
bGllbnQ6OmNhbmNlbFVzZXJNZWRpYQogICAgIHJlcXVlc3RzTWFwLnJlbW92ZShpdCk7CiB9CiAK
K3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oUmVmPFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4mJiBwcnBSZXF1ZXN0KQoreworICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKworICAgIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayogcmVxdWVz
dCA9ICZwcnBSZXF1ZXN0LmdldCgpOworICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJW
aWV3OmNoZWNrUG9saWN5Rm9yVXNlck1lZGlhUmVxdWVzdEZyb21PcmlnaW46bGlzdGVuZXI6KTsK
KyAgICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxl
Y3Rvcl0pIHsKKyAgICAgICAgcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViVXNlck1lZGlhUG9saWN5Q2hl
Y2tlckxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3Rl
bmVyIGFsbG9jXSBpbml0V2l0aFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazpyZXF1ZXN0XTsKKyAg
ICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxv
Y10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOnJlcXVlc3QtPnNlY3VyaXR5T3JpZ2lu
KCldOworCisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2lu
LCBsaXN0ZW5lcik7CisgICAgQWRkUGVybWlzc2lvbkNoZWNrVG9NYXAocmVxdWVzdCwgbGlzdGVu
ZXIpOworCisgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKKyAgICBbbGlzdGVuZXIgcmVsZWFzZV07
CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCisKK3ZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0KQoreworICAgIFVzZXJNZWRpYUNoZWNrTWFwJiBy
ZXF1ZXN0c01hcCA9IHVzZXJNZWRpYUNoZWNrTWFwKCk7CisgICAgVXNlck1lZGlhQ2hlY2tNYXA6
Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdHNNYXAuZmluZCgmcmVxdWVzdCk7CisgICAgaWYgKGl0ID09
IHJlcXVlc3RzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbaXQtPnZhbHVlIGNh
bmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja107CisgICAgcmVxdWVzdHNNYXAucmVtb3ZlKGl0
KTsKK30KIAogQGltcGxlbWVudGF0aW9uIFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyCiAKQEAg
LTE1NSw3ICsyMTcsNyBAQCAtICh2b2lkKWFsbG93CiAgICAgCiAgICAgX3JlcXVlc3QtPnVzZXJN
ZWRpYUFjY2Vzc0dyYW50ZWQoX3JlcXVlc3QtPmFsbG93ZWRBdWRpb0RldmljZVVJRCgpLCBfcmVx
dWVzdC0+YWxsb3dlZFZpZGVvRGV2aWNlVUlEKCkpOwogCi0gICAgUmVtb3ZlUmVxdWVzdEZyb21N
YXAoX3JlcXVlc3QuZ2V0KCkpOworICAgIFJlbW92ZVJlcXVlc3RGcm9tUmVxdWVzdE1hcChfcmVx
dWVzdC5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTY2LDcgKzIyOCw3IEBAIC0gKHZvaWQpZGVu
eQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgX3JlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0Rl
bmllZCgpOwotICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKKyAgICBS
ZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXAoX3JlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiB9CiAK
QEAgLTE4NCw0ICsyNDYsNjcgQEAgLSAoQk9PTClzaG91bGRDbGVhckNhY2hlCiAjZW5kaWYKIAog
QGVuZAorCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVu
ZXIKKworLSAoaWQpaW5pdFdpdGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6KFBhc3NSZWZQdHI8
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPilyZXF1ZXN0Cit7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICByZXR1cm4gc2VsZjsKKyNlbmRpZgor
fQorCistICh2b2lkKWNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaworeworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgaWYgKCFfcmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgX3JlcXVlc3QgPSBudWxscHRyOworI2VuZGlmCisKK30KKworLSAodm9pZClhbGxvdworewor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKCFfcmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgX3JlcXVlc3QtPnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKHRydWUpOwor
ICAgIFJlbW92ZVBlcm1pc3Npb25DaGVja0Zyb21NYXAoX3JlcXVlc3QuZ2V0KCkpOwogI2VuZGlm
Cit9CisKKy0gKHZvaWQpZGVueQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYg
KCFfcmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX3JlcXVlc3QtPnNldEhhc1BlcnNp
c3RlbnRQZXJtaXNzaW9uKHRydWUpOworICAgIFJlbW92ZVBlcm1pc3Npb25DaGVja0Zyb21NYXAo
X3JlcXVlc3QuZ2V0KCkpOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9STShJT1MpCistICh2b2lk
KWRlbnlPbmx5VGhpc1JlcXVlc3QKK3sKK30KKworLSAoQk9PTClzaG91bGRDbGVhckNhY2hlCit7
CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDYyNDUKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNl
bmRpZgorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkocmV2
aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRl
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDcgQEAgQGludGVyZmFjZSBO
U09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2Vi
U2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGljeUxp
c3RlbmVyPilsaXN0ZW5lcjsKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFSZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4gbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPilsaXN0
ZW5lcjsKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tQb2xpY3lGb3JV
c2VyTWVkaWFSZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gbGlz
dGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPilsaXN0ZW5lcjsKIAogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGVsZW1lbnREaWRGb2N1c05vZGU6KERPTU5vZGUg
Kilub2RlOwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGVsZW1lbnREaWRCbHVy
Tm9kZTooRE9NTm9kZSAqKW5vZGU7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTM4NzEpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNS0xMi0wOSAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEV4cG9z
ZSBtZWRpYSBjYXB0dXJlIGRldmljZXMgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyB0byBXZWJDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdUUjo6ZGVjaWRl
UG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RSOjpjaGVj
a1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpy
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnNldFVzZXJNZWRpYVBlcm1pc3Npb24pOgorICAgICAgICAoV1RSOjpvcmlnaW5Vc2VyVmlz
aWJsZU5hbWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aGFuZGxlQ2hlY2tPZlVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6aGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJZlBv
c3NpYmxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisK
IDIwMTUtMTItMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJ1biBhdGxlYXN0IG9uZSBzaW11bGF0b3IgZXZlbiBpZiBtYXggcHJvY2VzcyBsaW1pdCBp
cyBsb3cKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAxOTM3NzkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25T
cGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktp
dC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNzdGRpbz4K
ICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMjAxLDkgKzIwMywxNCBAQCBzdGF0aWMgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmhhbmRsZUdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QocGVybWlzc2lvblJlcXVlc3QpOwog
fQogCi1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5oYW5k
bGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChwZXJtaXNzaW9uUmVxdWVzdCk7CisgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhbmRsZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KG9yaWdpbiwgcGVybWlzc2lvblJlcXVlc3QpOworfQorCitzdGF0aWMgdm9pZCBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tSZWYgY2hlY2tSZXF1
ZXN0LCBjb25zdCB2b2lkKikKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFu
ZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4ob3JpZ2luLCBjaGVja1JlcXVl
c3QpOwogfQogCiBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShXS1Bh
Z2VSZWYgb2xkUGFnZSwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05h
dmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3
aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKQEAgLTI3Nyw3ICsyODQsOCBA
QCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnCiAgICAgICAgIGNyZWF0
ZU90aGVyUGFnZSwKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAs
IC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAgICAgIDAgIC8vIHJ1bkphdmFTY3JpcHRQcm9t
cHQKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50LmJhc2UpOwogICAgIApAQCAtNTQwLDYgKzU0
OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3AKICAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25m
aXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgY2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luLAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVudC5iYXNlKTsKIApAQCAtNzQ0
LDYgKzc1Myw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3QKIAog
ICAgIC8vIFJlc2V0IFVzZXJNZWRpYSBwZXJtaXNzaW9ucy4KICAgICBtX3VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0cy5jbGVhcigpOworICAgIG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMg
PSBudWxscHRyOwogICAgIG1faXNVc2VyTWVkaWFQZXJtaXNzaW9uU2V0ID0gZmFsc2U7CiAgICAg
bV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkID0gZmFsc2U7CiAKQEAgLTE2NDIsOSArMTY1
MiwzOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRVc2VyTWVkaWFQZXJtaXNzCiAgICAgZGVj
aWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJZlBvc3NpYmxlKCk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OmhhbmRsZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qp
CitzdGF0aWMgV0tTdHJpbmdSZWYgb3JpZ2luVXNlclZpc2libGVOYW1lKFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luKQoreworICAgIHN0ZDo6c3RyaW5nIGhvc3QgPSB0b1NURChhZG9wdFdLKFdL
U2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4pKSkuY19zdHIoKTsKKyAgICBzdGQ6OnN0cmlu
ZyBwcm90b2NvbCA9IHRvU1REKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChv
cmlnaW4pKSkuY19zdHIoKTsKKyAgICB1bnNpZ25lZCBzaG9ydCBwb3J0ID0gV0tTZWN1cml0eU9y
aWdpbkdldFBvcnQob3JpZ2luKTsKKworICAgIFN0cmluZyB1c2VyVmlzaWJsZU5hbWU7CisgICAg
aWYgKHBvcnQpCisgICAgICAgIHVzZXJWaXNpYmxlTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIlczov
LyVzOiVkIiwgcHJvdG9jb2wuY19zdHIoKSwgaG9zdC5jX3N0cigpLCBwb3J0KTsKKyAgICBlbHNl
CisgICAgICAgIHVzZXJWaXNpYmxlTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIlczovLyVzIiwgcHJv
dG9jb2wuY19zdHIoKSwgaG9zdC5jX3N0cigpKTsKKworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyh1c2VyVmlzaWJsZU5hbWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBjb25zdCBXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1JlZiYgY2hlY2tSZXF1ZXN0KQoreworICAgIGJvb2wgYWxsb3dlZCA9IGZhbHNlOwor
CisgICAgaWYgKG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMpIHsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG9yaWdpblN0cmluZyA9IG9yaWdpblVzZXJWaXNpYmxlTmFtZShv
cmlnaW4pOworICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xl
YW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobV91c2VyTWVkaWFPcmlnaW5QZXJtaXNz
aW9ucy5nZXQoKSwgb3JpZ2luU3RyaW5nLmdldCgpKSk7CisgICAgICAgIGlmIChXS0dldFR5cGVJ
RCh2YWx1ZSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCisgICAgICAgICAgICBhbGxvd2VkID0g
V0tCb29sZWFuR2V0VmFsdWUodmFsdWUpOworICAgIH0KKworICAgIFdLVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrU2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oY2hlY2tSZXF1ZXN0LCBhbGxvd2Vk
KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RSZWYgcmVxdWVzdCkKIHsKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cy5h
cHBlbmQodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOworICAgIG1fdXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcmlnaW4sIHJlcXVlc3QpKTsKICAg
ICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUoKTsK
IH0KIApAQCAtMTY1Myw5ICsxNjkyLDE3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBv
bGljeUZvclVzZXIKICAgICBpZiAoIW1faXNVc2VyTWVkaWFQZXJtaXNzaW9uU2V0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0cykgewotICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBhdWRpb0Rldmlj
ZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKHJlcXVl
c3QuZ2V0KCkpOwotICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB2aWRlb0RldmljZVVJ
RHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKHJlcXVlc3Qu
Z2V0KCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RzKSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcGFpci5maXJzdC5nZXQoKTsKKyAgICAgICAg
YXV0byByZXF1ZXN0ID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdL
QXJyYXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RB
dWRpb0RldmljZVVJRHMocmVxdWVzdCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+
IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0Rldmlj
ZVVJRHMocmVxdWVzdCk7CisKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG9yaWdp
blN0cmluZyA9IGFkb3B0V0sob3JpZ2luVXNlclZpc2libGVOYW1lKG9yaWdpbikpOworICAgICAg
ICBpZiAoIW1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMpCisgICAgICAgICAgICBtX3VzZXJN
ZWRpYU9yaWdpblBlcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRl
KCkpOworICAgICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGFsbG93ZWQgPSBhZG9wdFdL
KFdLQm9vbGVhbkNyZWF0ZShtX2lzVXNlck1lZGlhUGVybWlzc2lvbkFsbG93ZWQpKTsKKyAgICAg
ICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zLmdldCgp
LCBvcmlnaW5TdHJpbmcuZ2V0KCksIGFsbG93ZWQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChtX2lz
VXNlck1lZGlhUGVybWlzc2lvbkFsbG93ZWQgJiYgKFdLQXJyYXlHZXRTaXplKHZpZGVvRGV2aWNl
VUlEcy5nZXQoKSkgfHwgV0tBcnJheUdldFNpemUoYXVkaW9EZXZpY2VVSURzLmdldCgpKSkpIHsK
ICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB2aWRlb0RldmljZVVJRDsKQEAg
LTE2NzAsMTAgKzE3MTcsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9y
VXNlcgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGF1ZGlvRGV2aWNlVUlEID0g
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOwogCi0gICAgICAgICAgICBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdC5nZXQoKSwgYXVkaW9EZXZpY2VVSUQu
Z2V0KCksIHZpZGVvRGV2aWNlVUlELmdldCgpKTsKKyAgICAgICAgICAgIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0LCBhdWRpb0RldmljZVVJRC5nZXQoKSwgdmlkZW9E
ZXZpY2VVSUQuZ2V0KCkpOwogCiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdERlbnkocmVxdWVzdC5nZXQoKSk7CisgICAgICAgICAgICBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShyZXF1ZXN0KTsKICAgICB9CiAgICAgbV91c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMuY2xlYXIoKTsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHN0cmluZz4K
ICNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29uZmlndXJhdGlvbjsKQEAgLTk1
LDcgKzk2LDggQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFTdHJlYW0uCiAgICAgdm9pZCBzZXRV
c2VyTWVkaWFQZXJtaXNzaW9uKGJvb2wpOwotICAgIHZvaWQgaGFuZGxlVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7CisgICAgdm9pZCBo
YW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKKyAgICB2b2lkIGhhbmRsZUNoZWNrT2ZVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdLU2VjdXJpdHlPcmlnaW5SZWYsIGNvbnN0IFdLVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmJik7CiAKICAgICAvLyBQb2xpY3kgZGVsZWdhdGUuCiAg
ICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlz
c2l2ZSk7CkBAIC0yODIsNyArMjg0LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzR2VvbG9j
YXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvbkFs
bG93ZWQ7CiAKLSAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZj4+IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzOworICAgIFdLUmV0YWluUHRy
PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnM7CisK
KyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8V0tSZXRhaW5QdHI8V0tTZWN1cml0eU9yaWdp
blJlZj4sIFdLUmV0YWluUHRyPFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWY+Pj4gUGVy
bWlzc2lvblJlcXVlc3RNYXA7CisgICAgUGVybWlzc2lvblJlcXVlc3RNYXAgbV91c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdHM7CisKICAgICBib29sIG1faXNVc2VyTWVkaWFQZXJtaXNzaW9uU2V0
OwogICAgIGJvb2wgbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTM3NzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEV4cG9zZSBtZWRpYSBjYXB0dXJl
IGRldmljZXMgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMuaHRtbDoKKyAgICAgICAg
KiBmYXN0L21lZGlhc3RyZWFtL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzOgorCiAy
MDE1LTEyLTA4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG8g
bm90IGluc2VydCBwb3NpdGlvbmVkIHJlbmRlcmVycyB0byBtdWx0aXBsZSBnUG9zaXRpb25lZERl
c2NlbmRhbnRzTWFwLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC02LDE2ICs2LDM4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEEKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyBpcyBhbiBpbnN0YW5jZSBvZiBPYmpl
Y3QKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIGlzIGFuIGlu
c3RhbmNlIG9mIEZ1bmN0aW9uCiAKKworKioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0
ZURldmljZXMgd2hlbiBwZXJzaXN0ZW50IGFjY2VzcyBIQVMgTk9UIGJlZW4gZ3JhbnRlZAorCitQ
QVNTIGNhcHR1cmVEZXZpY2VzLmxlbmd0aCBpcyBub24temVyby4KKworUEFTUyBjYXB0dXJlRGV2
aWNlLmtpbmQgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9u
LW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1
cmVEZXZpY2UubGFiZWwgaXMgIiIKK1BBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1u
dWxsLgorCitQQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVy
ZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBp
cyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyAiIgorUEFTUyBjYXB0dXJl
RGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCisKKworKioqIENhbGxpbmcgbWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgd2hlbiBwZXJzaXN0ZW50IGFjY2VzcyBIQVMgYmVlbiBncmFudGVk
CisKIFBBU1MgY2FwdHVyZURldmljZXMubGVuZ3RoIGlzIG5vbi16ZXJvLgogCiBQQVNTIGNhcHR1
cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBp
cyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1Mg
Y2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIKIFBBU1MgY2FwdHVyZURldmljZS5ncm91cElk
IGlzIG5vbi1udWxsLgogCiBQQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KIFBB
U1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmlj
ZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIK
IFBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgogCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1sCShy
ZXZpc2lvbiAxOTM3NzkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksNiArOSw3IEBA
CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICB2YXIgY2FwdHVyZURldmljZXM7CiAgICAg
ICAgICAgICB2YXIgY2FwdHVyZURldmljZTsKKyAgICAgICAgICAgIHZhciBoYXZlUGVybWlzc2lv
bjsKIAogICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhRGV2aWNlcy5lbnVtZXJh
dGVEZXZpY2VzKCkiKTsKICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
QEAgLTE3LDI1ICsxOCw1NCBAQAogICAgICAgICAgICAgc2hvdWxkQmVUeXBlKCJuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMiLCAiRnVuY3Rpb24iKTsKICAgICAgICAgICAg
IGRlYnVnKCIiKTsKIAotICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJh
dGVEZXZpY2VzKCkKLSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkZXZpY2VzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2VzID0gZGV2aWNlczsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJjYXB0dXJlRGV2aWNlcy5sZW5ndGgiKTsKLSAgICAg
ICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgICAgICAgICBkZXZpY2VzLmZv
ckVhY2goZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJl
RGV2aWNlID0gZGV2aWNlOwotICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJjYXB0dXJlRGV2aWNlLmtpbmQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
Tm9uTnVsbCgiY2FwdHVyZURldmljZS5kZXZpY2VJZCIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmxhYmVsIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVEZXZpY2UuZ3JvdXBJZCIpOworICAg
ICAgICAgICAgZnVuY3Rpb24gZW51bWVyYXRlKG5leHQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZGVidWcoYDxicj4qKiogQ2FsbGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2
aWNlcyB3aGVuIHBlcnNpc3RlbnQgYWNjZXNzIEhBUyAke2hhdmVQZXJtaXNzaW9uID8gIiIgOiAi
Tk9UICJ9YmVlbiBncmFudGVkPGJyPmApOworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1
bmN0aW9uKGRldmljZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2Vz
ID0gZGV2aWNlczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uWmVybygiY2Fw
dHVyZURldmljZXMubGVuZ3RoIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzLmZvckVhY2goZnVuY3Rpb24oZGV2aWNl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZURldmljZSA9IGRldmljZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVEZXZp
Y2Uua2luZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgi
Y2FwdHVyZURldmljZS5kZXZpY2VJZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5sYWJlbCIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChoYXZlUGVybWlzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkTm90QmVFcXVhbFRvU3RyaW5nKCJjYXB0dXJlRGV2aWNlLmxhYmVsIiwgIiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmVFbXB0eVN0cmluZygiY2FwdHVyZURldmljZS5sYWJlbCIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmlj
ZS5ncm91cElkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5j
dGlvbihlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXJyLm5hbWUg
KyAiOiAiICsgZXJyLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZ3JhbnRQZXJtaXNzaW9u
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9u
KHRydWUpOworICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzCisgICAg
ICAgICAgICAgICAgICAgICAgICAuZ2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86e319KQor
ICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oc3RyZWFtKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudW1lcmF0ZShudWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAuY2F0
Y2goZnVuY3Rpb24oZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZChgbWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIGZhaWxlZCB3aXRoICR7ZXJyLm5hbWV9OiAk
e2Vyci5tZXNzYWdlfWApOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9u
KGVycikgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGVyci5uYW1lICsgIjogIiAr
IGVyci5tZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGhhdmVQZXJt
aXNzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBlbnVtZXJhdGUoZ3JhbnRQZXJtaXNzaW9uKTsK
IAogICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAgICAgICAg
IDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267056</attachid>
            <date>2015-12-09 17:04:16 -0800</date>
            <delta_ts>2015-12-10 06:37:24 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>devices_access_patch_6.txt</filename>
            <type>text/plain</type>
            <size>100572</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTEyLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
RXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgYW4gZXhpc3RpbmcgdGVzdCB3YXMgdXBkYXRlZCB0byB0ZXN0IHRoZSBjaGFu
Z2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5jcHAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1Jl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6fk1lZGlh
RGV2aWNlc1JlcXVlc3QpOiBDbGVhciB0aGUgcGVybWlzc2lvbiBjaGVja2VyIGNsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0KTogQ3Jl
YXRlIGEgcGVybWlzc2lvbiBjaGVja2VyIGFuZCBzdGFydCBpdCBydW5uaW5nLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayk6IFN0YXJ0IHRo
ZSBtZWRpYSBzb3VyY2UgY2hlY2tlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OmRpZENvbXBsZXRlUmVxdWVzdCk6IE9ubHkgaW5jbHVkZSBhIHRyYWNrJ3MgbGFiZWwg
aWYgdGhlCisgICAgICAgICAgcGFnZSBoYXMgcGVybWlzc2lvbiB0byB1c2UgYSBjYXB0dXJlIGRl
dmljZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
aDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6IElu
Y2x1ZGUgcHJvdG90eXBlcyBmb3IgcGVybWlzc2lvbiBjaGVja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhQ2xpZW50Ojp+VXNlck1lZGlhQ2xpZW50KToKKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhQ29udHJvbGxlcjo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKTogTmV3LgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjp+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpjb250
ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
azo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpz
ZXREZXZpY2VBY2Nlc3NNb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja0NsaWVudDo6flVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnNldENsaWVudCk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwfC5oCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Vz
ZXJNZWRpYUNsaWVudE1vY2suaDogUmVtb3ZlZCwgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisKIDIwMTUtMTItMDggIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodCBjbGVhbnVwIGluIFRleHRQYWlu
dGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NzUsNiArOTc1LDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tF
dmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uY3BwCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAorICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKIAogICAgIE1vZHVsZXMvbmF2aWdhdG9yY29udGVu
dHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNw
cAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBA
QCBNZWRpYURldmljZXNSZXF1ZXN0OjpNZWRpYURldmljZXNSZXF1ZXN0CiAKIE1lZGlhRGV2aWNl
c1JlcXVlc3Q6On5NZWRpYURldmljZXNSZXF1ZXN0KCkKIHsKKyAgICBpZiAobV9wZXJtaXNzaW9u
Q2hlY2spCisgICAgICAgIG1fcGVybWlzc2lvbkNoZWNrLT5zZXRDbGllbnQobnVsbHB0cik7CiB9
CiAKIFNlY3VyaXR5T3JpZ2luKiBNZWRpYURldmljZXNSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigp
IGNvbnN0CkBAIC02NSwyOCArNjcsNDQgQEAgU2VjdXJpdHlPcmlnaW4qIE1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OnNlYwogdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkK
IHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwor
ICAgIGlmIChtX3Blcm1pc3Npb25DaGVjaykgeworICAgICAgICBtX3Blcm1pc3Npb25DaGVjay0+
c2V0Q2xpZW50KG51bGxwdHIpOworICAgICAgICBtX3Blcm1pc3Npb25DaGVjayA9IG51bGxwdHI7
CisgICAgfQogICAgIG1fcHJvdGVjdG9yID0gbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYURldmlj
ZXNSZXF1ZXN0OjpzdGFydCgpCiB7CiAgICAgbV9wcm90ZWN0b3IgPSB0aGlzOwotICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzKHRoaXMpOworICAgIG1fcGVybWlzc2lvbkNoZWNrID0gVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrOjpjcmVhdGUoKmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LCAqdGhpcyk7CisgICAgbV9wZXJtaXNzaW9uQ2hlY2stPnN0YXJ0KCk7Cit9CisKK3ZvaWQgTWVk
aWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayhib29sIGFjY2VzcykKK3sKKyAgICBt
X2hhc1VzZXJNZWRpYVBlcm1pc3Npb24gPSBhY2Nlc3M7CisKKyAgICBSZWZQdHI8TWVkaWFEZXZp
Y2VzUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHByb3RlY3RlZFRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUmVxdWVzdChjb25z
dCBUcmFja1NvdXJjZUluZm9WZWN0b3ImIGNhcHR1cmVkRGV2aWNlcykKIHsKLSAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgeworICAgICAgICBtX3Byb3RlY3RvciA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IGRldmljZUluZm87CiAg
ICAgZm9yIChhdXRvIGRldmljZSA6IGNhcHR1cmVkRGV2aWNlcykgewogICAgICAgICBUcmFja1Nv
dXJjZUluZm8qIHRyYWNrSW5mbyA9IGRldmljZS5nZXQoKTsKICAgICAgICAgU3RyaW5nIGRldmlj
ZVR5cGUgPSB0cmFja0luZm8tPmtpbmQoKSA9PSBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6
OkF1ZGlvID8gTWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSgpIDogTWVkaWFEZXZpY2VJ
bmZvOjp2aWRlb0lucHV0VHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBsYWJlbCBpcyBzdXBw
b3NlZCB0byBiZSBlbXB0eSB1bmxlc3MgYSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYW4gYWN0aXZl
IE1lZGlhU3RyZWFtVHJhY2sgaW4gdGhlIGN1cnJlbnQgYnJvd3NpbmcgY29udGV4dCwgb3IKLSAg
ICAgICAgLy8gcGVyc2lzdGVudCBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGVzZSBsb2NhbCBkZXZp
Y2VzIGhhcyBiZWVuIGdyYW50ZWQgdG8gdGhlIHBhZ2UncyBvcmlnaW4uCi0gICAgICAgIGRldmlj
ZUluZm8uYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgdHJhY2tJbmZvLT5sYWJlbCgpLCB0cmFja0luZm8tPmlkKCksIHRyYWNrSW5mby0+Z3Jv
dXBJZCgpLCBkZXZpY2VUeXBlKSk7CisgICAgICAgIEF0b21pY1N0cmluZyBsYWJlbCA9IG1faGFz
VXNlck1lZGlhUGVybWlzc2lvbiA/IHRyYWNrSW5mby0+bGFiZWwoKSA6IGVtcHR5QXRvbTsKKyAg
ICAgICAgZGV2aWNlSW5mby5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVhdGUobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBsYWJlbCwgdHJhY2tJbmZvLT5pZCgpLCB0cmFja0luZm8tPmdyb3Vw
SWQoKSwgZGV2aWNlVHlwZSkpOwogICAgIH0KIAogICAgIFJlZlB0cjxNZWRpYURldmljZXNSZXF1
ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgJKHJldmlzaW9u
IDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
TWVkaWFEZXZpY2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1
ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIE1lZGlhRGV2aWNlc1JlcXVlc3QgOiBwdWJs
aWMgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LCBwdWJsaWMgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFEZXZpY2VzUmVxdWVzdCA6IHB1YmxpYyBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQsIHB1YmxpYyBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tDbGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYURldmljZXNSZXF1ZXN0PiBjcmVhdGUoRG9j
dW1lbnQqLCBNZWRpYURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlv
bkNvZGUmKTsKIApAQCAtNjMsMTAgKzY0LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVJlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmZvVmVjdG9yJikgZmluYWw7CiAKICAgICAv
LyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVz
dHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3Zl
cnJpZGUgZmluYWw7CisKKyAgICAvLyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQKKyAg
ICB2b2lkIGRpZENvbXBsZXRlQ2hlY2soYm9vbCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBNZWRp
YURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9taXNlIG1fcHJvbWlzZTsKICAgICBSZWZQdHI8
TWVkaWFEZXZpY2VzUmVxdWVzdD4gbV9wcm90ZWN0b3I7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjaz4gbV9wZXJtaXNzaW9uQ2hlY2s7CisKKyAgICBib29sIG1faGFzVXNlck1l
ZGlhUGVybWlzc2lvbiB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ2xpZW50LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKK2NsYXNzIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjazsKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7CiAKIGNsYXNzIFVzZXJN
ZWRpYUNsaWVudCB7CkBAIC00Nyw2ICs0OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhSZWY8VXNlck1lZGlhUmVxdWVzdD4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJNZWRpYVJlcXVl
c3QmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFJl
ZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpID0g
MDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudCgpIHsgfQogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlVzZXJN
ZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgogI2lu
Y2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMs
NiArNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxV
c2VyTWVkaWFSZXF1ZXN0PiYmKTsKICAgICB2b2lkIGNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVl
c3QoVXNlck1lZGlhUmVxdWVzdCYpOwogCisgICAgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b24oUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4mJik7CisgICAgdm9pZCBjYW5jZWxVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2soVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJik7CisKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAgICBz
dGF0aWMgVXNlck1lZGlhQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxVc2VyTWVkaWFDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdl
LCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KIApAQCAtNjAsNiArNjQsMTYgQEAgaW5saW5lIHZvaWQg
VXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVQogICAgIG1fY2xpZW50LT5jYW5jZWxVc2VyTWVk
aWFBY2Nlc3NSZXF1ZXN0KHJlcXVlc3QpOwogfQogCitpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250
cm9sbGVyOjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjaz4mJiByZXF1ZXN0KQoreworICAgIG1fY2xpZW50LT5jaGVja1VzZXJNZWRpYVBlcm1pc3Np
b24oV1RGOjptb3ZlKHJlcXVlc3QpKTsKK30KKworaW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJv
bGxlcjo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjayYgcmVxdWVzdCkKK3sKKyAgICBtX2NsaWVudC0+Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrKHJlcXVlc3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU01l
ZGlhRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
Q2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrKGRvY3VtZW50LCBjbGllbnQpKTsKK30KKworVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50JiBjbGllbnQpCisgICAgOiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAsIG1fY2xpZW50KCZjbGll
bnQpCit7Cit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6flVzZXJNZWRpYVBlcm1pc3Np
b25DaGVjaygpCit7Cit9CisKK1NlY3VyaXR5T3JpZ2luKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2s6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQorICAgICAgICByZXR1cm4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0
eU9yaWdpbigpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrOjpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOworICAgIG1fcHJvdGVjdG9yID0gbnVsbHB0
cjsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnN0YXJ0KCkKK3sKKyAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIFVz
ZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9t
KGRvY3VtZW50LT5wYWdlKCkpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9wcm90ZWN0b3IgPSB0aGlzOworICAgIGNvbnRyb2xsZXItPmNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbigqdGhpcyk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
OjpzZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihib29sIG1vZGUpCit7CisgICAgbV9oYXNQZXJz
aXN0ZW50UGVybWlzc2lvbiA9IG1vZGU7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5kaWRDb21wbGV0ZUNoZWNrKG1faGFzUGVyc2lzdGVudFBlcm1pc3Npb24pOworCisg
ICAgbV9wcm90ZWN0b3IgPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisj
aWZuZGVmIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja19oCisjZGVmaW5lIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VzLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3Vt
ZW50OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVDaGVjayhib29s
KSA9IDA7Cit9OworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sgOiBwdWJsaWMgQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGll
bnQmKTsKKworICAgIHZpcnR1YWwgflVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaygpOworCisgICAg
dm9pZCBzdGFydCgpOworICAgIHZvaWQgc2V0Q2xpZW50KFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a0NsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGJvb2wpOworCisgICAgV0VCQ09S
RV9FWFBPUlQgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQmKTsKKworICAgIC8vIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBvdmVy
cmlkZSBmaW5hbDsKKworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IG1fcHJv
dGVjdG9yOworICAgIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCogbV9jbGllbnQ7CisK
KyAgICBib29sIG1faGFzUGVyc2lzdGVudFBlcm1pc3Npb24geyBmYWxzZSB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja19oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTM3
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsOCBAQAogCQkwNzI3N0U1MzE3RDAxOENDMDAx
NTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3N0U0NzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0
cmVhbVRyYWNrLmggKi87IH07CiAJCTA3Mjc3RTU0MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0ODE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNr
RXZlbnQuY3BwICovOyB9OwogCQkwNzI3N0U1NTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0
cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQ5MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVu
dC5oICovOyB9OworCQkwNzI5N0ZBNzFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjk3RkE1MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
Y3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3Mjk3RkE4MUMx
ODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkE2MUMxODgxQzUwMDNGMDcz
NSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzJBRTFFNTE4M0MwNzQxMDAwQTU5ODggLyogUGx1
Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MkFFMURGMTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICov
OyB9OwogCQkwNzJBRTFFNjE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzJBRTFFMDE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0g
Ki87IH07CiAJCTA3MkFFMUU4MTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcyQUUxRTIxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmgg
Ki87IH07CkBAIC0xNTQsNyArMTU2LDcgQEAKIAkJMDczNzk0RkQxOUY1ODY0RTAwRTVBMDQ1IC8q
IFJUQ05vdGlmaWVyc01vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczNzk0RjcxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2su
Y3BwICovOyB9OwogCQkwNzM3OTRGRTE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9j
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0
RjgxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCAqLzsgfTsKIAkJMDczOTRF
QzgxQkFCMkNDRDAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczOTRFQzcxQkFCMkNDRDAwQkU5
OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuY3BwICovOyB9OwotCQkwNzM5NEVDQTFCQUIyQ0Q3
MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlh
RGV2aWNlc1JlcXVlc3QuaCAqLzsgfTsKKwkJMDczOTRFQ0ExQkFCMkNENzAwQkU5OUNEIC8qIE1l
ZGlhRGV2aWNlc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Mzk0RUM5MUJBQjJDRDcwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcz
QkUzNDAxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEw
MDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi87IH07CiAJCTA3M0JFMzQxMTdE
MTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8q
IEpTTmF2aWdhdG9yVXNlck1lZGlhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3IuY3BwICovOyB9OwpAQCAtMTE0OCw3ICsxMTUwLDYgQEAKIAkJMkQ3N0FDMkIxQkYyQjk4
NzAwNzI0NzBBIC8qIE5TVGV4dEZpbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3N0FDMjgxQkYyQjk4NjAwNzI0NzBBIC8qIE5TVGV4dEZp
bmRlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTJENzdBQzJEMUJGMkI5QTAwMDcyNDcwQSAvKiBOU1ZpZXdTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzdBQzJDMUJGMkI5QTAwMDcyNDcw
QSAvKiBOU1ZpZXdTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRDdFRDBBQjFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9j
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3RUQw
QTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCAqLzsgfTsKLQkJMkQ3
RUQwQUMxQkFFOTkxNzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVudE1vY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0VEMEFBMUJBRTk5MTcwMDQz
QjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggKi87IH07CiAJCTJEODI4N0Y2MTZFNEEwMzgw
MDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RM
b2NhdGlvbi5jcHAgKi87IH07CiAJCTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0
TG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDhGRUJEQzE0M0UzRUY3
MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4RkVCREExNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Ny
b3NzZmFkZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTc0MzksNiArNzQ0MCw4IEBACiAJCTA3Mjc3RTQ4
MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjc3RTQ5MTdEMDE4Q0MwMDE1NTM0RCAv
KiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGxhdGZvcm1UZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcyOTdGQTUxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI5N0ZBNjFD
MTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJBRTFERjE4M0MwNzQxMDAwQTU5ODggLyogUGx1Z2lu
UmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luUmVw
bGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQUUxRTAxODNDMDc0
MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkFFMUUxMTgzQzA3NDEwMDBBNTk4OCAv
KiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0
aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg1MDAsNyArODUwMyw2IEBACiAJCTJENzdBQzI4MUJGMkI5ODYwMDcyNDcwQSAv
KiBOU1RleHRGaW5kZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNU
ZXh0RmluZGVyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzdBQzJDMUJG
MkI5QTAwMDcyNDcwQSAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEN0VEMEE5
MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVyRXZlbnRCYXNlZE1vY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMkQ3RUQwQUExQkFFOTkxNzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVu
dE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlhQ2xpZW50
TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgyODdGNDE2RTRBMDM4MDA4
NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdExvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRBMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NDcm9z
c2ZhZGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIwNiw2ICsx
NTIwOCw4IEBACiAJCQkJMDcyMjFCOEQxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNsaWVu
dC5oICovLAogCQkJCTA3MjIxQjhFMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDb250cm9s
bGVyLmNwcCAqLywKIAkJCQkwNzIyMUI4RjE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ29u
dHJvbGxlci5oICovLAorCQkJCTA3Mjk3RkE1MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwICovLAorCQkJCTA3Mjk3RkE2MUMxODgxQzUwMDNGMDczNSAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLywKIAkJCQkwNzIyMUI5MDE3Q0VDMzI3MDA4NDhF
NTEgLyogVXNlck1lZGlhUmVxdWVzdC5jcHAgKi8sCiAJCQkJMDcyMjFCOTExN0NFQzMyNzAwODQ4
RTUxIC8qIFVzZXJNZWRpYVJlcXVlc3QuaCAqLywKIAkJCSk7CkBAIC0xNzE1Myw3ICsxNzE1Nyw2
IEBACiAJCQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5j
cHAgKi8sCiAJCQkJMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9j
ay5oICovLAogCQkJCTJEN0VEMEE5MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRN
b2NrLmggKi8sCi0JCQkJMkQ3RUQwQUExQkFFOTkxNzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVu
dE1vY2suaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbW9jazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0yNjE5OCw2ICsyNjIwMSw3IEBACiAJCQkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYw
QjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1OTc0MURC
MUI3RDE0MDEwMDIwMUM5MiAvKiBKU01lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTU3MzlCQkIxQjQyMDEyRDAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2VzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwNzI5N0ZBODFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyog
SlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYx
NDE5MENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzg5Nyw3ICsyNzkwMSw2IEBACiAJCQkJMjU0MkY0REIxMTY2QzI1QTAwRTg5QTg2IC8q
IFVzZXJHZXN0dXJlSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTIwMzk4MzE4Qjk1
QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJpZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkyRTE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlhQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQkyRDdFRDBBQzFCQUU5OTE3MDA0M0IzRTUgLyogVXNlck1lZGlhQ2xpZW50TW9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MkYxN0QxNEQxQzAwNDIwQUExIC8qIFVzZXJNZWRpYUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTMwMTdEMTREMUMwMDQyMEFBMSAv
KiBVc2VyTWVkaWFSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNCNzk3MjE5MDg3NTdC
MDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5Njkx
LDYgKzI5Njk0LDcgQEAKIAkJCQk1MTcxMzkwNTFCRjY0REVDMDAwRDVGMDEgLyogTWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFDQkMwQ0ExMjcxM0QwQTAw
OTRGOUIyIC8qIEpTRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzUxMzdDRjIxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3RyaW5nTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwNzI5N0ZBNzFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBMUI2Rjk3MTU4ODY5QzgwMDExQThDNCAv
KiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NDY0OTcx
MUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNjQ2NDlDMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svVXNlck1lZGlh
Q2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
VXNlck1lZGlhQ2xpZW50TW9jay5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MSw5MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFVzZXJNZWRpYUNsaWVudE1vY2tfaAotI2RlZmluZSBVc2VyTWVkaWFDbGllbnRNb2NrX2gK
LQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJUaW1lckV2ZW50QmFzZWRN
b2NrLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCi0jaW5jbHVkZSAiVXNlck1lZGlh
UmVxdWVzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFVzZXJNZWRpYUNsaWVu
dFJlcXVlc3ROb3RpZmllciA6IHB1YmxpYyBNb2NrTm90aWZpZXIgewotcHVibGljOgotICAgIFVz
ZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJiByZXF1
ZXN0LCBib29sIHJlcXVlc3RTdWNjZXNzKQotICAgICAgICA6IG1fcmVxdWVzdChXVEY6Om1vdmUo
cmVxdWVzdCkpCi0gICAgICAgICwgbV9yZXF1ZXN0U3VjY2VzcyhyZXF1ZXN0U3VjY2VzcykKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaXJlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlm
ICghbV9yZXF1ZXN0U3VjY2VzcykgewotICAgICAgICAgICAgbV9yZXF1ZXN0LT51c2VyTWVkaWFB
Y2Nlc3NEZW5pZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGF1dG8gYXVkaW9EZXZpY2VVSURzID0gbV9yZXF1ZXN0LT5hdWRpb0RldmljZVVJRHMoKTsKLSAg
ICAgICAgYXV0byB2aWRlb0RldmljZVVJRHMgID0gbV9yZXF1ZXN0LT52aWRlb0RldmljZVVJRHMo
KTsKLSAgICAgICAgU3RyaW5nIGFsbG93ZWRBdWRpb1VJRCA9IGF1ZGlvRGV2aWNlVUlEcy5zaXpl
KCkgPyBhdWRpb0RldmljZVVJRHMuYXQoMCkgOiBlbXB0eVN0cmluZygpOwotICAgICAgICBTdHJp
bmcgdmlkZW9BdWRpb1VJRCA9IHZpZGVvRGV2aWNlVUlEcy5zaXplKCkgPyB2aWRlb0RldmljZVVJ
RHMuYXQoMCkgOiBlbXB0eVN0cmluZygpOwotCi0gICAgICAgIG1fcmVxdWVzdC0+dXNlck1lZGlh
QWNjZXNzR3JhbnRlZChhbGxvd2VkQXVkaW9VSUQsIHZpZGVvQXVkaW9VSUQpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gbV9yZXF1ZXN0OwotICAgIGJvb2wg
bV9yZXF1ZXN0U3VjY2VzczsKLX07Ci0KLWNsYXNzIFVzZXJNZWRpYUNsaWVudE1vY2sgZmluYWwg
OiBwdWJsaWMgVXNlck1lZGlhQ2xpZW50LCBwdWJsaWMgVGltZXJFdmVudEJhc2VkTW9jayB7Ci1w
dWJsaWM6Ci0gICAgcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmIHJlcXVl
c3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSZWZQdHI8VXNlck1lZGlhQ2xpZW50UmVxdWVz
dE5vdGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFDbGllbnRSZXF1ZXN0
Tm90aWZpZXIoV1RGOjptb3ZlKHJlcXVlc3QpLCB0cnVlKSk7Ci0gICAgICAgIG1fdGltZXJFdmVu
dHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2ZW50KHRoaXMsIG5vdGlmaWVyKSkpOwotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJN
ZWRpYVJlcXVlc3QmIHJlcXVlc3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSZWZQdHI8VXNl
ck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBVc2Vy
TWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIocmVxdWVzdCwgZmFsc2UpKTsKLSAgICAgICAgbV90
aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQodGhpcywgbm90aWZpZXIp
KSk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIFVzZXJNZWRpYUNsaWVudE1vY2tfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzEsNyArMTcxLDYgQEAKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyTW9jay5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudE1vY2suaCIKICNl
bmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDgxIEBACisyMDE1LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gRXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2
aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjA4NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAgYW5kIFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmNwcC4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6IERlZmluZSBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2suCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
IEFkZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiB0eXBlZGVmLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y2hl
Y2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKTogTmV3LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOiBBZGQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tSZWYv
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkgbWFwcGluZy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KTog
SW1wbGVtZW50IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOiBBZGQgV0tDaGVja1VzZXJNZWRpYVBl
cm1pc3Npb25DYWxsYmFjayB0eXBlZGVmIGFuZCBhZGQKKyAgICAgICAgICBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JPcmlnaW4gdG8gV0tQYWdlVUlDbGllbnRWNi4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tHZXRUeXBlSUQpOgorICAgICAgICAoV0tV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tTZXRIYXNQZXJtaXNzaW9uKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOiBBZGRlZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eTo6c2V0SGFzUGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpp
bnZhbGlkYXRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlh
UGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpk
aWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LiosIGFuZCBX
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay4qLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNlck1lZGlh
UmVxdWVzdCk6IFJlbmFtZWQgZnJvbSBzdGFydFJlcXVlc3QuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6
IFJlbmFtZWQgZnJvbSBjYW5jZWxSZXF1ZXN0LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVj
aXNpb24pOiBtX3JlcXVlc3RUb0lETWFwIC0+CisgICAgICAgICAgbV91c2VyTWVkaWFSZXF1ZXN0
VG9JRE1hcC5yZW1vdmUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOiBOZXcsIHN0YXJ0IHRo
ZSByZXF1ZXN0LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6IE5ldywgY2FuY2VsCisgICAg
ICAgICAgdGhlIHJlcXVlc3QuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOiBOZXcs
IAorICAgICAgICAgIGFsbCB0aGUgcmVxdWVzdCBjb21wbGV0aW9uIG1ldGhvZC4KKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmNhbmNlbFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFVzZXJNZWRpYUFjY2Vzcyk6
IHN0YXJ0UmVxdWVzdCAtPiBzdGFydFVzZXJNZWRpYVJlcXVlc3QuCisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdCk6IGNhbmNl
bFJlcXVlc3QgLT4gY2FuY2VsVXNlck1lZGlhUmVxdWVzdC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlck1lZGlhQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24pOiBOZXcuCisgICAgICAg
IChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrKTogTmV3LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrKTogTmV3LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBEaWRD
b21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay4KKwogMjAxNS0xMi0wOCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIFJl
bmFtZSBVc2VyTWVkaWFDbGllbnQgYW5kIFVzZXJNZWRpYUNvbnRyb2xsZXIgbWV0aG9kcwpJbmRl
eDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgc2V0KFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogICAg
IFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eS5jcHAKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
Y3BwCiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC00NTQsNiArNDU1LDcg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0
ZVJlZi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCisgICAgVUlQcm9jZXNz
L0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpYnJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDE5
Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJDb250ZW50Q29u
dHJvbGxlciwKICAgICAgICAgVXNlckNvbnRlbnRFeHRlbnNpb24sCiAgICAgICAgIFVzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUsCisgICAgICAgIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaywKICAg
ICAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIFZpYnJhdGlvbiwKICAg
ICAgICAgVmlld3BvcnRBdHRyaWJ1dGVzLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tTZXNzaW9uU3RhdAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tVc2VyQ29udGVudENvbnRyb2xsZXIqIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlKiBXS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1VzZXJDb250ZW50RmlsdGVyKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmOwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sqIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlclNjcmlwdCogV0tVc2VyU2NyaXB0UmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJyYXRpb24qIFdLVmlicmF0aW9uUmVmOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmgiCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCkKKyAg
ICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAgICAsIG1fdXNlck1lZGlhSUQodXNlck1lZGlhSUQp
Cit7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OnNldEhhc1BlcnNp
c3RlbnRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBBU1NFUlQobV9tYW5hZ2VyKTsK
KyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tYW5hZ2VyLT5k
aWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhtX3VzZXJNZWRpYUlELCBhbGxvd2Vk
KTsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eV9oCisjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5X2gK
KworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRp
YVNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk7CisK
K2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5IDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+
IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwg
dWludDY0X3QgdXNlck1lZGlhSUQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlEKSk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihib29sIGFsbG93ZWQp
OworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jiwg
dWludDY0X3QgdXNlck1lZGlhSUQpOworCisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKKyAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJ
KHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE2
ICszMiwxNiBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6CiAKIHZv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1
ZXN0cygpCiB7Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nUmVxdWVzdHMudmFs
dWVzKCkpCisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVz
dHMudmFsdWVzKCkpCiAgICAgICAgIHJlcXVlc3QtPmludmFsaWRhdGUoKTsKIAotICAgIG1fcGVu
ZGluZ1JlcXVlc3RzLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuY2xl
YXIoKTsKIH0KIAogUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50
NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcykKIHsKICAgICBSZWZQdHI8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlE
cywgdmlkZW9EZXZpY2VVSURzKTsKLSAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlh
SUQsIHJlcXVlc3QuZ2V0KCkpOworICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmFkZCh1
c2VyTWVkaWFJRCwgcmVxdWVzdC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OwogfQogCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHIKICAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9wZW5kaW5nUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCkpCisgICAgaWYgKCFt
X3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKSkKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKQEAgLTYwLDQgKzYwLDI2IEBAIHZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHIKICNlbmRpZgogfQogCitQYXNzUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90
IHVzZXJNZWRpYUlEKQoreworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUoKnRoaXMs
IHVzZXJNZWRpYUlEKTsKKyAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5hZGQodXNlck1lZGlh
SUQsIHJlcXVlc3QuZ2V0KCkpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKwor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkQ29tcGxldGVV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCkpCisgICAgICAg
IHJldHVybjsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjayh1c2VyTWVkaWFJRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAxOTM3
NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogI2lmbmRl
ZiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCiAjZGVmaW5lIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKIAorI2luY2x1ZGUgIlVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTMyLDE0ICszMywx
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0cygpOwogCi0gICAgLy8g
Q3JlYXRlIGEgcmVxdWVzdCB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuCiAgICAgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKLQotICAgIC8vIENhbGxlZCBi
eSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5IHdoZW4gYSBkZWNpc2lvbiBpcyBtYWRl
IGJ5IHRoZSB1c2VyLgogICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNp
c2lvbih1aW50NjRfdCwgYm9vbCBhbGxvdywgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwg
Y29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAKKworICAgIFBhc3NSZWZQdHI8VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IGNyZWF0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1
aW50NjRfdCB1c2VyTWVkaWFJRCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayh1aW50NjRfdCwgYm9vbCBhbGxvdyk7CisKIHByaXZhdGU6Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+PiBtX3Bl
bmRpbmdSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzOworICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4+IG1f
cGVuZGluZ0RldmljZVJlcXVlc3RzOwogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogfTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjU5LDYgKzUyNTksMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RVc2VyTWVkaWFQZXJtaQogICAgICAgICByZXF1ZXN0LT5kZW55KCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1
c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCit7
CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQp
OworICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOworCisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKSk7CisgICAg
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5PiByZXF1ZXN0ID0gbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KHVzZXJNZWRpYUlEKTsKKworICAgIGlmICghbV91aUNsaWVudC0+Y2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luKCp0aGlzLCAqZnJhbWUsICpvcmlnaW4uZ2V0KCksICpyZXF1ZXN0Lmdl
dCgpKSkKKyAgICAgICAgcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oZmFsc2Up
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24o
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAgICBp
ZiAoIWlzUmVxdWVzdElEVmFsaWQocmVxdWVzdElEKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5MCw2ICsxMTkw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
RnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKKyAgICB2b2lkIGNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJ1bk1vZGFsKCk7CiAg
ICAgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjYy
LDYgKzI2Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICAjIE1lZGlhU3RlYW0gbWVzc2FnZXMKICAgICBSZXF1ZXN0VXNlck1lZGlh
UGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgVmVjdG9yPFN0cmluZz4gYXVkaW9EZXZpY2VVSURz
LCBWZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJRHMpCisgICAgQ2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyKQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNz
YWdlcwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAko
cmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBj
bGFzcyBOYXRpdmVXZWJXaGVlbEV2ZW50OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTMxLDYgKzEzMiw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
KiwgV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IFNlY3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2hl
Y2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBTZWN1cml0eU9yaWdpbiosIFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gUHJpbnRpbmcuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxOTM3
NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eTsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xh
c3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTsKQEAgLTE2MSw2ICsxNjIsNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tUZXh0Q2hlY2tlclJlZiwgV2ViCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZiwgQVBJOjpVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYs
IEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24pCitXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tSZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0
UmVmLCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYs
IFdlYlZpYnJhdGlvblByb3h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE3LDYgKzIwMTcsMTUgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkmIHJlcXVlc3QpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgbV9jbGllbnQuY2hlY2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uRm9yT3JpZ2luKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoJm9y
aWdpbiksIHRvQVBJKCZyZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFn
ZVByb3h5KiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VVSUNsaWVudC5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiAr
OTcsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1CiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VQaW5uZWRTdGF0ZURpZENoYW5nZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VJc1BsYXlp
bmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRl
ZiB2b2lkICgqV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1JlZiBkZXZpY2VzUmVxdWVzdCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRDbGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlTWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFu
Z2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYgbWV0
YWRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCkBAIC01NDUsNiArNTQ2LDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWNiB7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFs
ZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0QWxlcnQ7CiAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsKICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JPcmlnaW47CiB9IFdLUGFnZVVJQ2xpZW50VjY7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCIKKworI2luY2x1ZGUgIlVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLTXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV0tT
dHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tTZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1JlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgYm9vbCBhbGxvd2Vk
KQoreworICAgIHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPnNldEhhc1Bl
cnNpc3RlbnRQZXJtaXNzaW9uKGFsbG93ZWQpOworfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5k
ZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tfaAorI2RlZmluZSBXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja19oCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrU2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oV0tVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tSZWYsIGJvb2wpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgorCisjZW5kaWYgLyogV0tNZWRpYURldmljZXNSZXF1ZXN0X2ggKi8KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTAgQEAKIAkJMDBCOTY2MTYxOEUy
NENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5k
Q2xpZW50LmggKi87IH07CiAJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2
MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi87IH07CiAJCTAwQjk2NjFBMThF
MjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVu
dC5oICovOyB9OworCQkwNzI5N0Y5RTFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkw
NzI5N0Y5RjFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RjlE
MUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3Mjk3RkEyMUMxODZBREIwMDNG
MDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyog
V0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdT
ID0gKCk7IH07IH07CisJCTA3Mjk3RkEzMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcyOTdGQTExQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURG
MDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMEYwQzM2NTgxOEMw
NTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcg
LyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLzsgfTsKIAkJMEYwQzM2NUExOEMwNTU1ODAw
RjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJl
cHJlc2VudGF0aW9uLmggKi87IH07CkBAIC0yMTY3LDYgKzIxNzEsMTAgQEAKIAkJMDBCOTY2MTUx
OEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjk3RkExMUMx
ODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJ
Q29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
Q29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4
NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTYxODUs
NiArNjE5Myw4IEBACiAJCQkJQkMwNkY0MzkxMkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi8sCiAJCQkJQkMwNkY0MzgxMkRCQ0NGQjAwMkQ3
OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovLAogCQkJCTMxNjA3
RjM4MTk2MjcwMDIwMDlCODdEQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKKwkJ
CQkwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkuY3BwICovLAorCQkJCTA3Mjk3RjlEMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eS5oICovLAogCQkJCUJDNkVEQUE1MTExMjcxQzYwMEU3Njc4QiAvKiBQ
YWdlQ2xpZW50LmggKi8sCiAJCQkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2Fk
U3RhdGUuY3BwICovLAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmggKi8sCkBAIC02NDgxLDYgKzY0OTEsOCBAQAogCQkJCTdDODlEMjlFMUE2Nzg1NTQwMDNB
NUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oICovLAogCQkJCTdDMjQxMzA2MUFB
Q0ZDQjQwMEE1OEMxNSAvKiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwICovLAog
CQkJCTdDMjQxMzA3MUFBQ0ZDQjQwMEE1OEMxNSAvKiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVSZWYuaCAqLywKKwkJCQkwNzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwICovLAorCQkJCTA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAvKiBX
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovLAogCQkJCTRBNDEwRjM1MTlBRjdBQzMwMDJF
QkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAqLywKIAkJCQk0QTQxMEYz
NjE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovLAog
CQkJCTdDODlEMkExMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuY3BwICovLApA
QCAtNzc3NCw2ICs3Nzg2LDcgQEAKIAkJCQlCQzA2RjQzQTEyREJDQ0ZCMDAyRDc4REUgLyogR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5
NDRBNDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkFEMTI0N0U3OEQwMEJD
MEVDNCAvKiBIYW5kbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NUExQjFCMzM2
ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzN0Y5MERFMzEzNzY1NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MjY2LDYgKzgyNzksNyBAQAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUw
MDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFBNTU1RjYxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVu
dUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0M5MzhFMTExODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDVCMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tp
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwODQsNiArMTAwOTgsNyBAQAogCQkJCUJD
NTRDQzEzMTJENjc0RUUwMDVDNjdCMCAvKiBXS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzA2RjQ0RjEyREJERjNGMDAyRDc4REUgLyogV0tHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MTk5MTJENkNEMTIw
MDEyQTcyQSAvKiBXS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDcyOTdGQTIxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTUwMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1MTE4QkJFMDQ0
MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxNzRBQTcxNDJBQUM2MTAwMzkyNTBGIC8qIFdLR2VvbWV0
cnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDA5OCw2ICsxMDExMyw3IEBACiAJCQkJMEYzQzcy
NUMxOTZGNjA1MjAwQUVERDBDIC8qIFdLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1NDI5M0E1MTk1QTQzREQwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMx
NUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMDcyOTdGOUUxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNBM0I1MTMzOTYwMEIwMDcwOUJF
NCAvKiBXS01lZGlhQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM5OEM0OEE5
MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDOUNENDM5RTFCNEIwMjUzMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OlVzZXJNCiB7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVx
dWVzdCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFVzZXJN
ZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4ocmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkg
OiBudWxscHRyOwpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6CiAgICAgfQogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVS
ZXF1ZXN0SUQoKTsKLSAgICBtX2lkVG9SZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsICZyZXF1ZXN0
KTsKLSAgICBtX3JlcXVlc3RUb0lETWFwLmFkZCgmcmVxdWVzdCwgcmVxdWVzdElEKTsKKyAgICBt
X2lkVG9Vc2VyTWVkaWFSZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKKyAgICBt
X3VzZXJNZWRpYVJlcXVlc3RUb0lETWFwLmFkZCgmcmVxdWVzdCwgcmVxdWVzdElEKTsKIAogICAg
IFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CiAg
ICAgQVNTRVJUKHdlYkZyYW1lKTsKQEAgLTY2LDIwICs2NiwyMCBAQCB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdl
YkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHJlcXVlc3Qu
YXVkaW9EZXZpY2VVSURzKCksIHJlcXVlc3QudmlkZW9EZXZpY2VVSURzKCkpKTsKIH0KIAotdm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoVXNlck1l
ZGlhUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgdWludDY0X3QgcmVxdWVzdElEID0gbV9yZXF1ZXN0VG9JRE1hcC50YWtlKCZyZXF1ZXN0
KTsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBtX3VzZXJNZWRpYVJlcXVlc3RUb0lETWFwLnRh
a2UoJnJlcXVlc3QpOwogICAgIGlmICghcmVxdWVzdElEKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9pZFRvUmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKKyAgICBtX2lkVG9Vc2VyTWVkaWFS
ZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4gcmVxdWVzdCA9IG1faWRUb1JlcXVlc3RNYXAudGFrZShyZXF1ZXN0SUQpOwor
ICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gbV9pZFRvVXNlck1lZGlhUmVx
dWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1
cm47Ci0gICAgbV9yZXF1ZXN0VG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7CisgICAgbV91c2VyTWVk
aWFSZXF1ZXN0VG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7CiAKICAgICBpZiAoYWxsb3dlZCkKICAg
ICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChhdWRpb0RldmljZVVJRCwgdmlk
ZW9EZXZpY2VVSUQpOwpAQCAtODcsNiArODcsNDUgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OgogICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQo
KTsKIH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYg
cmVxdWVzdCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4o
cmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOworCisgICAgaWYgKCFmcmFtZSkg
eworICAgICAgICByZXF1ZXN0LnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRl
UmVxdWVzdElEKCk7CisgICAgbV9pZFRvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrTWFwLmFkZChy
ZXF1ZXN0SUQsICZyZXF1ZXN0KTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1RvSURN
YXAuYWRkKCZyZXF1ZXN0LCByZXF1ZXN0SUQpOworCisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0g
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKKyAgICBBU1NFUlQod2ViRnJhbWUpOwor
CisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHJlcXVlc3Quc2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1VzZXJNZWRpYVBl
cm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI6OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7CisgICAgdWludDY0X3QgcmVxdWVzdElE
ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tUb0lETWFwLnRha2UoJnJlcXVlc3QpOworICAg
IGlmICghcmVxdWVzdElEKQorICAgICAgICByZXR1cm47CisgICAgbV9pZFRvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrTWFwLnJlbW92ZShyZXF1ZXN0SUQpOworfQorCit2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2sodWludDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQpCit7CisgICAgUmVmUHRyPFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjaz4gcmVxdWVzdCA9IG1faWRUb1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVja01hcC50YWtlKHJlcXVlc3RJRCk7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1
cm47CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tUb0lETWFwLnJlbW92ZShyZXF1ZXN0
KTsKKyAgICAKKyAgICByZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihhbGxvd2Vk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5j
bHVkZSA8V2ViQ29yZS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KQEAgLTM0LDE2ICszNSwyMiBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIgCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIAotICAgIHZvaWQgc3RhcnRSZXF1ZXN0KFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdCYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0
IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwor
ICAgIHZvaWQgc3RhcnRVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Qm
KTsKKyAgICB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CisKKyAgICB2b2lkIHN0YXJ0VXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYp
OworICAgIHZvaWQgY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjayYpOworICAgIHZvaWQgZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2sodWludDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQpOwogCiBwcml2YXRl
OgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pj4gbV9pZFRvUmVxdWVzdE1hcDsKLSAgICBIYXNoTWFw
PFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgdWludDY0X3Q+IG1fcmVxdWVzdFRv
SURNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q+PiBtX2lkVG9Vc2VyTWVkaWFSZXF1ZXN0TWFwOworICAgIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCB1aW50NjRfdD4gbV91c2VyTWVkaWFSZXF1ZXN0VG9J
RE1hcDsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2s+PiBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tNYXA7CisgICAg
SGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiwgdWludDY0
X3Q+IG1fdXNlck1lZGlhUGVybWlzc2lvbkNoZWNrVG9JRE1hcDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAkocmV2aXNpb24g
MTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMjMgQEAgdm9p
ZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogdm9pZCBXZWJVc2VyTWVkaWFD
bGllbnQ6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcHJS
ZXF1ZXN0KQogewogICAgIFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QgPSBwclJlcXVlc3QubGVh
a1JlZigpOwotICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5z
dGFydFJlcXVlc3QocmVxdWVzdCk7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpLnN0YXJ0VXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKIH0KIAogdm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoVXNlck1lZGlh
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBtX3BhZ2UudXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2FuY2VsVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0
KTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bihSZWY8V2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiYmIHByUmVxdWVzdCkKK3sK
KyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QgPSBwclJlcXVlc3QubGVha1Jl
ZigpOworICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFy
dFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1ZXN0KTsKK30KKwordm9pZCBXZWJVc2VyTWVk
aWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcigpLmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1
ZXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxMCArMzMsMTQgQEAgcHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKwogICAgIHZvaWQgcmVxdWVzdFVz
ZXJNZWRpYUFjY2VzcyhSZWY8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3QmKSBvdmVycmlkZTsKIAorICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
KFJlZjxXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayYpIG92ZXJyaWRlOworCiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY1LDYgKzMzNjUsMTEgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzcwogewogICAgIG1fdXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dXNlck1lZGlhSUQsIGFsbG93ZWQsIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiB9
CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWlu
dDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX3VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5kaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1
c2VyTWVkaWFJRCwgYWxsb3dlZCk7Cit9CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiArMTEwNSw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVk
aWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwg
Y29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJ
RCk7CisgICAgV0tfRVhQT1JUIHZvaWQgZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODIs
NiArMjgyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICAjIE1lZGlhU3RlYW0KICAgICBEaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQs
IFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3RyaW5nIHZpZGVvRGV2aWNlVUlEKQorICAgIERpZENv
bXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29s
IGFsbG93ZWQpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMi0wOSAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEV4cG9zZSBt
ZWRpYSBjYXB0dXJlIGRldmljZXMgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyB0byBXZWJDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbWV0aG9k
cyBhbmQgaGVscGVycyBmb3IgV0sxIHBlcm1pc3Npb24gY2hlY2tlciBpbnRlcmZhY2UuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tOgorICAgICAgICAodXNlck1lZGlhUmVx
dWVzdHNNYXApOgorICAgICAgICAoQWRkUmVxdWVzdFRvUmVxdWVzdE1hcCk6CisgICAgICAgIChS
ZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXApOgorICAgICAgICAodXNlck1lZGlhQ2hlY2tNYXAp
OgorICAgICAgICAoQWRkUGVybWlzc2lvbkNoZWNrVG9NYXApOgorICAgICAgICAoUmVtb3ZlUGVy
bWlzc2lvbkNoZWNrRnJvbU1hcCk6CisgICAgICAgIChXZWJVc2VyTWVkaWFDbGllbnQ6OldlYlVz
ZXJNZWRpYUNsaWVudCk6CisgICAgICAgIChXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2Vy
TWVkaWFBY2Nlc3MpOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVk
aWFBY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6Y2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5TGlz
dGVuZXIgYWxsb3ddKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgZGVu
eV0pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXIgaW5pdFdp
dGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBv
bGljeUNoZWNrZXJMaXN0ZW5lciBjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tdKToKKyAg
ICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyIGFsbG93XSk6CisgICAg
ICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBkZW55XSk6CisgICAgICAg
ICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBkZW55T25seVRoaXNSZXF1ZXN0
XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBzaG91bGRD
bGVhckNhY2hlXSk6CisgICAgICAgIChBZGRSZXF1ZXN0VG9NYXApOiBEZWxldGVkLgorICAgICAg
ICAoUmVtb3ZlUmVxdWVzdEZyb21NYXApOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2Vi
VUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxNS0xMi0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIHRvOgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgJKHJldmlz
aW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFVzZXJNZWRpYUNsaWVudDsKK2NsYXNzIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjazsKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7CiB9CiAKQEAgLTQ0LDkgKzQ1LDEz
IEBAIHB1YmxpYzoKICAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCk7CiAKICAgICAvLyBVc2VyTWVk
aWFDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhSZWY8V2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNh
bmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb24oUmVmPFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soV2ViQ29y
ZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHBhZ2VE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX3dlYlZpZXc7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
VXNlck1lZGlhQ2xpZW50Lm1tCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KICNp
bXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUmVxdWVzdC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDYgKzUxLDE0IEBAIC0gKHZvaWQpY2Fu
Y2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdDsKIC0gKHZvaWQpZGVueTsKIEBlbmQKIAorQGludGVy
ZmFjZSBXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXIgOiBOU09iamVjdCA8V2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXI+IHsKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrPiBfcmVxdWVzdDsKK30KKy0gKGlkKWluaXRXaXRoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
OihQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4pcmVxdWVzdDsKKy0gKHZvaWQp
Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOworLSAodm9pZClkZW55OworQGVuZAorCiB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBSZXRhaW5QdHI8V2ViVXNl
ck1lZGlhUG9saWN5TGlzdGVuZXI+PiBVc2VyTWVkaWFSZXF1ZXN0c01hcDsKIAogc3RhdGljIFVz
ZXJNZWRpYVJlcXVlc3RzTWFwJiB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpCkBAIC01OCwxNiArNjcs
MzUgQEAgc3RhdGljIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiB1c2VyTWVkaWFSZQogICAgIHJldHVy
biByZXF1ZXN0czsKIH0KIAotc3RhdGljIHZvaWQgQWRkUmVxdWVzdFRvTWFwKFVzZXJNZWRpYVJl
cXVlc3QqIHJlcXVlc3QsIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lcj4gbGlz
dGVuZXIpCitzdGF0aWMgdm9pZCBBZGRSZXF1ZXN0VG9SZXF1ZXN0TWFwKFVzZXJNZWRpYVJlcXVl
c3QqIHJlcXVlc3QsIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lcj4gbGlzdGVu
ZXIpCiB7CiAgICAgdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5zZXQocmVxdWVzdCwgbGlzdGVuZXIp
OwogfQogCi1zdGF0aWMgdm9pZCBSZW1vdmVSZXF1ZXN0RnJvbU1hcChVc2VyTWVkaWFSZXF1ZXN0
KiByZXF1ZXN0KQorc3RhdGljIHZvaWQgUmVtb3ZlUmVxdWVzdEZyb21SZXF1ZXN0TWFwKFVzZXJN
ZWRpYVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5yZW1v
dmUocmVxdWVzdCk7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrPiwgUmV0YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lcj4+
IFVzZXJNZWRpYUNoZWNrTWFwOworCitzdGF0aWMgVXNlck1lZGlhQ2hlY2tNYXAmIHVzZXJNZWRp
YUNoZWNrTWFwKCkKK3sKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVXNlck1l
ZGlhQ2hlY2tNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgcmV0dXJuIHJlcXVlc3RzOworfQorCitz
dGF0aWMgdm9pZCBBZGRQZXJtaXNzaW9uQ2hlY2tUb01hcChVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2sqIHJlcXVlc3QsIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXI+
IGxpc3RlbmVyKQoreworICAgIHVzZXJNZWRpYUNoZWNrTWFwKCkuc2V0KHJlcXVlc3QsIGxpc3Rl
bmVyKTsKK30KKworc3RhdGljIHZvaWQgUmVtb3ZlUGVybWlzc2lvbkNoZWNrRnJvbU1hcChVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2sqIHJlcXVlc3QpCit7CisgICAgdXNlck1lZGlhQ2hlY2tNYXAo
KS5yZW1vdmUocmVxdWVzdCk7Cit9CisKKwogV2ViVXNlck1lZGlhQ2xpZW50OjpXZWJVc2VyTWVk
aWFDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewpA
QCAtMTAzLDcgKzEzMSw3IEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1l
ZGkKICAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdp
biBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOnJlcXVlc3QtPnNlY3VyaXR5
T3JpZ2luKCldOwogCiAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2Vi
T3JpZ2luLCBsaXN0ZW5lcik7Ci0gICAgQWRkUmVxdWVzdFRvTWFwKHJlcXVlc3QsIGxpc3RlbmVy
KTsKKyAgICBBZGRSZXF1ZXN0VG9SZXF1ZXN0TWFwKHJlcXVlc3QsIGxpc3RlbmVyKTsKIAogICAg
IFt3ZWJPcmlnaW4gcmVsZWFzZV07CiAgICAgW2xpc3RlbmVyIHJlbGVhc2VdOwpAQCAtMTIyLDYg
KzE1MCw0MCBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhCiAgICAg
cmVxdWVzdHNNYXAucmVtb3ZlKGl0KTsKIH0KIAordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNo
ZWNrVXNlck1lZGlhUGVybWlzc2lvbihSZWY8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiYmIHBy
cFJlcXVlc3QpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKiByZXF1ZXN0ID0gJnBycFJlcXVlc3QuZ2V0KCk7CisgICAg
U0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6Y2hlY2tQb2xpY3lGb3JVc2VyTWVkaWFS
ZXF1ZXN0RnJvbU9yaWdpbjpsaXN0ZW5lcjopOworICAgIGlmICghW1ttX3dlYlZpZXcgVUlEZWxl
Z2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgeworICAgICAgICByZXF1ZXN0LT5z
ZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXIgKmxpc3RlbmVyID0gW1tX
ZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrOnJlcXVlc3RdOworICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmln
aW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlP
cmlnaW46cmVxdWVzdC0+c2VjdXJpdHlPcmlnaW4oKV07CisKKyAgICBDYWxsVUlEZWxlZ2F0ZSht
X3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGxpc3RlbmVyKTsKKyAgICBBZGRQZXJtaXNz
aW9uQ2hlY2tUb01hcChyZXF1ZXN0LCBsaXN0ZW5lcik7CisKKyAgICBbd2ViT3JpZ2luIHJlbGVh
c2VdOworICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Cit9CisKKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3Qp
Cit7CisgICAgVXNlck1lZGlhQ2hlY2tNYXAmIHJlcXVlc3RzTWFwID0gdXNlck1lZGlhQ2hlY2tN
YXAoKTsKKyAgICBVc2VyTWVkaWFDaGVja01hcDo6aXRlcmF0b3IgaXQgPSByZXF1ZXN0c01hcC5m
aW5kKCZyZXF1ZXN0KTsKKyAgICBpZiAoaXQgPT0gcmVxdWVzdHNNYXAuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFtpdC0+dmFsdWUgY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
XTsKKyAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOworfQogCiBAaW1wbGVtZW50YXRpb24gV2Vi
VXNlck1lZGlhUG9saWN5TGlzdGVuZXIKIApAQCAtMTU1LDcgKzIxNyw3IEBAIC0gKHZvaWQpYWxs
b3cKICAgICAKICAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChfcmVxdWVzdC0+
YWxsb3dlZEF1ZGlvRGV2aWNlVUlEKCksIF9yZXF1ZXN0LT5hbGxvd2VkVmlkZW9EZXZpY2VVSUQo
KSk7CiAKLSAgICBSZW1vdmVSZXF1ZXN0RnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7CisgICAgUmVt
b3ZlUmVxdWVzdEZyb21SZXF1ZXN0TWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogfQogCkBA
IC0xNjYsNyArMjI4LDcgQEAgLSAodm9pZClkZW55CiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7Ci0gICAgUmVtb3ZlUmVxdWVzdEZy
b21NYXAoX3JlcXVlc3QuZ2V0KCkpOworICAgIFJlbW92ZVJlcXVlc3RGcm9tUmVxdWVzdE1hcChf
cmVxdWVzdC5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTg0LDQgKzI0Niw2NyBAQCAtIChCT09M
KXNob3VsZENsZWFyQ2FjaGUKICNlbmRpZgogCiBAZW5kCisKKworQGltcGxlbWVudGF0aW9uIFdl
YlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lcgorCistIChpZClpbml0V2l0aFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjazooUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+KXJl
cXVlc3QKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3JlcXVlc3QgPSByZXF1ZXN0
OworICAgIHJldHVybiBzZWxmOworI2VuZGlmCit9CisKKy0gKHZvaWQpY2FuY2VsVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAoIV9y
ZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBfcmVxdWVzdCA9IG51bGxwdHI7CisjZW5k
aWYKKworfQorCistICh2b2lkKWFsbG93Cit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBpZiAoIV9yZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBfcmVxdWVzdC0+c2V0SGFz
UGVyc2lzdGVudFBlcm1pc3Npb24odHJ1ZSk7CisgICAgUmVtb3ZlUGVybWlzc2lvbkNoZWNrRnJv
bU1hcChfcmVxdWVzdC5nZXQoKSk7CiAjZW5kaWYKK30KKworLSAodm9pZClkZW55Cit7CisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAoIV9yZXF1ZXN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBfcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24odHJ1ZSk7CisgICAg
UmVtb3ZlUGVybWlzc2lvbkNoZWNrRnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7CisjZW5kaWYKK30K
KworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpZGVueU9ubHlUaGlzUmVxdWVzdAoreworfQor
CistIChCT09MKXNob3VsZENsZWFyQ2FjaGUKK3sKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjI0NQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK0BlbmQKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJ
RGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1OCw2ICsyNTgsNyBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURlbGVnYXRlUHJpdmF0
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0
ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOwogCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVl
c3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2Vi
QWxsb3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOworLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBjaGVja1BvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOihX
ZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5
TGlzdGVuZXI+KWxpc3RlbmVyOwogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
ZWxlbWVudERpZEZvY3VzTm9kZTooRE9NTm9kZSAqKW5vZGU7CiAtICh2b2lkKXdlYlZpZXc6KFdl
YlZpZXcgKilzZW5kZXIgZWxlbWVudERpZEJsdXJOb2RlOihET01Ob2RlICopbm9kZTsKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE5Mzg3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3
IEBACisyMDE1LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFtNZWRpYVN0cmVhbV0gRXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJz
aXN0ZW50IHBlcm1pc3Npb25zIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjA4NworCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0
aGUgbmV3IHVzZXIgbWVkaWEgcGVybWlzc2lvbiBjaGVja2VyIHBhZ2UgVUkgY2xpZW50IG1ldGhv
ZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OmNoZWNr
VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpjcmVhdGVPdGhlclBhZ2UpOiBBZGQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRp
b25zKTogRGl0dG8uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKTogQ2xlYXIgbV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9ucy4KKyAg
ICAgICAgKFdUUjo6b3JpZ2luVXNlclZpc2libGVOYW1lKTogTmV3LCBjcmVhdGUgYSBzdHJpbmcg
Zm9yIHRoZSBvcmlnaW4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpoYW5kbGVDaGVj
a09mVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6IFNldCB0aGUgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tSZWYKKyAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHN0YXRlIG9mIHRoZSBv
cmlnaW4gcGVybWlzc2lvbiBtYXAuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpoYW5k
bGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6IFJlbWVtYmVyIGJvdGggdGhlIG9yaWdpbiBh
bmQgdGhlCisgICAgICAgICAgcmVxdWVzdCBzbyB3ZSBjYW4gdXBkYXRlIHRoZSBvcmlnaW4gcGVy
bWlzc2lvbiBtYXAgaW4gZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJ
ZlBvc3NpYmxlLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJZlBvc3NpYmxlKTogVXBkYXRlIHRoZQorICAgICAg
ICAgIG9yaWdpbiBwZXJtaXNzaW9uIG1hcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisKIDIwMTUtMTItMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBhdGxlYXN0IG9uZSBzaW11bGF0b3IgZXZlbiBpZiBt
YXggcHJvY2VzcyBsaW1pdCBpcyBsb3cKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAog
I2luY2x1ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMjAxLDkgKzIwMywxNCBA
QCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlCiAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLmhhbmRsZUdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QocGVy
bWlzc2lvblJlcXVlc3QpOwogfQogCi1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmln
aW5SZWYsIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3Qs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYgb3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHBlcm1pc3Np
b25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5oYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChwZXJtaXNzaW9u
UmVxdWVzdCk7CisgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhbmRsZVVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgcGVybWlzc2lvblJlcXVlc3QpOworfQorCitzdGF0
aWMgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tSZWYgY2hlY2tSZXF1ZXN0LCBjb25zdCB2b2lkKikKK3sKKyAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuaGFuZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4o
b3JpZ2luLCBjaGVja1JlcXVlc3QpOwogfQogCiBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFnZSwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tX
aW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykK
QEAgLTI3Nyw3ICsyODQsOCBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVy
UGFnCiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlw
dEFsZXJ0CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAgICAgIDAgIC8v
IHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAor
ICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCiAgICAgfTsKICAgICBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50LmJhc2UpOwog
ICAgIApAQCAtNTQwLDYgKzU0OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZp
ZXdXaXRoT3AKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAsIC8v
IHJ1bkphdmFTY3JpcHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQK
KyAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luLAogICAgIH07CiAgICAg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVu
dC5iYXNlKTsKIApAQCAtNzQ0LDYgKzc1Myw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3QKIAogICAgIC8vIFJlc2V0IFVzZXJNZWRpYSBwZXJtaXNzaW9ucy4KICAg
ICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cy5jbGVhcigpOworICAgIG1fdXNlck1lZGlh
T3JpZ2luUGVybWlzc2lvbnMgPSBudWxscHRyOwogICAgIG1faXNVc2VyTWVkaWFQZXJtaXNzaW9u
U2V0ID0gZmFsc2U7CiAgICAgbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkID0gZmFsc2U7
CiAKQEAgLTE2NDIsOSArMTY1MiwzOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRVc2VyTWVk
aWFQZXJtaXNzCiAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJ
ZlBvc3NpYmxlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmhhbmRsZVVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QpCitzdGF0aWMgV0tTdHJpbmdSZWYgb3JpZ2luVXNlclZpc2libGVO
YW1lKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQoreworICAgIHN0ZDo6c3RyaW5nIGhvc3Qg
PSB0b1NURChhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4pKSkuY19zdHIo
KTsKKyAgICBzdGQ6OnN0cmluZyBwcm90b2NvbCA9IHRvU1REKGFkb3B0V0soV0tTZWN1cml0eU9y
aWdpbkNvcHlQcm90b2NvbChvcmlnaW4pKSkuY19zdHIoKTsKKyAgICB1bnNpZ25lZCBzaG9ydCBw
b3J0ID0gV0tTZWN1cml0eU9yaWdpbkdldFBvcnQob3JpZ2luKTsKKworICAgIFN0cmluZyB1c2Vy
VmlzaWJsZU5hbWU7CisgICAgaWYgKHBvcnQpCisgICAgICAgIHVzZXJWaXNpYmxlTmFtZSA9IFN0
cmluZzo6Zm9ybWF0KCIlczovLyVzOiVkIiwgcHJvdG9jb2wuY19zdHIoKSwgaG9zdC5jX3N0cigp
LCBwb3J0KTsKKyAgICBlbHNlCisgICAgICAgIHVzZXJWaXNpYmxlTmFtZSA9IFN0cmluZzo6Zm9y
bWF0KCIlczovLyVzIiwgcHJvdG9jb2wuY19zdHIoKSwgaG9zdC5jX3N0cigpKTsKKworICAgIHJl
dHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyVmlzaWJsZU5hbWUudXRmOCgp
LmRhdGEoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmhhbmRsZUNoZWNrT2ZVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBjb25zdCBX
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiYgY2hlY2tSZXF1ZXN0KQoreworICAgIGJvb2wg
YWxsb3dlZCA9IGZhbHNlOworCisgICAgaWYgKG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMp
IHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG9yaWdpblN0cmluZyA9IG9yaWdp
blVzZXJWaXNpYmxlTmFtZShvcmlnaW4pOworICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobV91c2Vy
TWVkaWFPcmlnaW5QZXJtaXNzaW9ucy5nZXQoKSwgb3JpZ2luU3RyaW5nLmdldCgpKSk7CisgICAg
ICAgIGlmIChXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCisgICAg
ICAgICAgICBhbGxvd2VkID0gV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpOworICAgIH0KKworICAg
IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrU2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oY2hl
Y2tSZXF1ZXN0LCBhbGxvd2VkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aGFuZGxlVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKLSAgICBtX3VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0cy5hcHBlbmQodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOworICAg
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcmln
aW4sIHJlcXVlc3QpKTsKICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdElmUG9zc2libGUoKTsKIH0KIApAQCAtMTY1Myw5ICsxNjkyLDE3IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclVzZXIKICAgICBpZiAoIW1faXNVc2VyTWVkaWFQZXJt
aXNzaW9uU2V0KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBt
X3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cykgewotICAgICAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiBhdWRpb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVk
aW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5
UmVmPiB2aWRlb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9E
ZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fdXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RzKSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcGFpci5maXJz
dC5nZXQoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJRHMocmVxdWVzdCk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLQXJyYXlSZWY+IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RWaWRlb0RldmljZVVJRHMocmVxdWVzdCk7CisKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG9yaWdpblN0cmluZyA9IGFkb3B0V0sob3JpZ2luVXNlclZpc2libGVOYW1l
KG9yaWdpbikpOworICAgICAgICBpZiAoIW1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMpCisg
ICAgICAgICAgICBtX3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFi
bGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+
IGFsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtX2lzVXNlck1lZGlhUGVybWlzc2lv
bkFsbG93ZWQpKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3VzZXJNZWRpYU9yaWdp
blBlcm1pc3Npb25zLmdldCgpLCBvcmlnaW5TdHJpbmcuZ2V0KCksIGFsbG93ZWQuZ2V0KCkpOwog
CiAgICAgICAgIGlmIChtX2lzVXNlck1lZGlhUGVybWlzc2lvbkFsbG93ZWQgJiYgKFdLQXJyYXlH
ZXRTaXplKHZpZGVvRGV2aWNlVUlEcy5nZXQoKSkgfHwgV0tBcnJheUdldFNpemUoYXVkaW9EZXZp
Y2VVSURzLmdldCgpKSkpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB2
aWRlb0RldmljZVVJRDsKQEAgLTE2NzAsMTAgKzE3MTcsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGF1ZGlvRGV2aWNlVUlEID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOwogCi0g
ICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdC5nZXQo
KSwgYXVkaW9EZXZpY2VVSUQuZ2V0KCksIHZpZGVvRGV2aWNlVUlELmdldCgpKTsKKyAgICAgICAg
ICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0LCBhdWRpb0Rldmlj
ZVVJRC5nZXQoKSwgdmlkZW9EZXZpY2VVSUQuZ2V0KCkpOwogCiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkocmVxdWVzdC5nZXQoKSk7
CisgICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShyZXF1ZXN0KTsK
ICAgICB9CiAgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMuY2xlYXIoKTsKIH0KSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDE5Mzc3
OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbjsKQEAgLTk1LDcgKzk2LDggQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFTdHJl
YW0uCiAgICAgdm9pZCBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGJvb2wpOwotICAgIHZvaWQgaGFu
ZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFJlZik7CisgICAgdm9pZCBoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3Vy
aXR5T3JpZ2luUmVmLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKKyAgICB2b2lk
IGhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdLU2VjdXJpdHlPcmln
aW5SZWYsIGNvbnN0IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmJik7CiAKICAgICAvLyBQ
b2xpY3kgZGVsZWdhdGUuCiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVu
YWJsZWQsIGJvb2wgcGVybWlzc2l2ZSk7CkBAIC0yODIsNyArMjg0LDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9pc0dlb2xv
Y2F0aW9uUGVybWlzc2lvbkFsbG93ZWQ7CiAKLSAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZj4+IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Rz
OworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fdXNlck1lZGlhT3Jp
Z2luUGVybWlzc2lvbnM7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8V0tSZXRhaW5Q
dHI8V0tTZWN1cml0eU9yaWdpblJlZj4sIFdLUmV0YWluUHRyPFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RSZWY+Pj4gUGVybWlzc2lvblJlcXVlc3RNYXA7CisgICAgUGVybWlzc2lvblJlcXVl
c3RNYXAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHM7CisKICAgICBib29sIG1faXNVc2Vy
TWVkaWFQZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxv
d2VkOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTM3NzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMi0wOSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEV4
cG9zZSBtZWRpYSBjYXB0dXJlIGRldmljZXMgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyB0byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIw
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmlj
ZXMuaHRtbDoKKwogMjAxNS0xMi0wOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIERvIG5vdCBpbnNlcnQgcG9zaXRpb25lZCByZW5kZXJlcnMgdG8gbXVsdGlwbGUg
Z1Bvc2l0aW9uZWREZXNjZW5kYW50c01hcC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0
ZURldmljZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTM3NzkpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNiwxNiArNiwzOCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMgaXMgYW4gaW5z
dGFuY2Ugb2YgT2JqZWN0CiBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2
aWNlcyBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogCisKKyoqKiBDYWxsaW5nIG1lZGlhRGV2
aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdoZW4gcGVyc2lzdGVudCBhY2Nlc3MgSEFTIE5PVCBiZWVu
IGdyYW50ZWQKKworUEFTUyBjYXB0dXJlRGV2aWNlcy5sZW5ndGggaXMgbm9uLXplcm8uCisKK1BB
U1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmRl
dmljZUlkIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxs
LgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzICIiCitQQVNTIGNhcHR1cmVEZXZpY2UuZ3Jv
dXBJZCBpcyBub24tbnVsbC4KKworUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwu
CitQQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVE
ZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgIiIK
K1BBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgorCisKKyoqKiBDYWxsaW5n
IG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdoZW4gcGVyc2lzdGVudCBhY2Nlc3MgSEFT
IGJlZW4gZ3JhbnRlZAorCiBQQVNTIGNhcHR1cmVEZXZpY2VzLmxlbmd0aCBpcyBub24temVyby4K
IAogUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwuCiBQQVNTIGNhcHR1cmVEZXZp
Y2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCiBQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9u
LW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm90ICIiCiBQQVNTIGNhcHR1cmVE
ZXZpY2UuZ3JvdXBJZCBpcyBub24tbnVsbC4KIAogUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMg
bm9uLW51bGwuCiBQQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCiBQQVNT
IGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFi
ZWwgaXMgbm90ICIiCiBQQVNTIGNhcHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24tbnVsbC4KIAog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURl
dmljZXMuaHRtbAkocmV2aXNpb24gMTkzNzc5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05LDYgKzksNyBAQAogICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgdmFyIGNhcHR1cmVE
ZXZpY2VzOwogICAgICAgICAgICAgdmFyIGNhcHR1cmVEZXZpY2U7CisgICAgICAgICAgICB2YXIg
aGF2ZVBlcm1pc3Npb247CiAKICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBNZWRpYURl
dmljZXMuZW51bWVyYXRlRGV2aWNlcygpIik7CiAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CkBAIC0xNywyNSArMTgsNTQgQEAKICAgICAgICAgICAgIHNob3VsZEJlVHlw
ZSgibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIiwgIkZ1bmN0aW9uIik7
CiAgICAgICAgICAgICBkZWJ1ZygiIik7CiAKLSAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZW51bWVyYXRlRGV2aWNlcygpCi0gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24o
ZGV2aWNlcykgewotICAgICAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlcyA9IGRldmljZXM7
Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uWmVybygiY2FwdHVyZURldmljZXMubGVu
Z3RoIik7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlcy5mb3JFYWNoKGZ1bmN0aW9uKGRldmljZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FwdHVyZURldmljZSA9IGRldmljZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5raW5kIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVEZXZpY2UuZGV2aWNlSWQiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5sYWJlbCIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmdy
b3VwSWQiKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVudW1lcmF0ZShuZXh0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRlYnVnKGA8YnI+KioqIENhbGxpbmcgbWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgd2hlbiBwZXJzaXN0ZW50IGFjY2VzcyBIQVMgJHtoYXZlUGVybWlz
c2lvbiA/ICIiIDogIk5PVCAifWJlZW4gZ3JhbnRlZDxicj5gKTsKKyAgICAgICAgICAgICAgICBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKQorICAgICAgICAgICAgICAg
ICAgICAudGhlbihmdW5jdGlvbihkZXZpY2VzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXB0dXJlRGV2aWNlcyA9IGRldmljZXM7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZU5vblplcm8oImNhcHR1cmVEZXZpY2VzLmxlbmd0aCIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcy5mb3JFYWNoKGZ1
bmN0aW9uKGRldmljZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZp
Y2UgPSBkZXZpY2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJjYXB0dXJlRGV2aWNlLmtpbmQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZU5vbk51bGwoImNhcHR1cmVEZXZpY2UuZGV2aWNlSWQiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVEZXZpY2UubGFiZWwiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZVBlcm1pc3Npb24pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlRXF1YWxUb1N0cmluZygiY2FwdHVyZURldmlj
ZS5sYWJlbCIsICIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRW1wdHlTdHJpbmcoImNhcHR1cmVEZXZp
Y2UubGFiZWwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwo
ImNhcHR1cmVEZXZpY2UuZ3JvdXBJZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5leHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAg
ICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKGVyci5uYW1lICsgIjogIiArIGVyci5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdy
YW50UGVybWlzc2lvbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1l
ZGlhUGVybWlzc2lvbih0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcworICAgICAgICAgICAgICAgICAgICAgICAgLmdldFVzZXJNZWRpYSh7YXVkaW86e30s
IHZpZGVvOnt9fSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHN0cmVh
bSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVQZXJtaXNzaW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUobnVsbCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAg
ICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoYG1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSBmYWlsZWQgd2l0aCAk
e2Vyci5uYW1lfTogJHtlcnIubWVzc2FnZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgIC5j
YXRjaChmdW5jdGlvbihlcnIpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChlcnIu
bmFtZSArICI6ICIgKyBlcnIubWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBoYXZlUGVybWlzc2lvbiA9IGZhbHNlOworICAgICAgICAgICAgZW51bWVyYXRlKGdyYW50
UGVybWlzc2lvbik7CiAKICAgICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwogICAgICAgICA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267102</attachid>
            <date>2015-12-10 06:37:24 -0800</date>
            <delta_ts>2015-12-10 11:51:01 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>devices_access_patch_7.txt</filename>
            <type>text/plain</type>
            <size>101789</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTEyLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
RXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgYW4gZXhpc3RpbmcgdGVzdCB3YXMgdXBkYXRlZCB0byB0ZXN0IHRoZSBjaGFu
Z2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5jcHAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1Jl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6fk1lZGlh
RGV2aWNlc1JlcXVlc3QpOiBDbGVhciB0aGUgcGVybWlzc2lvbiBjaGVja2VyIGNsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0KTogQ3Jl
YXRlIGEgcGVybWlzc2lvbiBjaGVja2VyIGFuZCBzdGFydCBpdCBydW5uaW5nLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayk6IFN0YXJ0IHRo
ZSBtZWRpYSBzb3VyY2UgY2hlY2tlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OmRpZENvbXBsZXRlUmVxdWVzdCk6IE9ubHkgaW5jbHVkZSBhIHRyYWNrJ3MgbGFiZWwg
aWYgdGhlCisgICAgICAgICAgcGFnZSBoYXMgcGVybWlzc2lvbiB0byB1c2UgYSBjYXB0dXJlIGRl
dmljZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
aDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6IElu
Y2x1ZGUgcHJvdG90eXBlcyBmb3IgcGVybWlzc2lvbiBjaGVja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhQ2xpZW50Ojp+VXNlck1lZGlhQ2xpZW50KToKKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhQ29udHJvbGxlcjo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKTogTmV3LgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjp+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpjb250
ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
azo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpz
ZXREZXZpY2VBY2Nlc3NNb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja0NsaWVudDo6flVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnNldENsaWVudCk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwfC5oCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Vz
ZXJNZWRpYUNsaWVudE1vY2suaDogUmVtb3ZlZCwgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisKIDIwMTUtMTItMDggIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodCBjbGVhbnVwIGluIFRleHRQYWlu
dGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NzUsNiArOTc1LDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tF
dmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uY3BwCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAorICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKIAogICAgIE1vZHVsZXMvbmF2aWdhdG9yY29udGVu
dHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNw
cAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBA
QCBNZWRpYURldmljZXNSZXF1ZXN0OjpNZWRpYURldmljZXNSZXF1ZXN0CiAKIE1lZGlhRGV2aWNl
c1JlcXVlc3Q6On5NZWRpYURldmljZXNSZXF1ZXN0KCkKIHsKKyAgICBpZiAobV9wZXJtaXNzaW9u
Q2hlY2spCisgICAgICAgIG1fcGVybWlzc2lvbkNoZWNrLT5zZXRDbGllbnQobnVsbHB0cik7CiB9
CiAKIFNlY3VyaXR5T3JpZ2luKiBNZWRpYURldmljZXNSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigp
IGNvbnN0CkBAIC02NSwyOCArNjcsNDcgQEAgU2VjdXJpdHlPcmlnaW4qIE1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OnNlYwogdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkK
IHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwor
ICAgIGlmIChtX3Blcm1pc3Npb25DaGVjaykgeworICAgICAgICBtX3Blcm1pc3Npb25DaGVjay0+
c2V0Q2xpZW50KG51bGxwdHIpOworICAgICAgICBtX3Blcm1pc3Npb25DaGVjayA9IG51bGxwdHI7
CisgICAgfQogICAgIG1fcHJvdGVjdG9yID0gbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYURldmlj
ZXNSZXF1ZXN0OjpzdGFydCgpCiB7CiAgICAgbV9wcm90ZWN0b3IgPSB0aGlzOwotICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzKHRoaXMpOworICAgIG1fcGVybWlzc2lvbkNoZWNrID0gVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrOjpjcmVhdGUoKmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LCAqdGhpcyk7CisgICAgbV9wZXJtaXNzaW9uQ2hlY2stPnN0YXJ0KCk7Cit9CisKK3ZvaWQgTWVk
aWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayhib29sIGFjY2VzcykKK3sKKyAgICBt
X3Blcm1pc3Npb25DaGVjay0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIG1fcGVybWlzc2lvbkNo
ZWNrID0gbnVsbHB0cjsKKworICAgIG1faGFzVXNlck1lZGlhUGVybWlzc2lvbiA9IGFjY2VzczsK
KworICAgIFJlZlB0cjxNZWRpYURldmljZXNSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMo
cHJvdGVjdGVkVGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6
ZGlkQ29tcGxldGVSZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mb1ZlY3RvciYgY2FwdHVyZWRE
ZXZpY2VzKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CisgICAgICAgIG1fcHJvdGVjdG9yID0gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZp
Y2VJbmZvPj4gZGV2aWNlSW5mbzsKICAgICBmb3IgKGF1dG8gZGV2aWNlIDogY2FwdHVyZWREZXZp
Y2VzKSB7CiAgICAgICAgIFRyYWNrU291cmNlSW5mbyogdHJhY2tJbmZvID0gZGV2aWNlLmdldCgp
OwogICAgICAgICBTdHJpbmcgZGV2aWNlVHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNr
U291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5w
dXRUeXBlKCkgOiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCk7CiAKLSAgICAgICAg
Ly8gRklYTUU6IGxhYmVsIGlzIHN1cHBvc2VkIHRvIGJlIGVtcHR5IHVubGVzcyBhIGRldmljZSBp
cyBhdHRhY2hlZCB0byBhbiBhY3RpdmUgTWVkaWFTdHJlYW1UcmFjayBpbiB0aGUgY3VycmVudCBi
cm93c2luZyBjb250ZXh0LCBvcgotICAgICAgICAvLyBwZXJzaXN0ZW50IHBlcm1pc3Npb24gdG8g
YWNjZXNzIHRoZXNlIGxvY2FsIGRldmljZXMgaGFzIGJlZW4gZ3JhbnRlZCB0byB0aGUgcGFnZSdz
IG9yaWdpbi4KLSAgICAgICAgZGV2aWNlSW5mby5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVh
dGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0cmFja0luZm8tPmxhYmVsKCksIHRyYWNrSW5m
by0+aWQoKSwgdHJhY2tJbmZvLT5ncm91cElkKCksIGRldmljZVR5cGUpKTsKKyAgICAgICAgQXRv
bWljU3RyaW5nIGxhYmVsID0gbV9oYXNVc2VyTWVkaWFQZXJtaXNzaW9uID8gdHJhY2tJbmZvLT5s
YWJlbCgpIDogZW1wdHlBdG9tOworICAgICAgICBkZXZpY2VJbmZvLmFwcGVuZChNZWRpYURldmlj
ZUluZm86OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGxhYmVsLCB0cmFja0luZm8t
PmlkKCksIHRyYWNrSW5mby0+Z3JvdXBJZCgpLCBkZXZpY2VUeXBlKSk7CiAgICAgfQogCiAgICAg
UmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlc1JlcXVlc3QuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTWVk
aWFEZXZpY2VzUmVxdWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RD
bGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBNZWRpYURl
dmljZXNSZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dCwgcHVibGljIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGV2
aWNlc1JlcXVlc3Q+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhRGV2aWNlczo6RW51bWVyYXRlRGV2
aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC02MywxMCArNjQsMTYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZENvbXBsZXRlUmVxdWVzdChjb25zdCBUcmFja1NvdXJjZUluZm9W
ZWN0b3ImKSBmaW5hbDsKIAogICAgIC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCi0gICAg
dmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKSBvdmVycmlkZSBmaW5hbDsKKworICAgIC8vIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja0NsaWVudAorICAgIHZvaWQgZGlkQ29tcGxldGVDaGVjayhib29sKSBvdmVy
cmlkZSBmaW5hbDsKIAogICAgIE1lZGlhRGV2aWNlczo6RW51bWVyYXRlRGV2aWNlc1Byb21pc2Ug
bV9wcm9taXNlOwogICAgIFJlZlB0cjxNZWRpYURldmljZXNSZXF1ZXN0PiBtX3Byb3RlY3RvcjsK
KyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiBtX3Blcm1pc3Npb25DaGVjazsK
KworICAgIGJvb2wgbV9oYXNVc2VyTWVkaWFQZXJtaXNzaW9uIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAkocmV2aXNpb24gMTkzNzc5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFBhZ2U7CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s7CiBjbGFzcyBVc2VyTWVk
aWFSZXF1ZXN0OwogCiBjbGFzcyBVc2VyTWVkaWFDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RV
c2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhVc2VyTWVkaWFSZXF1ZXN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJNZWRpYVJlcXVl
c3QmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpID0gMDsKKwog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudCgpIHsgfQogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ29udHJvbGxlci5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNs
aWVudC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgogI2luY2x1ZGUg
IlVzZXJNZWRpYVJlcXVlc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDEs
MTIgQEAgcHVibGljOgogCiAgICAgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NsaWVudDsgfQogCi0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxV
c2VyTWVkaWFSZXF1ZXN0PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoVXNl
ck1lZGlhUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChV
c2VyTWVkaWFSZXF1ZXN0Jik7CiAKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKTsKKyAgICB2b2lkIGNhbmNlbFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKTsKKwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogICAgIHN0YXRpYyBVc2Vy
TWVkaWFDb250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVz
ZXJNZWRpYUNvbnRyb2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1l
bnROYW1lKCkpKTsgfQogCkBAIC01MCw5ICs1NCw5IEBAIHByaXZhdGU6CiAgICAgVXNlck1lZGlh
Q2xpZW50KiBtX2NsaWVudDsKIH07CiAKLWlubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcmVxdWVzdCkK
K2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3Mo
VXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2NsaWVudC0+cmVxdWVzdFVzZXJN
ZWRpYUFjY2VzcyhXVEY6Om1vdmUocmVxdWVzdCkpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0VXNl
ck1lZGlhQWNjZXNzKHJlcXVlc3QpOwogfQogCiBpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9s
bGVyOjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC02MCw2ICs2NCwxNiBAQCBpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpj
YW5jZWxVCiAgICAgbV9jbGllbnQtPmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QocmVxdWVz
dCk7CiB9CiAKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNoZWNrVXNlck1lZGlh
UGVybWlzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7CisgICAgbV9j
bGllbnQtPmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihyZXF1ZXN0KTsKK30KKworaW5saW5lIHZv
aWQgVXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBtX2NsaWVudC0+Y2FuY2Vs
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHJlcXVlc3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
IlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKGRvY3VtZW50LCBjbGllbnQpKTsKK30KKworVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50JiBj
bGllbnQpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAs
IG1fY2xpZW50KCZjbGllbnQpCit7Cit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6flVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjaygpCit7Cit9CisKK1NlY3VyaXR5T3JpZ2luKiBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2s6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBpZiAoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOworfQorCit2b2lk
IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c3RhcnQoKQoreworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgVXNlck1lZGlhQ29udHJv
bGxlciogY29udHJvbGxlciA9IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20oZG9jdW1lbnQtPnBh
Z2UoKSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250
cm9sbGVyLT5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oKnRoaXMpOworfQorCit2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjazo6c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oYm9vbCBtb2Rl
KQoreworICAgIG1faGFzUGVyc2lzdGVudFBlcm1pc3Npb24gPSBtb2RlOworCisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVDaGVjayhtX2hhc1BlcnNpc3Rl
bnRQZXJtaXNzaW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNz
IFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgflVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCgp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlQ2hlY2soYm9vbCkgPSAwOworfTsK
KworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrIDogcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLCBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4gY3Jl
YXRlKERvY3VtZW50JiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50Jik7CisKKyAgICB2
aXJ0dWFsIH5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soKTsKKworICAgIHZvaWQgc3RhcnQoKTsK
KyAgICB2b2lkIHNldENsaWVudChVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQqIGNsaWVu
dCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRI
YXNQZXJzaXN0ZW50UGVybWlzc2lvbihib29sKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrQ2xpZW50Jik7CisKKyAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cgorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisK
KyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wg
bV9oYXNQZXJzaXN0ZW50UGVybWlzc2lvbiB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8g
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDYgKzEzMCw4IEBACiAJCTA3Mjc3RTUzMTdEMDE4Q0MwMDE1NTM0RCAvKiBK
U01lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Mjc3RTQ3MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2su
aCAqLzsgfTsKIAkJMDcyNzdFNTQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFj
a0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3Mjc3RTQ4MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAg
Ki87IH07CiAJCTA3Mjc3RTU1MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcy
NzdFNDkxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggKi87IH07
CisJCTA3Mjk3RkE3MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdG
QTUxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDcyOTdGQTgxQzE4ODFDNTAwM0Yw
NzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGQTYxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3MkFFMUU1MTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcy
QUUxREYxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggKi87IH07CiAJCTA3
MkFFMUU2MTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMUUwMTgz
QzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSAqLzsgfTsKIAkJ
MDcyQUUxRTgxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBRTFFMjE4
M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKQEAg
LTE1NCw3ICsxNTYsNyBAQAogCQkwNzM3OTRGRDE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZp
ZXJzTW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzM3OTRGNzE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5jcHAgKi87IH07
CiAJCTA3Mzc5NEZFMTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM3OTRGODE5RjU4NjRF
MDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5oICovOyB9OwogCQkwNzM5NEVDODFCQUIyQ0NE
MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM5NEVDNzFCQUIyQ0NEMDBCRTk5Q0QgLyogTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAgKi87IH07Ci0JCTA3Mzk0RUNBMUJBQjJDRDcwMEJFOTlDRCAv
KiBNZWRpYURldmljZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzM5NEVDOTFCQUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVx
dWVzdC5oICovOyB9OworCQkwNzM5NEVDQTFCQUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2Vz
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCRTM0MDE3RDE3
RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0UxN0QxN0UwMTAwMkJENDMxIC8q
IEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCAqLzsgfTsKIAkJMDczQkUzNDExN0QxN0UwMTAwMkJE
NDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0
b3JVc2VyTWVkaWEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzNCRTM0ODE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzNCRTM0MjE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAg
Ki87IH07CkBAIC0xMTQ4LDcgKzExNTAsNiBAQAogCQkyRDc3QUMyQjFCRjJCOTg3MDA3MjQ3MEEg
LyogTlNUZXh0RmluZGVyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDc3QUMyODFCRjJCOTg2MDA3MjQ3MEEgLyogTlNUZXh0RmluZGVyU1BJLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ3N0FD
MkQxQkYyQjlBMDAwNzI0NzBBIC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3N0FDMkMxQkYyQjlBMDAwNzI0NzBBIC8qIE5TVmll
d1NQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEN0VEMEFCMUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBOTFCQUU5OTE3
MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5oICovOyB9OwotCQkyRDdFRDBBQzFCQUU5
OTE3MDA0M0IzRTUgLyogVXNlck1lZGlhQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3RUQwQUExQkFFOTkxNzAwNDNCM0U1IC8qIFVz
ZXJNZWRpYUNsaWVudE1vY2suaCAqLzsgfTsKIAkJMkQ4Mjg3RjYxNkU0QTAzODAwODZCRDAwIC8q
IEhpdFRlc3RMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDgyODdGNDE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNw
cCAqLzsgfTsKIAkJMkQ4Mjg3RjcxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Mjg3RjUx
NkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEOEZFQkRDMTQzRTNFRjcwMDcyNTAyQiAv
KiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRDhGRUJEQTE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFs
dWUuY3BwICovOyB9OwpAQCAtNzQzOSw2ICs3NDQwLDggQEAKIAkJMDcyNzdFNDgxN0QwMThDQzAw
MTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyNzdFNDkxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVk
aWFTdHJlYW1UcmFja0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjg0
N0UyMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbGF0Zm9ybVRleHRUcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI5
N0ZBNTFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Mjk3RkE2MUMxODgxQzUwMDNG
MDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3MkFFMURGMTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5SZXBsYWNlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJBRTFFMDE4M0MwNzQxMDAwQTU5ODgg
LyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQUUxRTExODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODUwMCw3ICs4NTAzLDYgQEAKIAkJMkQ3N0FDMjgxQkYyQjk4NjAwNzI0NzBBIC8qIE5TVGV4dEZp
bmRlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1RleHRGaW5kZXJT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3N0FDMkMxQkYyQjlBMDAwNzI0
NzBBIC8qIE5TVmlld1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Zp
ZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3RUQwQTkxQkFFOTkxNzAw
NDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGltZXJFdmVudEJhc2VkTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyRDdFRDBBQTFCQUU5OTE3MDA0M0IzRTUgLyogVXNlck1lZGlhQ2xpZW50TW9jay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFDbGllbnRNb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODI4N0Y0MTZFNEEwMzgwMDg2QkQwMCAvKiBI
aXRUZXN0TG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGl0VGVzdExvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4Mjg3
RjUxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIaXRUZXN0TG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ4RkVCREExNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0Nyb3NzZmFkZVZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjA2LDYgKzE1MjA4LDggQEAK
IAkJCQkwNzIyMUI4RDE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ2xpZW50LmggKi8sCiAJ
CQkJMDcyMjFCOEUxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuY3BwICov
LAogCQkJCTA3MjIxQjhGMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmgg
Ki8sCisJCQkJMDcyOTdGQTUxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5jcHAgKi8sCisJCQkJMDcyOTdGQTYxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5oICovLAogCQkJCTA3MjIxQjkwMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2Vy
TWVkaWFSZXF1ZXN0LmNwcCAqLywKIAkJCQkwNzIyMUI5MTE3Q0VDMzI3MDA4NDhFNTEgLyogVXNl
ck1lZGlhUmVxdWVzdC5oICovLAogCQkJKTsKQEAgLTE3MTUzLDcgKzE3MTU3LDYgQEAKIAkJCQkw
RkU3MTQwMzE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCAqLywKIAkJ
CQkwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi8sCiAJ
CQkJMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCAqLywK
LQkJCQkyRDdFRDBBQTFCQUU5OTE3MDA0M0IzRTUgLyogVXNlck1lZGlhQ2xpZW50TW9jay5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBtb2NrOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI2MTk4LDYgKzI2MjAxLDcgQEAKIAkJCQlDREFCNkQyRTE3QzgxNEVFMDBDNjBCMzQgLyogSlNN
ZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTU5NzQxREIxQjdEMTQwMTAw
MjAxQzkyIC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNTczOUJC
QjFCNDIwMTJEMDBEMjU4QzEgLyogSlNNZWRpYURldmljZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3Mjk3RkE4MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMjNBMTI2MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjE0MTkwQ0Q2ODI2
OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQzM5Qjcw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODk3
LDcgKzI3OTAxLDYgQEAKIAkJCQkyNTQyRjREQjExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjAzOTgzMThCOTVCQzYwMEIzOUFG
OSAvKiBVc2VySW5wdXRCcmlkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTJFMTdEMTRE
MUMwMDQyMEFBMSAvKiBVc2VyTWVkaWFDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEN0VE
MEFDMUJBRTk5MTcwMDQzQjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzhFMDkyRjE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MzAxN0QxNEQxQzAwNDIwQUExIC8qIFVzZXJNZWRp
YVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0EyRCAv
KiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjk2OTEsNiArMjk2OTQs
NyBAQAogCQkJCTUxNzEzOTA1MUJGNjRERUMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1
cnNvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QUNCQzBDQTEyNzEzRDBBMDA5NEY5QjIgLyog
SlNET01TZXR0YWJsZVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEzN0NGMjEx
QTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA3Mjk3RkE3MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3Ry
aW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0NjQ5NzExRDgyMzQ5MDA2
NDU1QjAgLyogSlNET01TdHJpbmdNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NDY0OUMx
MUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Vc2VyTWVkaWFDbGllbnRNb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Vc2VyTWVkaWFD
bGllbnRNb2NrLmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svVXNlck1lZGlhQ2xpZW50TW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkwICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVXNlck1l
ZGlhQ2xpZW50TW9ja19oCi0jZGVmaW5lIFVzZXJNZWRpYUNsaWVudE1vY2tfaAotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIlRpbWVyRXZlbnRCYXNlZE1vY2suaCIKLSNp
bmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKLSNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5v
dGlmaWVyIDogcHVibGljIE1vY2tOb3RpZmllciB7Ci1wdWJsaWM6Ci0gICAgVXNlck1lZGlhQ2xp
ZW50UmVxdWVzdE5vdGlmaWVyKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmIHJlcXVlc3QsIGJvb2wg
cmVxdWVzdFN1Y2Nlc3MpCi0gICAgICAgIDogbV9yZXF1ZXN0KFdURjo6bW92ZShyZXF1ZXN0KSkK
LSAgICAgICAgLCBtX3JlcXVlc3RTdWNjZXNzKHJlcXVlc3RTdWNjZXNzKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIGZpcmUoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCFtX3JlcXVl
c3RTdWNjZXNzKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0Rlbmll
ZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhdWRp
b0RldmljZVVJRHMgPSBtX3JlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpOwotICAgICAgICBhdXRv
IHZpZGVvRGV2aWNlVUlEcyAgPSBtX3JlcXVlc3QtPnZpZGVvRGV2aWNlVUlEcygpOwotICAgICAg
ICBTdHJpbmcgYWxsb3dlZEF1ZGlvVUlEID0gYXVkaW9EZXZpY2VVSURzLnNpemUoKSA/IGF1ZGlv
RGV2aWNlVUlEcy5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIFN0cmluZyB2aWRlb0F1
ZGlvVUlEID0gdmlkZW9EZXZpY2VVSURzLnNpemUoKSA/IHZpZGVvRGV2aWNlVUlEcy5hdCgwKSA6
IGVtcHR5U3RyaW5nKCk7Ci0KLSAgICAgICAgbV9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFu
dGVkKGFsbG93ZWRBdWRpb1VJRCwgdmlkZW9BdWRpb1VJRCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci0gICAgYm9vbCBtX3JlcXVlc3RT
dWNjZXNzOwotfTsKLQotY2xhc3MgVXNlck1lZGlhQ2xpZW50TW9jayBmaW5hbCA6IHB1YmxpYyBV
c2VyTWVkaWFDbGllbnQsIHB1YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKLXB1YmxpYzoKLSAg
ICBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcmVxdWVzdCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXI+
IG5vdGlmaWVyID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcihX
VEY6Om1vdmUocmVxdWVzdCksIHRydWUpKTsKLSAgICAgICAgbV90aW1lckV2ZW50cy5hcHBlbmQo
YWRvcHRSZWYobmV3IFRpbWVyRXZlbnQodGhpcywgbm90aWZpZXIpKSk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoVXNlck1lZGlhUmVxdWVz
dCYgcmVxdWVzdCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxVc2VyTWVkaWFDbGll
bnRSZXF1ZXN0Tm90aWZpZXI+IG5vdGlmaWVyID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYUNsaWVu
dFJlcXVlc3ROb3RpZmllcihyZXF1ZXN0LCBmYWxzZSkpOwotICAgICAgICBtX3RpbWVyRXZlbnRz
LmFwcGVuZChhZG9wdFJlZihuZXcgVGltZXJFdmVudCh0aGlzLCBub3RpZmllcikpKTsKLSAgICB9
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jZW5kaWYgLy8gVXNlck1lZGlhQ2xpZW50TW9ja19oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEs
NiBAQAogI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiUlRDUGVlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkzNzc5KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODEg
QEAKKzIwMTUtMTItMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01lZGlhU3RyZWFtXSBFeHBvc2UgbWVkaWEgY2FwdHVyZSBkZXZpY2VzIHBlcnNp
c3RlbnQgcGVybWlzc2lvbnMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5LmNwcCBhbmQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDogRGVmaW5lIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjay4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDogQWRkIFdLVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmIHR5cGVkZWYuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JPcmlnaW4pOiBOZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0Lmg6IEFkZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZi9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eSBtYXBwaW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOiBJbXBsZW1lbnQg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6IEFkZCBXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNh
bGxiYWNrIHR5cGVkZWYgYW5kIGFkZAorICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvck9yaWdpbiB0byBXS1BhZ2VVSUNsaWVudFY2LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja0dldFR5cGVJRCk6CisgICAgICAgIChXS1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1NldEhhc1Blcm1pc3Npb24pOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg6IEFkZGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5OjpzZXRIYXNQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVS
ZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9u
RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZENvbXBsZXRl
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNl
ck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuKiwgYW5kIFdLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLiouCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFSZXF1ZXN0KTog
UmVuYW1lZCBmcm9tIHN0YXJ0UmVxdWVzdC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KTogUmVuYW1lZCBm
cm9tIGNhbmNlbFJlcXVlc3QuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IG1f
cmVxdWVzdFRvSURNYXAgLT4KKyAgICAgICAgICBtX3VzZXJNZWRpYVJlcXVlc3RUb0lETWFwLnJl
bW92ZS4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpzdGFydFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6IE5ldywgc3RhcnQgdGhlIHJlcXVlc3Qu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2Fu
Y2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKTogTmV3LCBjYW5jZWwKKyAgICAgICAgICB0aGUg
cmVxdWVzdC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6IE5ldywgCisgICAgICAg
ICAgYWxsIHRoZSByZXF1ZXN0IGNvbXBsZXRpb24gbWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2Fu
Y2VsUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKTogc3RhcnRSZXF1
ZXN0IC0+IHN0YXJ0VXNlck1lZGlhUmVxdWVzdC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1l
ZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KTogY2FuY2VsUmVxdWVzdCAt
PiBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0LgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbik6IE5ldy4KKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOiBOZXcu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
aDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOiBO
ZXcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkIERpZENvbXBsZXRlVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrLgorCiAyMDE1LTEyLTA4ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gUmVuYW1lIFVzZXJN
ZWRpYUNsaWVudCBhbmQgVXNlck1lZGlhQ29udHJvbGxlciBtZXRob2RzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBzZXQoV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiAgICAgVUlQcm9jZXNz
L1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRp
b24uY3BwCisgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAog
ICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
ICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKICAgICBV
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTQ1NCw2ICs0NTUsNyBAQCBzZXQoV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9u
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTkzNzc5KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyLAog
ICAgICAgICBVc2VyQ29udGVudEV4dGVuc2lvbiwKICAgICAgICAgVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZSwKKyAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLAogICAgICAgICBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKICAgICAgICAgVmlicmF0aW9uLAogICAgICAgICBWaWV3
cG9ydEF0dHJpYnV0ZXMsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShy
ZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1Nlc3Npb25TdGF0CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250
ZW50Q29udHJvbGxlciogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUqIFdLVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlckNvbnRl
bnRGaWx0ZXIqIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjayogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0KiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tVc2VyU2NyaXB0KiBXS1VzZXJTY3JpcHRSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
aCIKKworI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlEKQorICAgIDogbV9tYW5h
Z2VyKCZtYW5hZ2VyKQorICAgICwgbV91c2VyTWVkaWFJRCh1c2VyTWVkaWFJRCkKK3sKK30KKwor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6c2V0SGFzUGVyc2lzdGVudFBlcm1p
c3Npb24oYm9vbCBhbGxvd2VkKQoreworICAgIEFTU0VSVChtX21hbmFnZXIpOworICAgIGlmICgh
bV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21hbmFnZXItPmRpZENvbXBsZXRl
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKG1fdXNlck1lZGlhSUQsIGFsbG93ZWQpOworICAgIG1f
bWFuYWdlciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHk6OmludmFsaWRhdGUoKQoreworICAgIG1fbWFuYWdlciA9IG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5X2gKKyNkZWZpbmUgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHlfaAorCisjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTsKKworY2xhc3MgVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4gY3JlYXRlKFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1
c2VyTWVkaWFJRCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CisgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1
c2VyTWVkaWFJRCk7CisKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSogbV9tYW5hZ2VyOworICAgIHVpbnQ2NF90IG1fdXNlck1lZGlhSUQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24g
MTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTYgKzMyLDE2IEBA
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjoKIAogdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIHsK
LSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAg
ICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy52YWx1ZXMo
KSkKICAgICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOwogCi0gICAgbV9wZW5kaW5nUmVxdWVz
dHMuY2xlYXIoKTsKKyAgICBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy5jbGVhcigpOwogfQog
CiBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQogewogICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgYXVkaW9EZXZpY2VVSURzLCB2aWRlb0Rl
dmljZVVJRHMpOwotICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwgcmVxdWVz
dC5nZXQoKSk7CisgICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMuYWRkKHVzZXJNZWRpYUlE
LCByZXF1ZXN0LmdldCgpKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAg
LTUwLDcgKzUwLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcgog
ICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X3BlbmRpbmdSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKSkKKyAgICBpZiAoIW1fcGVuZGluZ1Vz
ZXJNZWRpYVJlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpKQogICAgICAgICByZXR1cm47CiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtNjAsNCArNjAsMjYgQEAgdm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcgogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpjcmVhdGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlh
SUQpCit7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5PiByZXF1ZXN0
ID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlh
SUQpOworICAgIG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwgcmVxdWVz
dC5nZXQoKSk7CisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworfQorCit2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayh1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkKQoreworICAg
IGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3Bl
bmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKSkKKyAgICAgICAgcmV0dXJuOwor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVzZXJN
ZWRpYUlELCBhbGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGFsbG93ZWQpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBACiAjaWZuZGVmIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKICNkZWZpbmUgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAogCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzIsMTQgKzMzLDE2IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKLSAgICAvLyBDcmVhdGUgYSBy
ZXF1ZXN0IHRvIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlci4KICAgICBQYXNzUmVmUHRyPFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1l
ZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOwotCi0gICAgLy8gQ2FsbGVkIGJ5IFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkgd2hlbiBhIGRlY2lzaW9uIGlzIG1hZGUgYnkgdGhlIHVz
ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2
NF90LCBib29sIGFsbG93LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJp
bmcmIHZpZGVvRGV2aWNlVUlEKTsKIAorCisgICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eT4gY3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90IHVz
ZXJNZWRpYUlEKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KHVpbnQ2NF90LCBib29sIGFsbG93KTsKKwogcHJpdmF0ZToKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1JlcXVl
c3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5Pj4gbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Pj4gbV9wZW5kaW5nRGV2
aWNlUmVxdWVzdHM7CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkzNzc5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyNTksNiArNTI1OSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJN
ZWRpYVBlcm1pCiAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgTUVT
U0FHRV9DSEVDSyhmcmFtZSk7CisKKyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8VXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IHJlcXVlc3QgPSBtX3VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcmVhdGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodXNlck1lZGlh
SUQpOworCisgICAgaWYgKCFtX3VpQ2xpZW50LT5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4oKnRoaXMsICpmcmFtZSwgKm9yaWdpbi5nZXQoKSwgKnJlcXVlc3QuZ2V0KCkpKQorICAg
ICAgICByZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihmYWxzZSk7Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogewogICAgIGlmICghaXNSZXF1
ZXN0SURWYWxpZChyZXF1ZXN0SUQpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2
NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlm
aWVyKTsKIAogICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50
NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOworICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAgICB2b2lkIG5v
dGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgICMgTWVkaWFTdGVhbSBtZXNzYWdlcwogICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiBhdWRpb0RldmljZVVJRHMsIFZlY3RvcjxT
dHJpbmc+IHZpZGVvRGV2aWNlVUlEcykKKyAgICBDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JG
cmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdp
bklkZW50aWZpZXIpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uIG1lc3NhZ2VzCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lvbiAx
OTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5hdGl2
ZVdlYldoZWVsRXZlbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK2Ns
YXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3MgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94
eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC0xMzEsNiArMTMyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJLaXQ6
OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgU2VjdXJpdHlP
cmlnaW4qLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFNlY3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCop
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBQcmludGluZy4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNiArNzQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBj
bGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOwpAQCAtMTYxLDYgKzE2Miw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVj
a2VyUmVmLCBXZWIKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJl
ZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudEZpbHRlclJlZiwgQVBJOjpVc2Vy
Q29udGVudEV4dGVuc2lvbikKK1dLX0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1JlZiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6
VXNlclNjcmlwdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmlicmF0
aW9uUHJveHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTcsNiArMjAxNywxNSBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogCisgICAgICAgIHZpcnR1YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JPcmlnaW4oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJ
OjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYg
cmVxdWVzdCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5j
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgICAgICBtX2NsaWVudC5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25G
b3JPcmlnaW4odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwgdG9B
UEkoJnJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBh
Z2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJ
Q2xpZW50LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIHR5
cGVkZWYgdm9pZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnUKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZUlzUGxheWluZ0F1ZGlvRGlk
Q2hhbmdlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiBwZXJt
aXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUmVmIGRldmljZXNSZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKQEAgLTU0NSw2ICs1NDYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBXS1BhZ2VVSUNsaWVudFY2IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydDsK
ICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtOwogICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRQcm9tcHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdFByb21wdDsKKyAgICBXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvck9yaWdpbjsKIH0gV0tQYWdlVUlDbGllbnRWNjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0FycmF5
LmgiCisjaW5jbHVkZSAiV0tNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVja0dldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5OjpBUElUeXBlKTsKK30KKwordm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1NldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBib29sIGFsbG93ZWQpCit7CisgICAg
dG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+c2V0SGFzUGVyc2lzdGVudFBl
cm1pc3Npb24oYWxsb3dlZCk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja19oCisjZGVmaW5lIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
X2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tTZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1JlZiwgYm9vbCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBXS01lZGlhRGV2aWNlc1JlcXVlc3RfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkzNzc5
KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMCBAQAogCQkwMEI5NjYxNjE4RTI0Q0JBMDBDRTFG
ODggLyogQVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCAq
LzsgfTsKIAkJMDBCOTY2MTkxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxNzE4RTI1QUUx
MDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLzsgfTsKIAkJMDBCOTY2MUExOEUyNUFFMTAwQ0Ux
Rjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi87IH07
CisJCTA3Mjk3RjlFMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
Y3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3Mjk3RjlGMUMx
N0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGOUQxQzE3QkJFQTAw
M0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmggKi87IHNldHRpbmdzID0g
e0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDcyOTdGQTIxQzE4NkFEQjAwM0YwNzM1IC8qIFdL
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsg
fTsKKwkJMDcyOTdGQTMxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5
N0ZBMTFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzZFODg0RTFB
MTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAv
KiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3
RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcgLyog
TGF5ZXJSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRp
b24uaCAqLzsgfTsKQEAgLTIxNjcsNiArMjE3MSwxMCBAQAogCQkwMEI5NjYxNTE4RTI0Q0JBMDBD
RTFGODggLyogQVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE3
MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdGQTAx
QzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdGQTExQzE4NkFEQjAwM0Yw
NzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVu
dUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZXh0TWVu
dUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RjFBMTNDQkM2
MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0
MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtp
dC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtNjE4NSw2ICs2MTkzLDgg
QEAKIAkJCQlCQzA2RjQzOTEyREJDQ0ZCMDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcCAqLywKIAkJCQlCQzA2RjQzODEyREJDQ0ZCMDAyRDc4REUgLyogR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi8sCiAJCQkJMzE2MDdGMzgxOTYyNzAw
MjAwOUI4N0RBIC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oICovLAorCQkJCTA3Mjk3RjlD
MUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAgKi8s
CisJCQkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmggKi8sCiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQu
aCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAg
Ki8sCiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywK
QEAgLTY0ODEsNiArNjQ5MSw4IEBACiAJCQkJN0M4OUQyOUUxQTY3ODU1NDAwM0E1RkRFIC8qIFdL
VXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggKi8sCiAJCQkJN0MyNDEzMDYxQUFDRkNCNDAwQTU4
QzE1IC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAgKi8sCiAJCQkJN0MyNDEz
MDcxQUFDRkNCNDAwQTU4QzE1IC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5oICov
LAorCQkJCTA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5jcHAgKi8sCisJCQkJMDcyOTdGQTExQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmggKi8sCiAJCQkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovLAogCQkJCTRBNDEwRjM2MTlBRjdBQzMw
MDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCiAJCQkJN0M4OUQy
QTExQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi8sCkBAIC03Nzc0LDYg
Kzc3ODYsNyBAQAogCQkJCUJDMDZGNDNBMTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0NEE0MTg4NEU0
RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTA0OUI4
MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3Mjk3RkEzMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDRTcyQUQxMjQ3RTc4RDAwQkMwRUM0IC8qIEhh
bmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1QTFCMUIzMzY4MjcwMDU2NzQ1
QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjkwREUz
MTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVycyAq
LywKQEAgLTgyNjYsNiArODI3OSw3IEBACiAJCQkJMUE0NDVCOUYxODRENUZCNTAwNEIzNDE0IC8q
IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE1
NTVGNjEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxQTU1NjAxMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5cGVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI5N0Y5RjFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzkzOEUxMTE4
MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzMwOTM0NUIxMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDA4NCw2ICsxMDA5OCw3IEBACiAJCQkJQkM1NENDMTMxMkQ2
NzRFRTAwNUM2N0IwIC8qIFdLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMDZGNDRGMTJEQkRGM0YwMDJENzhERSAvKiBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYxOTkxMkQ2Q0QxMjAwMTJBNzJBIC8q
IFdLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzI5N0ZBMjFD
MTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZDQjRFNTAxOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTUxMThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwRjE3NEFBNzE0MkFBQzYxMDAzOTI1MEYgLyogV0tHZW9tZXRyeS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTEwMDk4LDYgKzEwMTEzLDcgQEAKIAkJCQkwRjNDNzI1QzE5NkY2MDUy
MDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTU0MjkzQTUxOTVBNDNERDAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1
cmVSZWNvZ25pemVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBOUUxMEExMzE1Q0QxODAwOUU3
MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
NzI5N0Y5RTFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEM0EzQjUxMzM5NjAwQjAwNzA5QkU0IC8qIFdLTWVk
aWFDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzk4QzQ4QTkxQjZGRDVCNTAw
MTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUM5Q0Q0MzlFMUI0QjAyNTMwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6VXNlck0KIHsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNlck1lZGlhUmVxdWVz
dChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50PihyZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7
CkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjoKICAgICB9CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgp
OwotICAgIG1faWRUb1JlcXVlc3RNYXAuYWRkKHJlcXVlc3RJRCwgJnJlcXVlc3QpOwotICAgIG1f
cmVxdWVzdFRvSURNYXAuYWRkKCZyZXF1ZXN0LCByZXF1ZXN0SUQpOworICAgIG1faWRUb1VzZXJN
ZWRpYVJlcXVlc3RNYXAuYWRkKHJlcXVlc3RJRCwgJnJlcXVlc3QpOworICAgIG1fdXNlck1lZGlh
UmVxdWVzdFRvSURNYXAuYWRkKCZyZXF1ZXN0LCByZXF1ZXN0SUQpOwogCiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKICAgICBBU1NFUlQo
d2ViRnJhbWUpOwpAQCAtNjYsMjAgKzY2LDIwIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjoKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZy
YW1lSUQoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgcmVxdWVzdC5hdWRpb0Rldmlj
ZVVJRHMoKSwgcmVxdWVzdC52aWRlb0RldmljZVVJRHMoKSkpOwogfQogCi12b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0
JiByZXF1ZXN0KQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICB1aW50
NjRfdCByZXF1ZXN0SUQgPSBtX3JlcXVlc3RUb0lETWFwLnRha2UoJnJlcXVlc3QpOworICAgIHVp
bnQ2NF90IHJlcXVlc3RJRCA9IG1fdXNlck1lZGlhUmVxdWVzdFRvSURNYXAudGFrZSgmcmVxdWVz
dCk7CiAgICAgaWYgKCFyZXF1ZXN0SUQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2lkVG9SZXF1
ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOworICAgIG1faWRUb1VzZXJNZWRpYVJlcXVlc3RNYXAu
cmVtb3ZlKHJlcXVlc3RJRCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQogewotICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiByZXF1ZXN0ID0gbV9pZFRvUmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CisgICAgUmVmUHRy
PFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBtX2lkVG9Vc2VyTWVkaWFSZXF1ZXN0TWFwLnRh
a2UocmVxdWVzdElEKTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X3JlcXVlc3RUb0lETWFwLnJlbW92ZShyZXF1ZXN0KTsKKyAgICBtX3VzZXJNZWRpYVJlcXVlc3RU
b0lETWFwLnJlbW92ZShyZXF1ZXN0KTsKIAogICAgIGlmIChhbGxvd2VkKQogICAgICAgICByZXF1
ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJ
RCk7CkBAIC04Nyw2ICs4Nyw0NSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6CiAgICAgICAgIHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0RlbmllZCgpOwogfQogCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0KQor
eworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihyZXF1ZXN0LnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQgPyBk
b2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAg
IHJlcXVlc3Quc2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0SUQo
KTsKKyAgICBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tNYXAuYWRkKHJlcXVlc3RJRCwg
JnJlcXVlc3QpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvbkNoZWNrVG9JRE1hcC5hZGQoJnJl
cXVlc3QsIHJlcXVlc3RJRCk7CisKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6
ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKKyAgICBTZWN1
cml0eU9yaWdpbiogb3JpZ2luID0gcmVxdWVzdC5zZWN1cml0eU9yaWdpbigpOworICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZv
ckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKSkpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBtX3VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1RvSURNYXAudGFrZSgmcmVxdWVzdCk7CisgICAgaWYgKCFyZXF1
ZXN0SUQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tNYXAucmVtb3ZlKHJlcXVlc3RJRCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrPiByZXF1ZXN0ID0gbV9pZFRvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrTWFwLnRh
a2UocmVxdWVzdElEKTsKKyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKyAgICBt
X3VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1RvSURNYXAucmVtb3ZlKHJlcXVlc3QpOworICAgIAor
ICAgIHJlcXVlc3QtPnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGFsbG93ZWQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHJl
dmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDYgKzIxLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1l
ZGlhUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgpAQCAtMzQsMTYgKzM1LDIyIEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlciAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoV2ViUGFnZSYpOwogCi0gICAgdm9pZCBzdGFydFJlcXVlc3QoV2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdCYpOwotICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0Jik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVj
aXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBh
dWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CisgICAgdm9pZCBz
dGFydFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOworICAgIHZv
aWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKKworICAgIHZvaWQgc3RhcnRVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJik7CisgICAgdm9p
ZCBjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ayh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCk7CiAKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZSYgbV9wYWdlOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3Q+PiBtX2lkVG9SZXF1ZXN0TWFwOwotICAgIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCB1aW50NjRfdD4gbV9yZXF1ZXN0VG9JRE1hcDsKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4+IG1f
aWRUb1VzZXJNZWRpYVJlcXVlc3RNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdD4sIHVpbnQ2NF90PiBtX3VzZXJNZWRpYVJlcXVlc3RUb0lETWFwOworCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjaz4+IG1faWRUb1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja01hcDsKKyAgICBIYXNoTWFwPFJl
ZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+LCB1aW50NjRfdD4gbV91c2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tUb0lETWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE1ICszOSwyNCBAQCB2b2lkIFdlYlVzZXJN
ZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFS
ZXF1ZXN0PiYmIHByUmVxdWVzdCkKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNl
ck1lZGlhQWNjZXNzKFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgVXNlck1lZGlh
UmVxdWVzdCYgcmVxdWVzdCA9IHByUmVxdWVzdC5sZWFrUmVmKCk7Ci0gICAgbV9wYWdlLnVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0YXJ0UmVxdWVzdChyZXF1ZXN0KTsKKyAg
ICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuc3RhcnRVc2VyTWVk
aWFSZXF1ZXN0KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2Vs
VXNlck1lZGlhQWNjZXNzUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0
KHJlcXVlc3QpOworICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
KS5jYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3QpOworfQorCit2b2lkIFdlYlVzZXJNZWRp
YUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCkuc3RhcnRVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2socmVxdWVzdCk7Cit9
CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0KQoreworICAgIG1f
cGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5jYW5jZWxVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2socmVxdWVzdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE0IEBAIHB1YmxpYzoKICAgICBXZWJVc2VyTWVk
aWFDbGllbnQoV2ViUGFnZSYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VEZXN0
cm95ZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxVc2VyTWVk
aWFBY2Nlc3NSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVycmlkZTsKIAor
ICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpIG92ZXJyaWRlOworCiAg
ICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzY1LDYgKzMzNjUsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlz
cwogewogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmRpZFJlY2VpdmVV
c2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFsbG93ZWQsIGF1ZGlvRGV2
aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5kaWRDb21wbGV0
ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1c2VyTWVkaWFJRCwgYWxsb3dlZCk7Cit9CiAjZW5k
aWYKIAogI2lmICFQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNiAr
MTEwNSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFdLX0VY
UE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qg
dXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwg
Y29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CisgICAgV0tfRVhQT1JUIHZvaWQgZGlkQ29t
cGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wg
YWxsb3dlZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5Mzc3
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAjIE1lZGlh
U3RlYW0KICAgICBEaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3RyaW5n
IHZpZGVvRGV2aWNlVUlEKQorICAgIERpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCiAjZW5kaWYKIAogICAgICMgTm90
aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAor
MjAxNS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbTWVkaWFTdHJlYW1dIEV4cG9zZSBtZWRpYSBjYXB0dXJlIGRldmljZXMgcGVyc2lzdGVu
dCBwZXJtaXNzaW9ucyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTIwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbWV0aG9kcyBhbmQgaGVscGVycyBmb3IgV0sxIHBlcm1pc3Np
b24gY2hlY2tlciBpbnRlcmZhY2UuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
Lm1tOgorICAgICAgICAodXNlck1lZGlhUmVxdWVzdHNNYXApOgorICAgICAgICAoQWRkUmVxdWVz
dFRvUmVxdWVzdE1hcCk6CisgICAgICAgIChSZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXApOgor
ICAgICAgICAodXNlck1lZGlhQ2hlY2tNYXApOgorICAgICAgICAoQWRkUGVybWlzc2lvbkNoZWNr
VG9NYXApOgorICAgICAgICAoUmVtb3ZlUGVybWlzc2lvbkNoZWNrRnJvbU1hcCk6CisgICAgICAg
IChXZWJVc2VyTWVkaWFDbGllbnQ6OldlYlVzZXJNZWRpYUNsaWVudCk6CisgICAgICAgIChXZWJV
c2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MpOgorICAgICAgICAoV2ViVXNl
ck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdl
YlVzZXJNZWRpYUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKToKKyAgICAgICAgKFdl
YlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKToKKyAgICAg
ICAgKC1bV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgYWxsb3ddKToKKyAgICAgICAgKC1bV2Vi
VXNlck1lZGlhUG9saWN5TGlzdGVuZXIgZGVueV0pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQ
b2xpY3lDaGVja2VyTGlzdGVuZXIgaW5pdFdpdGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6XSk6
CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBjYW5jZWxVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tdKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5Q2hl
Y2tlckxpc3RlbmVyIGFsbG93XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNr
ZXJMaXN0ZW5lciBkZW55XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJM
aXN0ZW5lciBkZW55T25seVRoaXNSZXF1ZXN0XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBv
bGljeUNoZWNrZXJMaXN0ZW5lciBzaG91bGRDbGVhckNhY2hlXSk6CisgICAgICAgIChBZGRSZXF1
ZXN0VG9NYXApOiBEZWxldGVkLgorICAgICAgICAoUmVtb3ZlUmVxdWVzdEZyb21NYXApOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxNS0x
Mi0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVw
IHRvOgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVzZXJNZWRpYUNs
aWVudDsKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazsKIGNsYXNzIFVzZXJNZWRpYVJl
cXVlc3Q7CiB9CiAKQEAgLTQ0LDkgKzQ1LDEzIEBAIHB1YmxpYzoKICAgICB+V2ViVXNlck1lZGlh
Q2xpZW50KCk7CiAKICAgICAvLyBVc2VyTWVkaWFDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYUFjY2VzcyhSZWY8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFVzZXJN
ZWRpYUFjY2Vzc1JlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oV2ViQ29yZTo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJW
aWV3KiBtX3dlYlZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCShyZXZpc2lvbiAxOTM3NzkpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Vc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUmVxdWVzdC5oPgogI2ltcG9y
dCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDYgKzUxLDE0
IEBAIC0gKHZvaWQpY2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdDsKIC0gKHZvaWQpZGVueTsK
IEBlbmQKIAorQGludGVyZmFjZSBXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXIgOiBO
U09iamVjdCA8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+IHsKKyAgICBSZWZQdHI8VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrPiBfcmVxdWVzdDsKK30KKy0gKGlkKWluaXRXaXRoVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrOihQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4pcmVx
dWVzdDsKKy0gKHZvaWQpY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOworLSAodm9pZClk
ZW55OworQGVuZAorCiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBS
ZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXI+PiBVc2VyTWVkaWFSZXF1ZXN0c01h
cDsKIAogc3RhdGljIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiB1c2VyTWVkaWFSZXF1ZXN0c01hcCgp
CkBAIC01OCwxNiArNjcsMzUgQEAgc3RhdGljIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiB1c2VyTWVk
aWFSZQogICAgIHJldHVybiByZXF1ZXN0czsKIH0KIAotc3RhdGljIHZvaWQgQWRkUmVxdWVzdFRv
TWFwKFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QsIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xp
Y3lMaXN0ZW5lcj4gbGlzdGVuZXIpCitzdGF0aWMgdm9pZCBBZGRSZXF1ZXN0VG9SZXF1ZXN0TWFw
KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QsIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lM
aXN0ZW5lcj4gbGlzdGVuZXIpCiB7CiAgICAgdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5zZXQocmVx
dWVzdCwgbGlzdGVuZXIpOwogfQogCi1zdGF0aWMgdm9pZCBSZW1vdmVSZXF1ZXN0RnJvbU1hcChV
c2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIHZvaWQgUmVtb3ZlUmVxdWVzdEZyb21S
ZXF1ZXN0TWFwKFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgdXNlck1lZGlhUmVx
dWVzdHNNYXAoKS5yZW1vdmUocmVxdWVzdCk7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiwgUmV0YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUNo
ZWNrZXJMaXN0ZW5lcj4+IFVzZXJNZWRpYUNoZWNrTWFwOworCitzdGF0aWMgVXNlck1lZGlhQ2hl
Y2tNYXAmIHVzZXJNZWRpYUNoZWNrTWFwKCkKK3sKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoVXNlck1lZGlhQ2hlY2tNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgcmV0dXJuIHJl
cXVlc3RzOworfQorCitzdGF0aWMgdm9pZCBBZGRQZXJtaXNzaW9uQ2hlY2tUb01hcChVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2sqIHJlcXVlc3QsIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lD
aGVja2VyTGlzdGVuZXI+IGxpc3RlbmVyKQoreworICAgIHVzZXJNZWRpYUNoZWNrTWFwKCkuc2V0
KHJlcXVlc3QsIGxpc3RlbmVyKTsKK30KKworc3RhdGljIHZvaWQgUmVtb3ZlUGVybWlzc2lvbkNo
ZWNrRnJvbU1hcChVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sqIHJlcXVlc3QpCit7CisgICAgdXNl
ck1lZGlhQ2hlY2tNYXAoKS5yZW1vdmUocmVxdWVzdCk7Cit9CisKKwogV2ViVXNlck1lZGlhQ2xp
ZW50OjpXZWJVc2VyTWVkaWFDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQogewpAQCAtODgsMTEgKzExNiwxMSBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYm
IHBycFJlcXVlc3QpCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFVzZXJNZWRpYUFj
Y2VzcyhVc2VyTWVkaWFSZXF1ZXN0JiBwcnBSZXF1ZXN0KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIAotICAgIFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QgPSAmcHJwUmVx
dWVzdC5nZXQoKTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0ID0gJnBycFJlcXVlc3Q7
CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUmVxdWVzdEZyb21PcmlnaW46bGlzdGVuZXI6KTsKICAgICBpZiAoIVtbbV93ZWJWaWV3
IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKICAgICAgICAgcmVx
dWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CkBAIC0xMDMsNyArMTMxLDcgQEAgdm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVkaQogICAgIFdlYlNlY3VyaXR5T3JpZ2lu
ICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3Jl
U2VjdXJpdHlPcmlnaW46cmVxdWVzdC0+c2VjdXJpdHlPcmlnaW4oKV07CiAKICAgICBDYWxsVUlE
ZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGxpc3RlbmVyKTsKLSAgICBB
ZGRSZXF1ZXN0VG9NYXAocmVxdWVzdCwgbGlzdGVuZXIpOworICAgIEFkZFJlcXVlc3RUb1JlcXVl
c3RNYXAocmVxdWVzdCwgbGlzdGVuZXIpOwogCiAgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKICAg
ICBbbGlzdGVuZXIgcmVsZWFzZV07CkBAIC0xMjIsNiArMTUwLDQwIEBAIHZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWEKICAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOwog
fQogCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjayYgcHJwUmVxdWVzdCkKK3sKKyAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CisKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sqIHJlcXVlc3Qg
PSAmcHJwUmVxdWVzdDsKKyAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpjaGVj
a1BvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOmxpc3RlbmVyOik7CisgICAgaWYg
KCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7
CisgICAgICAgIHJlcXVlc3QtPnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0
ZW5lciAqbGlzdGVuZXIgPSBbW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBhbGxv
Y10gaW5pdFdpdGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6cmVxdWVzdF07CisgICAgV2ViU2Vj
dXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0
V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpyZXF1ZXN0LT5zZWN1cml0eU9yaWdpbigpXTsKKwor
ICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwgbGlzdGVu
ZXIpOworICAgIEFkZFBlcm1pc3Npb25DaGVja1RvTWFwKHJlcXVlc3QsIGxpc3RlbmVyKTsKKwor
ICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgW2xpc3RlbmVyIHJlbGVhc2VdOworCisgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKworCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dDo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBVc2VyTWVkaWFDaGVja01hcCYgcmVxdWVzdHNN
YXAgPSB1c2VyTWVkaWFDaGVja01hcCgpOworICAgIFVzZXJNZWRpYUNoZWNrTWFwOjppdGVyYXRv
ciBpdCA9IHJlcXVlc3RzTWFwLmZpbmQoJnJlcXVlc3QpOworICAgIGlmIChpdCA9PSByZXF1ZXN0
c01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2l0LT52YWx1ZSBjYW5jZWxVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tdOworICAgIHJlcXVlc3RzTWFwLnJlbW92ZShpdCk7Cit9CiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lcgogCkBAIC0xNTUsNyAr
MjE3LDcgQEAgLSAodm9pZClhbGxvdwogICAgIAogICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nl
c3NHcmFudGVkKF9yZXF1ZXN0LT5hbGxvd2VkQXVkaW9EZXZpY2VVSUQoKSwgX3JlcXVlc3QtPmFs
bG93ZWRWaWRlb0RldmljZVVJRCgpKTsKIAotICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9yZXF1
ZXN0LmdldCgpKTsKKyAgICBSZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXAoX3JlcXVlc3QuZ2V0
KCkpOwogI2VuZGlmCiB9CiAKQEAgLTE2Niw3ICsyMjgsNyBAQCAtICh2b2lkKWRlbnkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsK
LSAgICBSZW1vdmVSZXF1ZXN0RnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7CisgICAgUmVtb3ZlUmVx
dWVzdEZyb21SZXF1ZXN0TWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xODQs
NCArMjQ2LDY3IEBAIC0gKEJPT0wpc2hvdWxkQ2xlYXJDYWNoZQogI2VuZGlmCiAKIEBlbmQKKwor
CitAaW1wbGVtZW50YXRpb24gV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyCisKKy0g
KGlkKWluaXRXaXRoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOihQYXNzUmVmUHRyPFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjaz4pcmVxdWVzdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgcmV0dXJuIHNlbGY7CisjZW5kaWYKK30KKworLSAo
dm9pZCljYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sKK3sKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIF9yZXF1
ZXN0ID0gbnVsbHB0cjsKKyNlbmRpZgorCit9CisKKy0gKHZvaWQpYWxsb3cKK3sKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIF9yZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbih0cnVlKTsKKyAgICBSZW1v
dmVQZXJtaXNzaW9uQ2hlY2tGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgorfQorCist
ICh2b2lkKWRlbnkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghX3JlcXVl
c3QpCisgICAgICAgIHJldHVybjsKKworICAgIF9yZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVy
bWlzc2lvbih0cnVlKTsKKyAgICBSZW1vdmVQZXJtaXNzaW9uQ2hlY2tGcm9tTWFwKF9yZXF1ZXN0
LmdldCgpKTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZClkZW55T25s
eVRoaXNSZXF1ZXN0Cit7Cit9CisKKy0gKEJPT0wpc2hvdWxkQ2xlYXJDYWNoZQoreworICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjQ1Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwor
QGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDE5
Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw3IEBAIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYlVJRGVsZWdhdGVQcml2YXQKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luIGxpc3RlbmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4p
bGlzdGVuZXI7CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGxpc3RlbmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXI7Cist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGNoZWNrUG9saWN5Rm9yVXNlck1lZGlh
UmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGxpc3RlbmVyOihp
ZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXI7CiAKIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBlbGVtZW50RGlkRm9jdXNOb2RlOihET01Ob2RlICopbm9kZTsK
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBlbGVtZW50RGlkQmx1ck5vZGU6KERP
TU5vZGUgKilub2RlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkzODcxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTUtMTItMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBFeHBvc2UgbWVkaWEg
Y2FwdHVyZSBkZXZpY2VzIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgdG8gV2ViQ29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMDg3CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgdXNlciBtZWRpYSBwZXJtaXNzaW9uIGNoZWNrZXIg
cGFnZSBVSSBjbGllbnQgbWV0aG9kLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKFdUUjo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6IEFkZCBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
cmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBDbGVhciBtX3VzZXJNZWRpYU9y
aWdpblBlcm1pc3Npb25zLgorICAgICAgICAoV1RSOjpvcmlnaW5Vc2VyVmlzaWJsZU5hbWUpOiBO
ZXcsIGNyZWF0ZSBhIHN0cmluZyBmb3IgdGhlIG9yaWdpbi4KKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKTogU2V0
IHRoZSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZgorICAgICAgICAgIGFjY29yZGluZyB0
byB0aGUgc3RhdGUgb2YgdGhlIG9yaWdpbiBwZXJtaXNzaW9uIG1hcC4KKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmhhbmRsZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogUmVtZW1i
ZXIgYm90aCB0aGUgb3JpZ2luIGFuZCB0aGUKKyAgICAgICAgICByZXF1ZXN0IHNvIHdlIGNhbiB1
cGRhdGUgdGhlIG9yaWdpbiBwZXJtaXNzaW9uIG1hcCBpbiBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUp
OiBVcGRhdGUgdGhlCisgICAgICAgICAgb3JpZ2luIHBlcm1pc3Npb24gbWFwLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKwogMjAxNS0xMi0wOSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnVuIGF0bGVhc3Qgb25l
IHNpbXVsYXRvciBldmVuIGlmIG1heCBwcm9jZXNzIGxpbWl0IGlzIGxvdwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5S
ZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPGN0eXBlLmg+
CkBAIC0yMDEsOSArMjAzLDE0IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGUKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFuZGxlR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChwZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJl
ZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3N0YXRpYyB2b2lk
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
Ci0gICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhbmRsZVVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KHBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuaGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBwZXJtaXNzaW9u
UmVxdWVzdCk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9y
aWdpbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBX
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiBjaGVja1JlcXVlc3QsIGNvbnN0IHZvaWQqKQor
eworICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5oYW5kbGVDaGVja09mVXNlck1lZGlh
UGVybWlzc2lvbkZvck9yaWdpbihvcmlnaW4sIGNoZWNrUmVxdWVzdCk7CiB9CiAKIFdLUGFnZVJl
ZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiBvbGRQYWdlLCBXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBu
YXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQpAQCAtMjc3LDcgKzI4NCw4IEBAIFdLUGFnZVJlZiBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAg
ICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENv
bmZpcm0KLSAgICAgICAgMCAgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICAwLCAvLyBy
dW5KYXZhU2NyaXB0UHJvbXB0CisgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9y
aWdpbiwKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQ
YWdlVUlDbGllbnQuYmFzZSk7CiAgICAgCkBAIC01NDAsNiArNTQ4LDcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0
QWxlcnQKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KICAgICAgICAgMCwgLy8g
cnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4sCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+
cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJhc2UpOwogCkBAIC03NDQsNiArNzUzLDcgQEAgYm9vbCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdAogCiAgICAgLy8gUmVzZXQgVXNlck1l
ZGlhIHBlcm1pc3Npb25zLgogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzLmNsZWFy
KCk7CisgICAgbV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9ucyA9IG51bGxwdHI7CiAgICAgbV9p
c1VzZXJNZWRpYVBlcm1pc3Npb25TZXQgPSBmYWxzZTsKICAgICBtX2lzVXNlck1lZGlhUGVybWlz
c2lvbkFsbG93ZWQgPSBmYWxzZTsKIApAQCAtMTY0Miw5ICsxNjUyLDM4IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnNldFVzZXJNZWRpYVBlcm1pc3MKICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6aGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKK3N0YXRpYyBXS1N0cmluZ1Jl
ZiBvcmlnaW5Vc2VyVmlzaWJsZU5hbWUoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit7Cisg
ICAgc3RkOjpzdHJpbmcgaG9zdCA9IHRvU1REKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlI
b3N0KG9yaWdpbikpKS5jX3N0cigpOworICAgIHN0ZDo6c3RyaW5nIHByb3RvY29sID0gdG9TVEQo
YWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKS5jX3N0cigpOwor
ICAgIHVuc2lnbmVkIHNob3J0IHBvcnQgPSBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChvcmlnaW4p
OworCisgICAgU3RyaW5nIHVzZXJWaXNpYmxlTmFtZTsKKyAgICBpZiAocG9ydCkKKyAgICAgICAg
dXNlclZpc2libGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIiVzOi8vJXM6JWQiLCBwcm90b2NvbC5j
X3N0cigpLCBob3N0LmNfc3RyKCksIHBvcnQpOworICAgIGVsc2UKKyAgICAgICAgdXNlclZpc2li
bGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIiVzOi8vJXMiLCBwcm90b2NvbC5jX3N0cigpLCBob3N0
LmNfc3RyKCkpOworCisgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVz
ZXJWaXNpYmxlTmFtZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
aGFuZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4sIGNvbnN0IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmJiBjaGVja1Jl
cXVlc3QpCit7CisgICAgYm9vbCBhbGxvd2VkID0gZmFsc2U7CisKKyAgICBpZiAobV91c2VyTWVk
aWFPcmlnaW5QZXJtaXNzaW9ucykgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
b3JpZ2luU3RyaW5nID0gb3JpZ2luVXNlclZpc2libGVOYW1lKG9yaWdpbik7CisgICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtX3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zLmdldCgpLCBvcmlnaW5T
dHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgaWYgKFdLR2V0VHlwZUlEKHZhbHVlKSA9PSBXS0Jvb2xl
YW5HZXRUeXBlSUQoKSkKKyAgICAgICAgICAgIGFsbG93ZWQgPSBXS0Jvb2xlYW5HZXRWYWx1ZSh2
YWx1ZSk7CisgICAgfQorCisgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tTZXRIYXNQZXJz
aXN0ZW50UGVybWlzc2lvbihjaGVja1JlcXVlc3QsIGFsbG93ZWQpOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3VyaXR5T3Jp
Z2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0KQog
ewotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzLmFwcGVuZCh1c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKG9yaWdpbiwgcmVxdWVzdCkpOwogICAgIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0SWZQb3NzaWJsZSgpOwogfQogCkBAIC0xNjUzLDkgKzE2
OTIsMTcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgIGlm
ICghbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25TZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAoYXV0byYgcmVxdWVzdCA6IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKSB7Ci0gICAg
ICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpIHsKKyAgICAgICAgYXV0
byBvcmlnaW4gPSBwYWlyLmZpcnN0LmdldCgpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBwYWly
LnNlY29uZC5nZXQoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gYXVkaW9EZXZp
Y2VVSURzID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlEcyhyZXF1
ZXN0KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gdmlkZW9EZXZpY2VVSURzID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhyZXF1ZXN0KTsKKwor
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gb3JpZ2luU3RyaW5nID0gYWRvcHRXSyhv
cmlnaW5Vc2VyVmlzaWJsZU5hbWUob3JpZ2luKSk7CisgICAgICAgIGlmICghbV91c2VyTWVkaWFP
cmlnaW5QZXJtaXNzaW9ucykKKyAgICAgICAgICAgIG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lv
bnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLQm9vbGVhblJlZj4gYWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1f
aXNVc2VyTWVkaWFQZXJtaXNzaW9uQWxsb3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMuZ2V0KCksIG9yaWdpblN0cmluZy5nZXQo
KSwgYWxsb3dlZC5nZXQoKSk7CiAKICAgICAgICAgaWYgKG1faXNVc2VyTWVkaWFQZXJtaXNzaW9u
QWxsb3dlZCAmJiAoV0tBcnJheUdldFNpemUodmlkZW9EZXZpY2VVSURzLmdldCgpKSB8fCBXS0Fy
cmF5R2V0U2l6ZShhdWRpb0RldmljZVVJRHMuZ2V0KCkpKSkgewogICAgICAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHZpZGVvRGV2aWNlVUlEOwpAQCAtMTY3MCwxMCArMTcxNywxMCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiIik7CiAKLSAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhyZXF1ZXN0LmdldCgpLCBhdWRpb0RldmljZVVJRC5nZXQoKSwgdmlkZW9EZXZpY2VV
SUQuZ2V0KCkpOworICAgICAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KHJlcXVlc3QsIGF1ZGlvRGV2aWNlVUlELmdldCgpLCB2aWRlb0RldmljZVVJRC5nZXQoKSk7CiAK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
RGVueShyZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3REZW55KHJlcXVlc3QpOwogICAgIH0KICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0cy5jbGVhcigpOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMTkzNzc5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogT0JK
Q19DTEFTUyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwpAQCAtOTUsNyArOTYsOCBAQCBwdWJsaWM6
CiAKICAgICAvLyBNZWRpYVN0cmVhbS4KICAgICB2b2lkIHNldFVzZXJNZWRpYVBlcm1pc3Npb24o
Ym9vbCk7Ci0gICAgdm9pZCBoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKKyAgICB2b2lkIGhhbmRsZVVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RSZWYpOworICAgIHZvaWQgaGFuZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4oV0tTZWN1cml0eU9yaWdpblJlZiwgY29uc3QgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tSZWYmKTsKIAogICAgIC8vIFBvbGljeSBkZWxlZ2F0ZS4KICAgICB2b2lkIHNldEN1c3RvbVBv
bGljeURlbGVnYXRlKGJvb2wgZW5hYmxlZCwgYm9vbCBwZXJtaXNzaXZlKTsKQEAgLTI4Miw3ICsy
ODQsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7
CiAgICAgYm9vbCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uQWxsb3dlZDsKIAotICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmPj4gbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHM7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFy
eVJlZj4gbV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9uczsKKworICAgIHR5cGVkZWYgVmVjdG9y
PHN0ZDo6cGFpcjxXS1JldGFpblB0cjxXS1NlY3VyaXR5T3JpZ2luUmVmPiwgV0tSZXRhaW5QdHI8
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZj4+PiBQZXJtaXNzaW9uUmVxdWVzdE1hcDsK
KyAgICBQZXJtaXNzaW9uUmVxdWVzdE1hcCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0czsK
KwogICAgIGJvb2wgbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25TZXQ7CiAgICAgYm9vbCBtX2lzVXNl
ck1lZGlhUGVybWlzc2lvbkFsbG93ZWQ7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE1LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFtNZWRpYVN0cmVhbV0gRXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50
IHBlcm1pc3Npb25zIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRl
RGV2aWNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1sOgorCiAyMDE1LTEyLTA4ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG8gbm90IGluc2VydCBwb3NpdGlvbmVkIHJl
bmRlcmVycyB0byBtdWx0aXBsZSBnUG9zaXRpb25lZERlc2NlbmRhbnRzTWFwLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Mzc3
OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0
ZURldmljZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDE2ICs2LDM4IEBAIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1MgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKIFBBU1MgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiAKKwor
KioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2hlbiBwZXJzaXN0ZW50
IGFjY2VzcyBIQVMgTk9UIGJlZW4gZ3JhbnRlZAorCitQQVNTIGNhcHR1cmVEZXZpY2VzLmxlbmd0
aCBpcyBub24temVyby4KKworUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwuCitQ
QVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZp
Y2UubGFiZWwgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgIiIKK1BB
U1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgorCitQQVNTIGNhcHR1cmVEZXZp
Y2Uua2luZCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24t
bnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVy
ZURldmljZS5sYWJlbCBpcyAiIgorUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51
bGwuCisKKworKioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2hlbiBw
ZXJzaXN0ZW50IGFjY2VzcyBIQVMgYmVlbiBncmFudGVkCisKIFBBU1MgY2FwdHVyZURldmljZXMu
bGVuZ3RoIGlzIG5vbi16ZXJvLgogCiBQQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVs
bC4KIFBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVy
ZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBu
b3QgIiIKIFBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgogCiBQQVNTIGNh
cHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJ
ZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BB
U1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIKIFBBU1MgY2FwdHVyZURldmljZS5ncm91
cElkIGlzIG5vbi1udWxsLgogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZp
Y2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1sCShyZXZpc2lvbiAxOTM3NzkpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTksNiArOSw3IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAg
ICAgICAgICB2YXIgY2FwdHVyZURldmljZXM7CiAgICAgICAgICAgICB2YXIgY2FwdHVyZURldmlj
ZTsKKyAgICAgICAgICAgIHZhciBoYXZlUGVybWlzc2lvbjsKIAogICAgICAgICAgICAgZGVzY3Jp
cHRpb24oIlRlc3RzIE1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkiKTsKICAgICAgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKQEAgLTE3LDI1ICsxOCw1NCBAQAogICAg
ICAgICAgICAgc2hvdWxkQmVUeXBlKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURl
dmljZXMiLCAiRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGRlYnVnKCIiKTsKIAotICAgICAgICAg
ICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKLSAgICAgICAgICAg
ICAgICAudGhlbihmdW5jdGlvbihkZXZpY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhcHR1
cmVEZXZpY2VzID0gZGV2aWNlczsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJv
KCJjYXB0dXJlRGV2aWNlcy5sZW5ndGgiKTsKLSAgICAgICAgICAgICAgICAgICAgZGVidWcoIiIp
OwotICAgICAgICAgICAgICAgICAgICBkZXZpY2VzLmZvckVhY2goZnVuY3Rpb24oZGV2aWNlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlID0gZGV2aWNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmtpbmQiKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5k
ZXZpY2VJZCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0
dXJlRGV2aWNlLmxhYmVsIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51
bGwoImNhcHR1cmVEZXZpY2UuZ3JvdXBJZCIpOworICAgICAgICAgICAgZnVuY3Rpb24gZW51bWVy
YXRlKG5leHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoYDxicj4qKiog
Q2FsbGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aGVuIHBlcnNpc3RlbnQgYWNj
ZXNzIEhBUyAke2hhdmVQZXJtaXNzaW9uID8gIiIgOiAiTk9UICJ9YmVlbiBncmFudGVkPGJyPmAp
OworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNl
cygpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRldmljZXMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2VzID0gZGV2aWNlczsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlTm9uWmVybygiY2FwdHVyZURldmljZXMubGVuZ3RoIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VzLmZvckVhY2goZnVuY3Rpb24oZGV2aWNlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FwdHVyZURldmljZSA9IGRldmljZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVEZXZpY2Uua2luZCIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5kZXZpY2VJZCIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURl
dmljZS5sYWJlbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlUGVybWlz
c2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmVFcXVhbFRv
U3RyaW5nKCJjYXB0dXJlRGV2aWNlLmxhYmVsIiwgIiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFbXB0
eVN0cmluZygiY2FwdHVyZURldmljZS5sYWJlbCIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5ncm91cElkIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXJyLm5hbWUgKyAiOiAiICsgZXJyLm1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gZ3JhbnRQZXJtaXNzaW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworICAgICAgICAgICAgICAg
ICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0
VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86e319KQorICAgICAgICAgICAgICAgICAgICAgICAg
LnRoZW4oZnVuY3Rpb24oc3RyZWFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2
ZVBlcm1pc3Npb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0
ZShudWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0pCisgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgbWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSgpIGZhaWxlZCB3aXRoICR7ZXJyLm5hbWV9OiAke2Vyci5tZXNzYWdlfWApOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAgIH0p
Ci0gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKGVyci5uYW1lICsgIjogIiArIGVyci5tZXNzYWdlKTsKLSAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGhhdmVQZXJtaXNzaW9uID0gZmFsc2U7CisgICAgICAg
ICAgICBlbnVtZXJhdGUoZ3JhbnRQZXJtaXNzaW9uKTsKIAogICAgICAgICAgICAgd2luZG93LnN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAgICAgICAgIDwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="292137"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="292153"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267116</attachid>
            <date>2015-12-10 11:51:01 -0800</date>
            <delta_ts>2015-12-10 13:02:08 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>devices_access_patch_8.txt</filename>
            <type>text/plain</type>
            <size>115357</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTEyLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
RXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgYW4gZXhpc3RpbmcgdGVzdCB3YXMgdXBkYXRlZCB0byB0ZXN0IHRoZSBjaGFu
Z2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5jcHAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1Jl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6fk1lZGlh
RGV2aWNlc1JlcXVlc3QpOiBDbGVhciB0aGUgcGVybWlzc2lvbiBjaGVja2VyIGNsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0KTogQ3Jl
YXRlIGEgcGVybWlzc2lvbiBjaGVja2VyIGFuZCBzdGFydCBpdCBydW5uaW5nLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayk6IFN0YXJ0IHRo
ZSBtZWRpYSBzb3VyY2UgY2hlY2tlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OmRpZENvbXBsZXRlUmVxdWVzdCk6IE9ubHkgaW5jbHVkZSBhIHRyYWNrJ3MgbGFiZWwg
aWYgdGhlCisgICAgICAgICAgcGFnZSBoYXMgcGVybWlzc2lvbiB0byB1c2UgYSBjYXB0dXJlIGRl
dmljZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
aDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6IElu
Y2x1ZGUgcHJvdG90eXBlcyBmb3IgcGVybWlzc2lvbiBjaGVja2VyLgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhQ2xpZW50Ojp+VXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAgCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3Bw
OiBSZW1vdmVkLCBub3QgbG9uZ2VyIHVzZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaAorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFDb250cm9sbGVyOjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24pOiBOZXcuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyTWVkaWFDb250cm9sbGVyOjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2spOiBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2s6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6On5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzZWN1cml0eU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OmNvbnRleHRE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnNldERl
dmljZUFjY2Vzc01vZGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrQ2xpZW50Ojp+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2V0Q2xpZW50KToKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5jcHB8LmgKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svVXNlck1l
ZGlhQ2xpZW50TW9jay5oOiBSZW1vdmVkLCBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNS0xMi0wOCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIExpZ2h0IGNsZWFudXAgaW4gVGV4dFBhaW50ZXIu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1Miw3ICs5NTIsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
Z2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKLSAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCkBAIC05NzUsNiArOTc0LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVu
dC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uY3BwCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKIAogICAgIE1vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0
aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAko
cmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXNSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBN
ZWRpYURldmljZXNSZXF1ZXN0OjpNZWRpYURldmljZXNSZXF1ZXN0CiAKIE1lZGlhRGV2aWNlc1Jl
cXVlc3Q6On5NZWRpYURldmljZXNSZXF1ZXN0KCkKIHsKKyAgICBpZiAobV9wZXJtaXNzaW9uQ2hl
Y2spCisgICAgICAgIG1fcGVybWlzc2lvbkNoZWNrLT5zZXRDbGllbnQobnVsbHB0cik7CiB9CiAK
IFNlY3VyaXR5T3JpZ2luKiBNZWRpYURldmljZXNSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNv
bnN0CkBAIC02NSwyOCArNjcsNDYgQEAgU2VjdXJpdHlPcmlnaW4qIE1lZGlhRGV2aWNlc1JlcXVl
c3Q6OnNlYwogdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsK
ICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOworICAg
IGlmIChtX3Blcm1pc3Npb25DaGVjaykgeworICAgICAgICBtX3Blcm1pc3Npb25DaGVjay0+c2V0
Q2xpZW50KG51bGxwdHIpOworICAgICAgICBtX3Blcm1pc3Npb25DaGVjayA9IG51bGxwdHI7Cisg
ICAgfQogICAgIG1fcHJvdGVjdG9yID0gbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYURldmljZXNS
ZXF1ZXN0OjpzdGFydCgpCiB7CiAgICAgbV9wcm90ZWN0b3IgPSB0aGlzOwotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
KHRoaXMpOworICAgIG1fcGVybWlzc2lvbkNoZWNrID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
OjpjcmVhdGUoKmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCAq
dGhpcyk7CisgICAgbV9wZXJtaXNzaW9uQ2hlY2stPnN0YXJ0KCk7Cit9CisKK3ZvaWQgTWVkaWFE
ZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayhib29sIGNhbkFjY2VzcykKK3sKKyAgICBt
X3Blcm1pc3Npb25DaGVjay0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIG1fcGVybWlzc2lvbkNo
ZWNrID0gbnVsbHB0cjsKKworICAgIG1faGFzVXNlck1lZGlhUGVybWlzc2lvbiA9IGNhbkFjY2Vz
czsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXModGhp
cyk7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVS
ZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mb1ZlY3RvciYgY2FwdHVyZWREZXZpY2VzKQogewot
ICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICghbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KSB7CisgICAgICAgIG1fcHJvdGVjdG9yID0gbnVsbHB0cjsKICAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gZGV2
aWNlSW5mbzsKICAgICBmb3IgKGF1dG8gZGV2aWNlIDogY2FwdHVyZWREZXZpY2VzKSB7CiAgICAg
ICAgIFRyYWNrU291cmNlSW5mbyogdHJhY2tJbmZvID0gZGV2aWNlLmdldCgpOwogICAgICAgICBT
dHJpbmcgZGV2aWNlVHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6
U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkgOiBN
ZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IGxh
YmVsIGlzIHN1cHBvc2VkIHRvIGJlIGVtcHR5IHVubGVzcyBhIGRldmljZSBpcyBhdHRhY2hlZCB0
byBhbiBhY3RpdmUgTWVkaWFTdHJlYW1UcmFjayBpbiB0aGUgY3VycmVudCBicm93c2luZyBjb250
ZXh0LCBvcgotICAgICAgICAvLyBwZXJzaXN0ZW50IHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZXNl
IGxvY2FsIGRldmljZXMgaGFzIGJlZW4gZ3JhbnRlZCB0byB0aGUgcGFnZSdzIG9yaWdpbi4KLSAg
ICAgICAgZGV2aWNlSW5mby5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVhdGUobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCB0cmFja0luZm8tPmxhYmVsKCksIHRyYWNrSW5mby0+aWQoKSwgdHJh
Y2tJbmZvLT5ncm91cElkKCksIGRldmljZVR5cGUpKTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGxh
YmVsID0gbV9oYXNVc2VyTWVkaWFQZXJtaXNzaW9uID8gdHJhY2tJbmZvLT5sYWJlbCgpIDogZW1w
dHlBdG9tOworICAgICAgICBkZXZpY2VJbmZvLmFwcGVuZChNZWRpYURldmljZUluZm86OmNyZWF0
ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGxhYmVsLCB0cmFja0luZm8tPmlkKCksIHRyYWNr
SW5mby0+Z3JvdXBJZCgpLCBkZXZpY2VUeXBlKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPE1lZGlh
RGV2aWNlc1JlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
aAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXNSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDEwIEBA
CiAjaW5jbHVkZSAiTWVkaWFEZXZpY2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNyArNDcsNyBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgTWVkaWFEZXZp
Y2VzUmVxdWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQs
IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBNZWRpYURldmljZXNS
ZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudCwgcHVi
bGljIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGV2aWNlc1Jl
cXVlc3Q+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhRGV2aWNlczo6RW51bWVyYXRlRGV2aWNlc1By
b21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC02MywxMCArNjUsMTYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENvbXBsZXRlUmVxdWVzdChjb25zdCBUcmFja1NvdXJjZUluZm9WZWN0b3Im
KSBmaW5hbDsKIAogICAgIC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCi0gICAgdmlydHVh
bCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKSBvdmVycmlkZSBmaW5hbDsKKworICAgIC8vIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja0NsaWVudAorICAgIHZvaWQgZGlkQ29tcGxldGVDaGVjayhib29sKSBvdmVycmlkZSBm
aW5hbDsKIAogICAgIE1lZGlhRGV2aWNlczo6RW51bWVyYXRlRGV2aWNlc1Byb21pc2UgbV9wcm9t
aXNlOwogICAgIFJlZlB0cjxNZWRpYURldmljZXNSZXF1ZXN0PiBtX3Byb3RlY3RvcjsKKyAgICBS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiBtX3Blcm1pc3Npb25DaGVjazsKKworICAg
IGJvb2wgbV9oYXNVc2VyTWVkaWFQZXJtaXNzaW9uIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dC5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09H
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3QuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU291
cmNlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdD4gTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiBjYWxsYmFjaykK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3QoY29udGV4dCwgY2FsbGJhY2spKTsKLX0KLQotTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0OjpNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiBj
YWxsYmFjaykKLSAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi17Ci0gICAgbV9vcmlnaW4gPSBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwotfQotCi12b2lkIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVSZXF1ZXN0KGNvbnN0IFRyYWNrU291
cmNlSW5mb1ZlY3RvciYgcmVxdWVzdFNvdXJjZUluZm9zKQotewotICAgIEFTU0VSVChtX2NhbGxi
YWNrKTsKLQotICAgIGZvciAoYXV0byYgaW5mbyA6IHJlcXVlc3RTb3VyY2VJbmZvcykKLSAgICAg
ICAgbV9zb3VyY2VJbmZvcy5hcHBlbmQoU291cmNlSW5mbzo6Y3JlYXRlKGluZm8pKTsKLQotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10gewotICAgICAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjaz4mIGNhbGxiYWNrID0gcHJvdGVjdGVk
VGhpcy0+bV9jYWxsYmFjazsKLSAgICAgICAgQVNTRVJUKGNhbGxiYWNrKTsKLQotICAgICAgICBj
YWxsYmFjay0+aGFuZGxlRXZlbnQocHJvdGVjdGVkVGhpcy0+bV9zb3VyY2VJbmZvcyk7Ci0gICAg
ICAgIGNhbGxiYWNrID0gbnVsbHB0cjsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Qu
aAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RfaAotI2RlZmluZSBNZWRp
YVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgotI2lu
Y2x1ZGUgIlNvdXJjZUluZm8uaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrOwotY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Q+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
U291cmNlc0NhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0KCkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzQ2FsbGJhY2s+KTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiByZXF1ZXN0T3JpZ2luKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9vcmlnaW47IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxl
dGVSZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mb1ZlY3RvciYpIG92ZXJyaWRlOwotCi0gICAg
U3RyaW5nIG1fb3JpZ2luOwotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxi
YWNrPiBtX2NhbGxiYWNrOwotICAgIFZlY3RvcjxSZWZQdHI8U291cmNlSW5mbz4+IG1fc291cmNl
SW5mb3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAkocmV2aXNp
b24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE5IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s7
CiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OwogCiBjbGFzcyBVc2VyTWVkaWFDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhVc2VyTWVkaWFSZXF1
ZXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0
KFVzZXJNZWRpYVJlcXVlc3QmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tVc2VyTWVk
aWFQZXJtaXNzaW9uKFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjayYpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudCgp
IHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDAsOSArNDEsMTIgQEAgcHVibGljOgogCiAgICAgVXNlck1lZGlhQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCi0gICAgdm9pZCByZXF1ZXN0VXNlck1l
ZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RVc2Vy
TWVkaWFBY2Nlc3MoVXNlck1lZGlhUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsVXNlck1lZGlh
QWNjZXNzUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKKyAgICB2b2lkIGNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKTsKKyAgICB2b2lkIGNhbmNl
bFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKTsKKwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwog
ICAgIHN0YXRpYyBVc2VyTWVkaWFDb250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFVzZXJNZWRpYUNvbnRyb2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9t
KHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQogCkBAIC01MCw5ICs1NCw5IEBAIHByaXZhdGU6
CiAgICAgVXNlck1lZGlhQ2xpZW50KiBtX2NsaWVudDsKIH07CiAKLWlubGluZSB2b2lkIFVzZXJN
ZWRpYUNvbnRyb2xsZXI6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFVzZXJNZWRpYVJlcXVl
c3Q+JiYgcmVxdWVzdCkKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnJlcXVlc3RV
c2VyTWVkaWFBY2Nlc3MoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2NsaWVu
dC0+cmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhXVEY6Om1vdmUocmVxdWVzdCkpOworICAgIG1fY2xp
ZW50LT5yZXF1ZXN0VXNlck1lZGlhQWNjZXNzKHJlcXVlc3QpOwogfQogCiBpbmxpbmUgdm9pZCBV
c2VyTWVkaWFDb250cm9sbGVyOjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QmIHJlcXVlc3QpCkBAIC02MCw2ICs2NCwxNiBAQCBpbmxpbmUgdm9pZCBVc2VyTWVk
aWFDb250cm9sbGVyOjpjYW5jZWxVCiAgICAgbV9jbGllbnQtPmNhbmNlbFVzZXJNZWRpYUFjY2Vz
c1JlcXVlc3QocmVxdWVzdCk7CiB9CiAKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVl
c3QpCit7CisgICAgbV9jbGllbnQtPmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihyZXF1ZXN0KTsK
K30KKworaW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrKFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBt
X2NsaWVudC0+Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHJlcXVlc3QpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlSW5mby5oIgorI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2s+IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKGRvY3VtZW50LCBjbGll
bnQpKTsKK30KKworVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrQ2xpZW50JiBjbGllbnQpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigm
Y29udGV4dCkKKyAgICAsIG1fY2xpZW50KCZjbGllbnQpCit7Cit9CisKK1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVjazo6flVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaygpCit7Cit9CisKK1NlY3VyaXR5
T3JpZ2luKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QK
K3sKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpOworCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpjb250ZXh0RGVzdHJv
eWVkKCkKK3sKKyAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3ll
ZCgpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c3RhcnQoKQoreworICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgVXNl
ck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciA9IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20o
ZG9jdW1lbnQucGFnZSgpKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGNvbnRyb2xsZXItPmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbigqdGhpcyk7Cit9CisK
K3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lv
bihib29sIG1vZGUpCit7CisgICAgbV9oYXNQZXJzaXN0ZW50UGVybWlzc2lvbiA9IG1vZGU7CisK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZUNoZWNrKG1f
aGFzUGVyc2lzdGVudFBlcm1pc3Npb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisj
aWZuZGVmIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja19oCisjZGVmaW5lIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VzLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwor
CitjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgflVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZENvbXBsZXRlQ2hlY2soYm9vbCkgPSAwOworfTsKKworY2xhc3MgVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrIGZpbmFsIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
LCBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4gY3JlYXRlKERvY3VtZW50
JiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50Jik7CisKKyAgICB2aXJ0dWFsIH5Vc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2soKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHNl
dENsaWVudChVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIYXNQZXJzaXN0ZW50
UGVybWlzc2lvbihib29sKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
Q2xpZW50Jik7CisKKyAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgorICAgIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisKKyAgICBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9oYXNQZXJzaXN0
ZW50UGVybWlzc2lvbiB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTMw
LDYgKzEzMCw4IEBACiAJCTA3Mjc3RTUzMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
Mjc3RTQ3MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2suaCAqLzsgfTsKIAkJ
MDcyNzdFNTQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjc3RTQ4MTdE
MDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgKi87IH07CiAJCTA3
Mjc3RTU1MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDkxN0QwMThD
QzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggKi87IH07CisJCTA3Mjk3RkE3
MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGQTUxQzE4ODFDNTAw
M0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgKi87IHNldHRpbmdzID0ge0FT
U0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDcyOTdGQTgxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyOTdGQTYxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA3MkFFMUU1MTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyQUUxREYxODNDMDc0
MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggKi87IH07CiAJCTA3MkFFMUU2MTgzQzA3
NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMUUwMTgzQzA3NDEwMDBBNTk4
OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSAqLzsgfTsKIAkJMDcyQUUxRTgxODND
MDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBRTFFMjE4M0MwNzQxMDAwQTU5
ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKQEAgLTE1NCw3ICsxNTYs
NyBAQAogCQkwNzM3OTRGRDE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM3OTRGNzE5
RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5jcHAgKi87IH07CiAJCTA3Mzc5NEZF
MTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM3OTRGODE5RjU4NjRFMDBFNUEwNDUgLyog
UlRDTm90aWZpZXJzTW9jay5oICovOyB9OwogCQkwNzM5NEVDODFCQUIyQ0NEMDBCRTk5Q0QgLyog
TWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzM5NEVDNzFCQUIyQ0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVx
dWVzdC5jcHAgKi87IH07Ci0JCTA3Mzk0RUNBMUJBQjJDRDcwMEJFOTlDRCAvKiBNZWRpYURldmlj
ZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzM5NEVDOTFCQUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oICovOyB9
OworCQkwNzM5NEVDQTFCQUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczOTRFQzkxQkFC
MkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCRTM0MDE3RDE3RTAxMDAyQkQ0MzEg
LyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0UxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9y
VXNlck1lZGlhLmNwcCAqLzsgfTsKIAkJMDczQkUzNDExN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2
aWdhdG9yVXNlck1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNC
RTM0ODE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTM0MjE3RDE3
RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgKi87IH07CkBAIC0x
NjcsOCArMTY5LDYgQEAKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRU
cmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJ
MDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDExNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovOyB9OwogCQkwNzYzMDZEMDE3RTE0NzhEMDA1QTdD
NEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0MxN0UxNDc4RDAwNUE3QzRFIC8q
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAqLzsgfTsKLQkJMDc2MzA2RDIxN0Ux
NDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZDRTE3RTE0NzhE
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCAqLzsgfTsKLQkJ
MDc2MzA2RDMxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2
Q0YxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oICov
OyB9OwogCQkwNzYzMDZENzE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZENDE3RTE0OUNG
MDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgKi87IH07CiAJCTA3NjMwNkQ4MTdFMTQ5RDAwMDVB
N0M0RSAvKiBTb3VyY2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzYzMDZENTE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5oICovOyB9
OwogCQkwNzYzMDZEQzE3RTE1RkIwMDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNl
c0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NjMwNkRBMTdFMTVGQjAwMDVBN0M0RSAvKiBKU01lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMTE0OCw3ICsxMTQ4LDYgQEAKIAkJMkQ3N0FDMkIxQkYy
Qjk4NzAwNzI0NzBBIC8qIE5TVGV4dEZpbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3N0FDMjgxQkYyQjk4NjAwNzI0NzBBIC8qIE5TVGV4
dEZpbmRlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJENzdBQzJEMUJGMkI5QTAwMDcyNDcwQSAvKiBOU1ZpZXdTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzdBQzJDMUJGMkI5QTAwMDcy
NDcwQSAvKiBOU1ZpZXdTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRDdFRDBBQjFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2Vk
TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3
RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCAqLzsgfTsKLQkJ
MkQ3RUQwQUMxQkFFOTkxNzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVudE1vY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0VEMEFBMUJBRTk5MTcw
MDQzQjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggKi87IH07CiAJCTJEODI4N0Y2MTZFNEEw
MzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRl
c3RMb2NhdGlvbi5jcHAgKi87IH07CiAJCTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRU
ZXN0TG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDhGRUJEQzE0M0Uz
RUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4RkVCREExNDNFM0VGNzAwNzI1MDJCIC8qIENT
U0Nyb3NzZmFkZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTc0MzksNiArNzQzOCw4IEBACiAJCTA3Mjc3
RTQ4MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjc3RTQ5MTdEMDE4Q0MwMDE1NTM0
RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1UZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDcyOTdGQTUxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI5N0ZB
NjFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJBRTFERjE4M0MwNzQxMDAwQTU5ODggLyogUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2lu
UmVwbGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQUUxRTAxODND
MDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkFFMUUxMTgzQzA3NDEwMDBBNTk4
OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsg
cGF0aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNzczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc0NzgsOCArNzQ3OSw2IEBACiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjMwNkND
MTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2Fs
bGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MzA2Q0QxN0UxNDc4RDAw
NUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZDRTE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkNGMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NjMwNkQ0MTdFMTQ5Q0YwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUluZm8uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzYzMDZENTE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjMwNkQ2MTdFMTQ5Q0YwMDVBN0M0RSAvKiBTb3Vy
Y2VJbmZvLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VJbmZvLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1MDAsNyArODQ5OSw2IEBACiAJCTJENzdBQzI4MUJG
MkI5ODYwMDcyNDcwQSAvKiBOU1RleHRGaW5kZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTlNUZXh0RmluZGVyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJENzdBQzJDMUJGMkI5QTAwMDcyNDcwQSAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEN0VEMEE5MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVyRXZlbnRCYXNlZE1vY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ3RUQwQUExQkFFOTkxNzAwNDNCM0U1IC8q
IFVzZXJNZWRpYUNsaWVudE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VXNlck1lZGlhQ2xpZW50TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgy
ODdGNDE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9j
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdExvY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRBMTQzRTNFRjcwMDcyNTAy
QiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTEyOCw4ICsxNTEyNiw2IEBACiAJCQkJMDcyMjFCNTkxN0NFQzMyNzAwODQ4RTUxIC8q
IE1lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgKi8sCiAJCQkJMDc2MzA2Q0MxN0UxNDc4RDAwNUE3
QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAqLywKIAkJCQkwNzYzMDZD
RDE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwg
Ki8sCi0JCQkJMDc2MzA2Q0UxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdC5jcHAgKi8sCi0JCQkJMDc2MzA2Q0YxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oICovLAogCQkJCTA3MDU4NTM5MTdGRTA3NzAwMDVG
MkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8sCiAJCQkJMDcwNTg1MUQxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCiAJCQkJMDcwNTg1MUUxN0ZE
QzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLywKQEAgLTE1MjA2LDYg
KzE1MjAyLDggQEAKIAkJCQkwNzIyMUI4RDE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ2xp
ZW50LmggKi8sCiAJCQkJMDcyMjFCOEUxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRy
b2xsZXIuY3BwICovLAogCQkJCTA3MjIxQjhGMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFD
b250cm9sbGVyLmggKi8sCisJCQkJMDcyOTdGQTUxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5jcHAgKi8sCisJCQkJMDcyOTdGQTYxQzE4ODFDNTAwM0YwNzM1IC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovLAogCQkJCTA3MjIxQjkwMTdDRUMzMjcwMDg0
OEU1MSAvKiBVc2VyTWVkaWFSZXF1ZXN0LmNwcCAqLywKIAkJCQkwNzIyMUI5MTE3Q0VDMzI3MDA4
NDhFNTEgLyogVXNlck1lZGlhUmVxdWVzdC5oICovLAogCQkJKTsKQEAgLTE3MTUzLDcgKzE3MTUx
LDYgQEAKIAkJCQkwRkU3MTQwMzE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcCAqLywKIAkJCQkwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVN
b2NrLmggKi8sCiAJCQkJMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNl
ZE1vY2suaCAqLywKLQkJCQkyRDdFRDBBQTFCQUU5OTE3MDA0M0IzRTUgLyogVXNlck1lZGlhQ2xp
ZW50TW9jay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBtb2NrOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTI2MTk4LDYgKzI2MTk1LDcgQEAKIAkJCQlDREFCNkQyRTE3QzgxNEVFMDBD
NjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTU5NzQx
REIxQjdEMTQwMTAwMjAxQzkyIC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNTczOUJCQjFCNDIwMTJEMDBEMjU4QzEgLyogSlNNZWRpYURldmljZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3Mjk3RkE4MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMjNBMTI2MTNGNUZBNTkwMEY2NzAwMSAv
KiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0
NjE0MTkwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggaW4gSGVhZGVycyAq
LywKQEAgLTI2NzA3LDcgKzI2NzA1LDYgQEAKIAkJCQkwNzhFMDkxOTE3RDE0RDFDMDA0MjBBQTEg
LyogTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0ZGREU2OTE4
MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3NjMwNkQwMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNl
c0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzYzMDZEMzE3RTE0NzhEMDA1QTdDNEUg
LyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzYzMDZFMzE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDY0MUVDMDE4MTlCMzYwMDBFRTRDNDEgLyog
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDYwQzBDNzE5M0U4
N0M3MDAzQzY1NkIgLyogTWVkaWFUaW1lUVRLaXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc4OTcs
NyArMjc4OTQsNiBAQAogCQkJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVy
ZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkyMDM5ODMxOEI5NUJDNjAwQjM5QUY5
IC8qIFVzZXJJbnB1dEJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MkUxN0QxNEQx
QzAwNDIwQUExIC8qIFVzZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkQ3RUQw
QUMxQkFFOTkxNzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVudE1vY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3OEUwOTJGMTdEMTREMUMwMDQyMEFBMSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzMDE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlh
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzQjc5NzIxOTA4NzU3QjAwQjQ3QTJEIC8q
IFVzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY5MSw2ICsyOTY4Nyw3
IEBACiAJCQkJNTE3MTM5MDUxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBK
U0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFB
NTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDcyOTdGQTcxQzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJp
bmdMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjQ2NDk3MTFEODIzNDkwMDY0
NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0NjQ5QzEx
RDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMDQwMyw3ICszMDQwMCw2IEBACiAJCQkJMDc4RTA5MDIxN0QxNENFRTAwNDIwQUExIC8q
IE1lZGlhU3RyZWFtVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDMxN0QxNENF
RTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwN0ZGREU2ODE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMDc2MzA2RDIxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDY0MUVCRjE4
MTlCMzYwMDBFRTRDNDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNENjBDMEM2MTkzRTg3QzcwMDNDNjU2QiAvKiBNZWRpYVRpbWVRVEtpdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTA3MDU4NTNBMTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svVXNlck1lZGlhQ2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svVXNlck1lZGlhQ2xpZW50TW9jay5oCShyZXZpc2lvbiAxOTM3NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMSw5MCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMyBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFVzZXJNZWRpYUNsaWVudE1vY2tfaAotI2RlZmluZSBVc2VyTWVk
aWFDbGllbnRNb2NrX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJU
aW1lckV2ZW50QmFzZWRNb2NrLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCi0jaW5j
bHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllciA6IHB1YmxpYyBNb2NrTm90aWZpZXIgewot
cHVibGljOgotICAgIFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcihSZWY8VXNlck1lZGlh
UmVxdWVzdD4mJiByZXF1ZXN0LCBib29sIHJlcXVlc3RTdWNjZXNzKQotICAgICAgICA6IG1fcmVx
dWVzdChXVEY6Om1vdmUocmVxdWVzdCkpCi0gICAgICAgICwgbV9yZXF1ZXN0U3VjY2VzcyhyZXF1
ZXN0U3VjY2VzcykKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaXJlKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmICghbV9yZXF1ZXN0U3VjY2VzcykgewotICAgICAgICAgICAgbV9yZXF1
ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGF1dG8gYXVkaW9EZXZpY2VVSURzID0gbV9yZXF1ZXN0LT5hdWRpb0Rl
dmljZVVJRHMoKTsKLSAgICAgICAgYXV0byB2aWRlb0RldmljZVVJRHMgID0gbV9yZXF1ZXN0LT52
aWRlb0RldmljZVVJRHMoKTsKLSAgICAgICAgU3RyaW5nIGFsbG93ZWRBdWRpb1VJRCA9IGF1ZGlv
RGV2aWNlVUlEcy5zaXplKCkgPyBhdWRpb0RldmljZVVJRHMuYXQoMCkgOiBlbXB0eVN0cmluZygp
OwotICAgICAgICBTdHJpbmcgdmlkZW9BdWRpb1VJRCA9IHZpZGVvRGV2aWNlVUlEcy5zaXplKCkg
PyB2aWRlb0RldmljZVVJRHMuYXQoMCkgOiBlbXB0eVN0cmluZygpOwotCi0gICAgICAgIG1fcmVx
dWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChhbGxvd2VkQXVkaW9VSUQsIHZpZGVvQXVkaW9V
SUQpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gbV9yZXF1
ZXN0OwotICAgIGJvb2wgbV9yZXF1ZXN0U3VjY2VzczsKLX07Ci0KLWNsYXNzIFVzZXJNZWRpYUNs
aWVudE1vY2sgZmluYWwgOiBwdWJsaWMgVXNlck1lZGlhQ2xpZW50LCBwdWJsaWMgVGltZXJFdmVu
dEJhc2VkTW9jayB7Ci1wdWJsaWM6Ci0gICAgcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBwYWdl
RGVzdHJveWVkKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0K
LQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFS
ZXF1ZXN0PiYmIHJlcXVlc3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBSZWZQdHI8VXNlck1l
ZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBVc2VyTWVk
aWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIoV1RGOjptb3ZlKHJlcXVlc3QpLCB0cnVlKSk7Ci0gICAg
ICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2ZW50KHRoaXMsIG5v
dGlmaWVyKSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFBY2Nl
c3NSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBSZWZQdHI8VXNlck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyPiBub3RpZmllciA9IGFk
b3B0UmVmKG5ldyBVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIocmVxdWVzdCwgZmFsc2Up
KTsKLSAgICAgICAgbV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQo
dGhpcywgbm90aWZpZXIpKSk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIFVzZXJNZWRpYUNs
aWVudE1vY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNp
b24gMTkzNzc5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDYgQEAKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNs
aWVudE1vY2suaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDE1LTEyLTA5ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gRXhwb3NlIG1l
ZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdlYkNvcmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjA4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IEFkZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAgYW5kIFdLVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrLmNwcC4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0
Lmg6IERlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tCYXNlLmg6IEFkZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiB0eXBlZGVm
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKTogTmV3LgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOiBBZGQgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tSZWYvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkgbWFwcGluZy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KTogSW1wbGVtZW50IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdp
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOiBBZGQgV0tD
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayB0eXBlZGVmIGFuZCBhZGQKKyAgICAgICAg
ICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4gdG8gV0tQYWdlVUlDbGllbnRWNi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tHZXRUeXBlSUQp
OgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tTZXRIYXNQZXJtaXNzaW9uKToK
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5o
OiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6c2V0SGFzUGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjppbnZhbGlkYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRS
ZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6CisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LiosIGFuZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay4qLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OnN0YXJ0VXNlck1lZGlhUmVxdWVzdCk6IFJlbmFtZWQgZnJvbSBzdGFydFJlcXVlc3QuCisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNl
ck1lZGlhUmVxdWVzdCk6IFJlbmFtZWQgZnJvbSBjYW5jZWxSZXF1ZXN0LgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVc2VyTWVk
aWFQZXJtaXNzaW9uRGVjaXNpb24pOiBtX3JlcXVlc3RUb0lETWFwIC0+CisgICAgICAgICAgbV91
c2VyTWVkaWFSZXF1ZXN0VG9JRE1hcC5yZW1vdmUuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sp
OiBOZXcsIHN0YXJ0IHRoZSByZXF1ZXN0LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayk6IE5l
dywgY2FuY2VsCisgICAgICAgICAgdGhlIHJlcXVlc3QuCisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2spOiBOZXcsIAorICAgICAgICAgIGFsbCB0aGUgcmVxdWVzdCBjb21wbGV0aW9uIG1l
dGhvZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpzdGFydFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFVz
ZXJNZWRpYUFjY2Vzcyk6IHN0YXJ0UmVxdWVzdCAtPiBzdGFydFVzZXJNZWRpYVJlcXVlc3QuCisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhQWNjZXNz
UmVxdWVzdCk6IGNhbmNlbFJlcXVlc3QgLT4gY2FuY2VsVXNlck1lZGlhUmVxdWVzdC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24p
OiBOZXcuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrKTogTmV3LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbXBsZXRlVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKTogTmV3LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46IEFkZCBEaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay4KKwogMjAxNS0x
Mi0wOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWFTdHJlYW1dIFJlbmFtZSBVc2VyTWVkaWFDbGllbnQgYW5kIFVzZXJNZWRpYUNvbnRyb2xs
ZXIgbWV0aG9kcwpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiAr
MzQ3LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVz
c1RpbWVyLmNwcAogICAgIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKICAgICBVSVBy
b2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBA
IC00NTQsNiArNDU1LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tl
ci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3
cG9ydEF0dHJpYnV0ZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFVzZXJDb250ZW50Q29udHJvbGxlciwKICAgICAgICAgVXNlckNvbnRlbnRFeHRlbnNpb24sCiAg
ICAgICAgIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUsCisgICAgICAgIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjaywKICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAg
IFZpYnJhdGlvbiwKICAgICAgICAgVmlld3BvcnRBdHRyaWJ1dGVzLApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTZXNzaW9uU3RhdAogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tVc2VyQ29udGVudENvbnRyb2xsZXIqIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlKiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250ZW50RmlsdGVyKiBXS1VzZXJDb250ZW50RmlsdGVyUmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sq
IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlclNjcmlwdCogV0tVc2Vy
U2NyaXB0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJyYXRpb24qIFdLVmli
cmF0aW9uUmVmOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgiCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1
c2VyTWVkaWFJRCkKKyAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAgICAsIG1fdXNlck1lZGlh
SUQodXNlck1lZGlhSUQpCit7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHk6OnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBBU1NF
UlQobV9tYW5hZ2VyKTsKKyAgICBpZiAoIW1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9tYW5hZ2VyLT5kaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhtX3VzZXJN
ZWRpYUlELCBhbGxvd2VkKTsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOworfQorCit2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX21hbmFn
ZXIgPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eV9oCisjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OworCitjbGFzcyBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCkpOworICAgIH0KKworICAgIHZvaWQgc2V0
SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKTsKKyAgICB2b2lkIGludmFsaWRh
dGUoKTsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eShVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRpYUlE
KTsKKworICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtX21hbmFn
ZXI7CisgICAgdWludDY0X3QgbV91c2VyTWVkaWFJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHlfaApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNyArMzIsMTcgQEAgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OgogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogewotICAgIGZvciAo
YXV0byYgcmVxdWVzdCA6IG1fcGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQorICAgIGZvciAoYXV0
byYgcmVxdWVzdCA6IG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLnZhbHVlcygpKQogICAgICAg
ICByZXF1ZXN0LT5pbnZhbGlkYXRlKCk7CiAKLSAgICBtX3BlbmRpbmdSZXF1ZXN0cy5jbGVhcigp
OworICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB2aWRlb0RldmljZVVJRHMpCitSZWY8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4g
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWlu
dDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpCiB7Ci0gICAgUmVmUHRyPFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRpYUlELCBhdWRpb0RldmljZVVJ
RHMsIHZpZGVvRGV2aWNlVUlEcyk7Ci0gICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKHVzZXJNZWRp
YUlELCByZXF1ZXN0LmdldCgpKTsKLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAg
UmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRpYUlELCBhdWRpb0Rl
dmljZVVJRHMsIHZpZGVvRGV2aWNlVUlEcyk7CisgICAgbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVz
dHMuYWRkKHVzZXJNZWRpYUlELCByZXF1ZXN0LnB0cigpKTsKKyAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVj
ZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9v
bCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZp
ZGVvRGV2aWNlVUlEKQpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByCiAgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fcGVuZGluZ1JlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpKQorICAg
IGlmICghbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCkpCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC02MCw0ICs2MCwyNiBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAjZW5kaWYKIH0KIAor
UmVmPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90
IHVzZXJNZWRpYUlEKQoreworICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4g
cmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OjpjcmVhdGUoKnRoaXMsIHVz
ZXJNZWRpYUlEKTsKKyAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQs
IHJlcXVlc3QucHRyKCkpOworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayh1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkKQoreworICAgIGlm
ICghbV9wYWdlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3BlbmRp
bmdEZXZpY2VSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKSkKKyAgICAgICAgcmV0dXJuOworCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVzZXJNZWRp
YUlELCBhbGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGFsbG93ZWQpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBACiAjaWZuZGVmIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gKICNkZWZpbmUgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHlfaAogCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Lmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzIsMTQgKzMzLDE2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKLSAgICAvLyBDcmVhdGUgYSByZXF1
ZXN0IHRvIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlci4KLSAgICBQYXNzUmVmUHRyPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlh
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOwotCi0gICAgLy8gQ2FsbGVkIGJ5IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkgd2hlbiBhIGRlY2lzaW9uIGlzIG1hZGUgYnkgdGhlIHVzZXIu
CisgICAgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3Qo
dWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJ
RHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwgYm9vbCBhbGxvdywg
Y29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJ
RCk7CiAKKworICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4gY3JlYXRlVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90IHVzZXJNZWRpYUlEKTsKKyAgICB2b2lkIGRp
ZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVpbnQ2NF90LCBib29sIGFsbG93KTsK
KwogcHJpdmF0ZToKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Pj4gbV9wZW5kaW5nVXNl
ck1lZGlhUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5Pj4gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHM7CiAgICAgV2ViUGFn
ZVByb3h5JiBtX3BhZ2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgJKHJldmlzaW9u
IDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMSw5ICszMCw5IEBAIGNsYXNz
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclAKIAogY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcykKKyAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2aWRlb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0Rldmlj
ZVVJRHMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIHZpZGVvRGV2aWNlVUlEcywg
YXVkaW9EZXZpY2VVSURzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIHZpZGVvRGV2aWNl
VUlEcywgYXVkaW9EZXZpY2VVSURzKSk7CiAgICAgfQogCiAgICAgdm9pZCBhbGxvdyhjb25zdCBT
dHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAx
OTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI1OSw2ICs1MjU5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0VXNlck1lZGlhUGVybWkKICAgICAgICAgcmVxdWVzdC0+ZGVueSgpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNl
ck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQorewor
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsK
KyAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKKworICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikpOworICAgIFJl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4gcmVxdWVzdCA9IG1fdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1
c2VyTWVkaWFJRCk7CisKKyAgICBpZiAoIW1fdWlDbGllbnQtPmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvck9yaWdpbigqdGhpcywgKmZyYW1lLCAqb3JpZ2luLmdldCgpLCAqcmVxdWVzdC5nZXQo
KSkpCisgICAgICAgIHJlcXVlc3QtPnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGZhbHNlKTsK
K30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCiB7CiAgICAgaWYg
KCFpc1JlcXVlc3RJRFZhbGlkKHJlcXVlc3RJRCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOTAsNiArMTE5MCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdp
bklkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZy
YW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcyk7CisgICAgdm9pZCBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBydW5Nb2RhbCgpOwogICAg
IHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2
ICsyNjIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgIyBNZWRpYVN0ZWFtIG1lc3NhZ2VzCiAgICAgUmVxdWVzdFVzZXJNZWRpYVBl
cm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIFZlY3RvcjxTdHJpbmc+IGF1ZGlvRGV2aWNlVUlEcywg
VmVjdG9yPFN0cmluZz4gdmlkZW9EZXZpY2VVSURzKQorICAgIENoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgb3JpZ2luSWRlbnRpZmllcikKICNlbmRpZgogCiAgICAgIyBOb3RpZmljYXRpb24gbWVzc2Fn
ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJl
dmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xh
c3MgTmF0aXZlV2ViV2hlZWxFdmVudDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0OworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lclByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKQEAgLTEzMSw2ICsxMzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHJ1bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyos
IFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBT
ZWN1cml0eU9yaWdpbiosIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNoZWNr
VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFByaW50aW5nLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMTkzNzc5
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK2NsYXNz
IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW07CkBAIC0xNjEsNiArMTYyLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
VGV4dENoZWNrZXJSZWYsIFdlYgogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6VXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RmlsdGVyUmVmLCBB
UEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUmVmLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlclNjcmlwdFJl
ZiwgQVBJOjpVc2VyU2NyaXB0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlicmF0aW9uUmVmLCBX
ZWJWaWJyYXRpb25Qcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxNyw2ICsyMDE3LDE1IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgdmlydHVhbCBib29sIGNoZWNrVXNlck1lZGlh
UGVybWlzc2lvbkZvck9yaWdpbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5JiByZXF1ZXN0KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvck9yaWdpbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKCZvcmln
aW4pLCB0b0FQSSgmcmVxdWVzdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdmlydHVhbCBi
b29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQ
cm94eSogcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
VUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlVUlDbGllbnQuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3
LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdQogdHlwZWRlZiB2
b2lkICgqV0tQYWdlUGlubmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSXNQbGF5aW5n
QXVkaW9EaWRDaGFuZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tSZWYgZGV2aWNlc1JlcXVlc3QsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZU1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmIG1ldGFk
YXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIApAQCAtNTQ1LDYgKzU0Niw3IEBAIHR5cGVk
ZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjYgewogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVy
dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dEFsZXJ0OwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CiAgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uRm9yT3JpZ2luOwogfSBXS1BhZ2VVSUNsaWVudFY2OwogCiAjaWZkZWYgX19jcGx1
c3BsdXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgiCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS011dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLU3Ry
aW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHk6OkFQSVR5cGUpOworfQorCit2b2lkIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrU2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oV0tVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIGJvb2wgYWxsb3dlZCkK
K3sKKyAgICB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5zZXRIYXNQZXJz
aXN0ZW50UGVybWlzc2lvbihhbGxvd2VkKTsKK30KKwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVm
IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrX2gKKyNkZWZpbmUgV0tVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja0dldFR5cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1NldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKFdLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUmVmLCBib29sKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5k
aWYKKworI2VuZGlmIC8qIFdLTWVkaWFEZXZpY2VzUmVxdWVzdF9oICovCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDEwIEBACiAJCTAwQjk2NjE2MThFMjRD
QkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENs
aWVudC5oICovOyB9OwogCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE3
MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovOyB9OwogCQkwMEI5NjYxQTE4RTI1
QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQu
aCAqLzsgfTsKKwkJMDcyOTdGOUUxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjk3RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDcy
OTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5N0Y5RDFD
MTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkwNzI5N0ZBMjFDMTg2QURCMDAzRjA3
MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGQTAxQzE4NkFEQjAwM0YwNzM1IC8qIFdL
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9
ICgpOyB9OyB9OworCQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAw
NUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTBGMEMzNjU4MThDMDUx
QkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8q
IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi87IH07CiAJCTBGMEMzNjVBMThDMDU1NTgwMEY2
MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1OTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXBy
ZXNlbnRhdGlvbi5oICovOyB9OwpAQCAtMjE2Nyw2ICsyMTcxLDEwIEBACiAJCTAwQjk2NjE1MThF
MjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFQSUZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3Mjk3RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3Mjk3RjlEMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI5N0ZBMTFDMTg2
QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNv
bnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNv
bnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODRG
MUExM0NCQzYwMDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3
RDZBNUZFODQwMzA3QzAyQUFDMDcgLyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC02MTg1LDYg
KzYxOTMsOCBAQAogCQkJCUJDMDZGNDM5MTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwICovLAogCQkJCUJDMDZGNDM4MTJEQkNDRkIwMDJENzhE
RSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCAqLywKIAkJCQkzMTYwN0Yz
ODE5NjI3MDAyMDA5Qjg3REEgLyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCisJCQkJ
MDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmNwcCAqLywKKwkJCQkwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFn
ZUNsaWVudC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmNwcCAqLywKIAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0
ZS5oICovLApAQCAtNjQ4MSw2ICs2NDkxLDggQEAKIAkJCQk3Qzg5RDI5RTFBNjc4NTU0MDAzQTVG
REUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCAqLywKIAkJCQk3QzI0MTMwNjFBQUNG
Q0I0MDBBNThDMTUgLyogV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcCAqLywKIAkJ
CQk3QzI0MTMwNzFBQUNGQ0I0MDBBNThDMTUgLyogV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
UmVmLmggKi8sCisJCQkJMDcyOTdGQTAxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmNwcCAqLywKKwkJCQkwNzI5N0ZBMTFDMTg2QURCMDAzRjA3MzUgLyogV0tV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLywKIAkJCQk0QTQxMEYzNTE5QUY3QUMzMDAyRUJB
QjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgKi8sCiAJCQkJNEE0MTBGMzYx
OUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAqLywKIAkJ
CQk3Qzg5RDJBMTFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNwcCAqLywKQEAg
LTc3NzQsNiArNzc4Niw3IEBACiAJCQkJQkMwNkY0M0ExMkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0
QTQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRBMDQ5QjgxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDcyOTdGQTMxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMENFNzJBRDEyNDdFNzhEMDBCQzBF
QzQgLyogSGFuZGxlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzVBMUIxQjMzNjgy
NzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzdGOTBERTMxMzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLApAQCAtODI2Niw2ICs4Mjc5LDcgQEAKIAkJCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0
QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBNTU2MDExMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJ
dGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMDNGMDczNSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkND
OTM4RTExMTgwREU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1QjEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDg0LDYgKzEwMDk4LDcgQEAKIAkJCQlCQzU0
Q0MxMzEyRDY3NEVFMDA1QzY3QjAgLyogV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMwNkY0NEYxMkRCREYzRjAwMkQ3OERFIC8qIFdLR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNjE5OTEyRDZDRDEyMDAx
MkE3MkEgLyogV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3
Mjk3RkEyMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1MDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNTExOEJCRTA0NDAw
MEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTBGMTc0QUE3MTQyQUFDNjEwMDM5MjUwRiAvKiBXS0dlb21ldHJ5
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAwOTgsNiArMTAxMTMsNyBAQAogCQkJCTBGM0M3MjVD
MTk2RjYwNTIwMEFFREQwQyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBNTQyOTNBNTE5NUE0M0REMDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE5RTEwQTEzMTVD
RDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTA3Mjk3RjlFMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzM0QzQTNCNTEzMzk2MDBCMDA3MDlCRTQg
LyogV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOThDNDhBOTFC
NkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzlDRDQzOUUxQjRCMDI1MzAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0
YWRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpVc2VyTQogewogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVl
c3QpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVk
aWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHJlcXVlc3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDog
bnVsbHB0cjsKQEAgLTU2LDggKzU2LDggQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OgogICAgIH0KIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVx
dWVzdElEKCk7Ci0gICAgbV9pZFRvUmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCAmcmVxdWVzdCk7
Ci0gICAgbV9yZXF1ZXN0VG9JRE1hcC5hZGQoJnJlcXVlc3QsIHJlcXVlc3RJRCk7CisgICAgbV9p
ZFRvVXNlck1lZGlhUmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCAmcmVxdWVzdCk7CisgICAgbV91
c2VyTWVkaWFSZXF1ZXN0VG9JRE1hcC5hZGQoJnJlcXVlc3QsIHJlcXVlc3RJRCk7CiAKICAgICBX
ZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogICAg
IEFTU0VSVCh3ZWJGcmFtZSk7CkBAIC02NiwyMCArNjYsMjAgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OgogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJG
cmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCByZXF1ZXN0LmF1
ZGlvRGV2aWNlVUlEcygpLCByZXF1ZXN0LnZpZGVvRGV2aWNlVUlEcygpKSk7CiB9CiAKLXZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IG1fcmVxdWVzdFRvSURNYXAudGFrZSgmcmVxdWVzdCk7
CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gbV91c2VyTWVkaWFSZXF1ZXN0VG9JRE1hcC50YWtl
KCZyZXF1ZXN0KTsKICAgICBpZiAoIXJlcXVlc3RJRCkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
aWRUb1JlcXVlc3RNYXAucmVtb3ZlKHJlcXVlc3RJRCk7CisgICAgbV9pZFRvVXNlck1lZGlhUmVx
dWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWlu
dDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VV
SUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+IHJlcXVlc3QgPSBtX2lkVG9SZXF1ZXN0TWFwLnRha2UocmVxdWVzdElEKTsKKyAg
ICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IG1faWRUb1VzZXJNZWRpYVJlcXVl
c3RNYXAudGFrZShyZXF1ZXN0SUQpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fcmVxdWVzdFRvSURNYXAucmVtb3ZlKHJlcXVlc3QpOworICAgIG1fdXNlck1lZGlh
UmVxdWVzdFRvSURNYXAucmVtb3ZlKHJlcXVlc3QpOwogCiAgICAgaWYgKGFsbG93ZWQpCiAgICAg
ICAgIHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoYXVkaW9EZXZpY2VVSUQsIHZpZGVv
RGV2aWNlVUlEKTsKQEAgLTg3LDYgKzg3LDQ1IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjoKICAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7
CiB9CiAKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJl
cXVlc3QpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHJl
cXVlc3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsKKworICAgIGlmICghZnJhbWUpIHsK
KyAgICAgICAgcmVxdWVzdC5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihmYWxzZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJl
cXVlc3RJRCgpOworICAgIG1faWRUb1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja01hcC5hZGQocmVx
dWVzdElELCAmcmVxdWVzdCk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tUb0lETWFw
LmFkZCgmcmVxdWVzdCwgcmVxdWVzdElEKTsKKworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdl
YkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CisgICAgQVNTRVJUKHdlYkZyYW1lKTsKKwor
ICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSByZXF1ZXN0LnNlY3VyaXR5T3JpZ2luKCk7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpKSk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0KQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IG1fdXNlck1lZGlhUGVybWlzc2lvbkNoZWNrVG9JRE1hcC50YWtlKCZyZXF1ZXN0KTsKKyAgICBp
ZiAoIXJlcXVlc3RJRCkKKyAgICAgICAgcmV0dXJuOworICAgIG1faWRUb1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja01hcC5yZW1vdmUocmVxdWVzdElEKTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkKQoreworICAgIFJlZlB0cjxVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2s+IHJlcXVlc3QgPSBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tNYXAudGFrZShyZXF1ZXN0SUQpOworICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvbkNoZWNrVG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7
CisgICAgCisgICAgcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oYWxsb3dlZCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1
ZGUgPFdlYkNvcmUvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyTWVkaWFSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CkBAIC0zNCwxNiArMzUsMjIgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyIAogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAKLSAgICB2b2lkIHN0YXJ0UmVxdWVzdChXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7Ci0gICAgdm9pZCBjYW5jZWxSZXF1ZXN0KFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QmKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1p
c3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBT
dHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKKyAg
ICB2b2lkIHN0YXJ0VXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7
CisgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3QmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWlu
dDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VV
SUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOworCisgICAgdm9pZCBzdGFydFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKTsK
KyAgICB2b2lkIGNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2smKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkKTsKIAogcHJpdmF0ZToK
ICAgICBXZWJQYWdlJiBtX3BhZ2U7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdD4+IG1faWRUb1JlcXVlc3RNYXA7Ci0gICAgSGFzaE1hcDxS
ZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4sIHVpbnQ2NF90PiBtX3JlcXVlc3RUb0lE
TWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0Pj4gbV9pZFRvVXNlck1lZGlhUmVxdWVzdE1hcDsKKyAgICBIYXNoTWFwPFJlZlB0cjxXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgdWludDY0X3Q+IG1fdXNlck1lZGlhUmVxdWVzdFRvSURN
YXA7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrPj4gbV9pZFRvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrTWFwOworICAgIEhh
c2hNYXA8UmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4sIHVpbnQ2NF90
PiBtX3VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1RvSURNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAJKHJldmlzaW9uIDE5
Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNl
ck1lZGlhQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDI0IEBAIHZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0K
IAotdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoUmVmPFVz
ZXJNZWRpYVJlcXVlc3Q+JiYgcHJSZXF1ZXN0KQordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnJl
cXVlc3RVc2VyTWVkaWFBY2Nlc3MoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBV
c2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0ID0gcHJSZXF1ZXN0LmxlYWtSZWYoKTsKLSAgICBtX3Bh
Z2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuc3RhcnRSZXF1ZXN0KHJlcXVl
c3QpOworICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFy
dFVzZXJNZWRpYVJlcXVlc3QocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50
OjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmNhbmNl
bFJlcXVlc3QocmVxdWVzdCk7CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigpLmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QocmVxdWVzdCk7Cit9CisKK3ZvaWQgV2Vi
VXNlck1lZGlhQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oV2ViQ29yZTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0KQoreworICAgIG1fcGFnZS51c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zdGFydFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1
ZXN0KTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7
CisgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmNhbmNlbFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1ZXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCShyZXZpc2lvbiAxOTM3NzkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTQgQEAgcHVibGljOgogICAgIFdl
YlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBY2Nl
c3MoUmVmPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNj
ZXNzKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNl
bFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJy
aWRlOwogCisgICAgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oV2ViQ29yZTo6VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJikgb3ZlcnJp
ZGU7CisKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNjUsNiArMzM2NSwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVVc2VyTWVk
aWFQZXJtaXNzCiB7CiAgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwg
YXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsKIH0KKwordm9pZCBXZWJQYWdlOjpkaWRD
b21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9v
bCBhbGxvd2VkKQoreworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmRp
ZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKHVzZXJNZWRpYUlELCBhbGxvd2VkKTsK
K30KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEwNSw2ICsxMTA1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgV0tfRVhQT1JUIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKKyAgICBXS19FWFBPUlQgdm9p
ZCBkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgYm9vbCBhbGxvd2VkKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
ICMgTWVkaWFTdGVhbQogICAgIERpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgU3RyaW5nIGF1ZGlvRGV2aWNlVUlE
LCBTdHJpbmcgdmlkZW9EZXZpY2VVSUQpCisgICAgRGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCkKICNlbmRpZgogCiAg
ICAgIyBOb3RpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDM2IEBACisyMDE1LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gRXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBw
ZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZXRob2RzIGFuZCBoZWxwZXJzIGZvciBXSzEg
cGVybWlzc2lvbiBjaGVja2VyIGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQubW06CisgICAgICAgICh1c2VyTWVkaWFSZXF1ZXN0c01hcCk6CisgICAgICAgIChB
ZGRSZXF1ZXN0VG9SZXF1ZXN0TWFwKToKKyAgICAgICAgKFJlbW92ZVJlcXVlc3RGcm9tUmVxdWVz
dE1hcCk6CisgICAgICAgICh1c2VyTWVkaWFDaGVja01hcCk6CisgICAgICAgIChBZGRQZXJtaXNz
aW9uQ2hlY2tUb01hcCk6CisgICAgICAgIChSZW1vdmVQZXJtaXNzaW9uQ2hlY2tGcm9tTWFwKToK
KyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6V2ViVXNlck1lZGlhQ2xpZW50KToKKyAgICAg
ICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFVzZXJNZWRpYUFjY2Vzcyk6CisgICAgICAg
IChXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QpOgorICAg
ICAgICAoV2ViVXNlck1lZGlhQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24pOgorICAg
ICAgICAoV2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sp
OgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBhbGxvd10pOgorICAgICAg
ICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBkZW55XSk6CisgICAgICAgICgtW1dlYlVz
ZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBpbml0V2l0aFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjazpdKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyIGNh
bmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja10pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQ
b2xpY3lDaGVja2VyTGlzdGVuZXIgYWxsb3ddKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9s
aWN5Q2hlY2tlckxpc3RlbmVyIGRlbnldKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5
Q2hlY2tlckxpc3RlbmVyIGRlbnlPbmx5VGhpc1JlcXVlc3RdKToKKyAgICAgICAgKC1bV2ViVXNl
ck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyIHNob3VsZENsZWFyQ2FjaGVdKToKKyAgICAgICAg
KEFkZFJlcXVlc3RUb01hcCk6IERlbGV0ZWQuCisgICAgICAgIChSZW1vdmVSZXF1ZXN0RnJvbU1h
cCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oOgor
CiAyMDE1LTEyLTA4ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBG
b2xsb3ctdXAgdG86CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVXNl
ck1lZGlhQ2xpZW50OworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOwogY2xhc3MgVXNl
ck1lZGlhUmVxdWVzdDsKIH0KIApAQCAtNDQsOSArNDUsMTMgQEAgcHVibGljOgogICAgIH5XZWJV
c2VyTWVkaWFDbGllbnQoKTsKIAogICAgIC8vIFVzZXJNZWRpYUNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhQWNjZXNzUmVx
dWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFB
Y2Nlc3MoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2Fu
Y2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihXZWJDb3JlOjpVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2smKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDE5Mzc3
OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUv
QmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Vc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUmVxdWVzdC5o
PgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBA
IC01MCwyNCArNTIsNTEgQEAgLSAodm9pZCljYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0Owog
LSAodm9pZClkZW55OwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlVzZXJNZWRpYVBvbGljeUNoZWNr
ZXJMaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4geworICAg
IFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IF9yZXF1ZXN0OworfQorLSAoaWQpaW5p
dFdpdGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6KFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrPilyZXF1ZXN0OworLSAodm9pZCljYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2s7CistICh2b2lkKWRlbnk7CitAZW5kCisKIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4sIFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lcj4+IFVzZXJN
ZWRpYVJlcXVlc3RzTWFwOwogCiBzdGF0aWMgVXNlck1lZGlhUmVxdWVzdHNNYXAmIHVzZXJNZWRp
YVJlcXVlc3RzTWFwKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVXNl
ck1lZGlhUmVxdWVzdHNNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVzZXJNZWRpYVJlcXVlc3RzTWFwPiByZXF1ZXN0czsKICAgICByZXR1cm4gcmVxdWVzdHM7
CiB9CiAKLXN0YXRpYyB2b2lkIEFkZFJlcXVlc3RUb01hcChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1
ZXN0LCBSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyKQorc3Rh
dGljIHZvaWQgQWRkUmVxdWVzdFRvUmVxdWVzdE1hcChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0
LCBSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyKQogewogICAg
IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkuc2V0KHJlcXVlc3QsIGxpc3RlbmVyKTsKIH0KIAotc3Rh
dGljIHZvaWQgUmVtb3ZlUmVxdWVzdEZyb21NYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkK
K3N0YXRpYyB2b2lkIFJlbW92ZVJlcXVlc3RGcm9tUmVxdWVzdE1hcChVc2VyTWVkaWFSZXF1ZXN0
KiByZXF1ZXN0KQogewogICAgIHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkucmVtb3ZlKHJlcXVlc3Qp
OwogfQogCit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4s
IFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXI+PiBVc2VyTWVkaWFD
aGVja01hcDsKKworc3RhdGljIFVzZXJNZWRpYUNoZWNrTWFwJiB1c2VyTWVkaWFDaGVja01hcCgp
Cit7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVzZXJNZWRpYUNoZWNrTWFw
LCByZXF1ZXN0cywgKCkpOworICAgIHJldHVybiByZXF1ZXN0czsKK30KKworc3RhdGljIHZvaWQg
QWRkUGVybWlzc2lvbkNoZWNrVG9NYXAoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKiByZXF1ZXN0
LCBSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyPiBsaXN0ZW5lcikK
K3sKKyAgICB1c2VyTWVkaWFDaGVja01hcCgpLnNldChyZXF1ZXN0LCBsaXN0ZW5lcik7Cit9CisK
K3N0YXRpYyB2b2lkIFJlbW92ZVBlcm1pc3Npb25DaGVja0Zyb21NYXAoVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrKiByZXF1ZXN0KQoreworICAgIHVzZXJNZWRpYUNoZWNrTWFwKCkucmVtb3ZlKHJl
cXVlc3QpOworfQorCisKIFdlYlVzZXJNZWRpYUNsaWVudDo6V2ViVXNlck1lZGlhQ2xpZW50KFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTg4LDIyICsx
MTcsMjEgQEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIGRl
bGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFVzZXJNZWRp
YUFjY2VzcyhSZWY8VXNlck1lZGlhUmVxdWVzdD4mJiBwcnBSZXF1ZXN0KQordm9pZCBXZWJVc2Vy
TWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoVXNlck1lZGlhUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBVc2VyTWVk
aWFSZXF1ZXN0KiByZXF1ZXN0ID0gJnBycFJlcXVlc3QuZ2V0KCk7CiAgICAgU0VMIHNlbGVjdG9y
ID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUmVxdWVzdEZyb21P
cmlnaW46bGlzdGVuZXI6KTsKICAgICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3Bv
bmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKLSAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNj
ZXNzRGVuaWVkKCk7CisgICAgICAgIHJlcXVlc3QudXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciAq
bGlzdGVuZXIgPSBbW1dlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFVz
ZXJNZWRpYVJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdp
biA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9y
aWdpbjpyZXF1ZXN0LT5zZWN1cml0eU9yaWdpbigpXTsKKyAgICBXZWJVc2VyTWVkaWFQb2xpY3lM
aXN0ZW5lciAqbGlzdGVuZXIgPSBbW1dlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aFVzZXJNZWRpYVJlcXVlc3Q6JnJlcXVlc3RdOworICAgIFdlYlNlY3VyaXR5T3JpZ2lu
ICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3Jl
U2VjdXJpdHlPcmlnaW46cmVxdWVzdC5zZWN1cml0eU9yaWdpbigpXTsKIAogICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwgbGlzdGVuZXIpOwotICAgIEFk
ZFJlcXVlc3RUb01hcChyZXF1ZXN0LCBsaXN0ZW5lcik7CisgICAgQWRkUmVxdWVzdFRvUmVxdWVz
dE1hcCgmcmVxdWVzdCwgbGlzdGVuZXIpOwogCiAgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKICAg
ICBbbGlzdGVuZXIgcmVsZWFzZV07CkBAIC0xMjIsNiArMTUwLDM5IEBAIHZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWEKICAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOwog
fQogCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpjaGVj
a1BvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOmxpc3RlbmVyOik7CisgICAgaWYg
KCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7
CisgICAgICAgIHJlcXVlc3Quc2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oZmFsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3Rl
bmVyICpsaXN0ZW5lciA9IFtbV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazomcmVxdWVzdF07CisgICAgV2ViU2Vj
dXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0
V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpyZXF1ZXN0LnNlY3VyaXR5T3JpZ2luKCldOworCisg
ICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvciwgd2ViT3JpZ2luLCBsaXN0ZW5l
cik7CisgICAgQWRkUGVybWlzc2lvbkNoZWNrVG9NYXAoJnJlcXVlc3QsIGxpc3RlbmVyKTsKKwor
ICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisgICAgW2xpc3RlbmVyIHJlbGVhc2VdOworCisgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKworCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dDo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBVc2VyTWVkaWFDaGVja01hcCYgcmVxdWVzdHNN
YXAgPSB1c2VyTWVkaWFDaGVja01hcCgpOworICAgIFVzZXJNZWRpYUNoZWNrTWFwOjppdGVyYXRv
ciBpdCA9IHJlcXVlc3RzTWFwLmZpbmQoJnJlcXVlc3QpOworICAgIGlmIChpdCA9PSByZXF1ZXN0
c01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2l0LT52YWx1ZSBjYW5jZWxVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tdOworICAgIHJlcXVlc3RzTWFwLnJlbW92ZShpdCk7Cit9CiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lcgogCkBAIC0xNTUsNyAr
MjE2LDcgQEAgLSAodm9pZClhbGxvdwogICAgIAogICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nl
c3NHcmFudGVkKF9yZXF1ZXN0LT5hbGxvd2VkQXVkaW9EZXZpY2VVSUQoKSwgX3JlcXVlc3QtPmFs
bG93ZWRWaWRlb0RldmljZVVJRCgpKTsKIAotICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9yZXF1
ZXN0LmdldCgpKTsKKyAgICBSZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXAoX3JlcXVlc3QuZ2V0
KCkpOwogI2VuZGlmCiB9CiAKQEAgLTE2Niw3ICsyMjcsNyBAQCAtICh2b2lkKWRlbnkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsK
LSAgICBSZW1vdmVSZXF1ZXN0RnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7CisgICAgUmVtb3ZlUmVx
dWVzdEZyb21SZXF1ZXN0TWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xODQs
NCArMjQ1LDY3IEBAIC0gKEJPT0wpc2hvdWxkQ2xlYXJDYWNoZQogI2VuZGlmCiAKIEBlbmQKKwor
CitAaW1wbGVtZW50YXRpb24gV2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyCisKKy0g
KGlkKWluaXRXaXRoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOihQYXNzUmVmUHRyPFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjaz4pcmVxdWVzdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgcmV0dXJuIHNlbGY7CisjZW5kaWYKK30KKworLSAo
dm9pZCljYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sKK3sKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIF9yZXF1
ZXN0ID0gbnVsbHB0cjsKKyNlbmRpZgorCit9CisKKy0gKHZvaWQpYWxsb3cKK3sKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIF9yZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbih0cnVlKTsKKyAgICBSZW1v
dmVQZXJtaXNzaW9uQ2hlY2tGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgorfQorCist
ICh2b2lkKWRlbnkKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghX3JlcXVl
c3QpCisgICAgICAgIHJldHVybjsKKworICAgIF9yZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVy
bWlzc2lvbih0cnVlKTsKKyAgICBSZW1vdmVQZXJtaXNzaW9uQ2hlY2tGcm9tTWFwKF9yZXF1ZXN0
LmdldCgpKTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZClkZW55T25s
eVRoaXNSZXF1ZXN0Cit7Cit9CisKKy0gKEJPT0wpc2hvdWxkQ2xlYXJDYWNoZQoreworICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjQ1Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwor
QGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDE5
Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw3IEBAIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYlVJRGVsZWdhdGVQcml2YXQKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luIGxpc3RlbmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4p
bGlzdGVuZXI7CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGxpc3RlbmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXI7Cist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGNoZWNrUG9saWN5Rm9yVXNlck1lZGlh
UmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGxpc3RlbmVyOihp
ZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXI7CiAKIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBlbGVtZW50RGlkRm9jdXNOb2RlOihET01Ob2RlICopbm9kZTsK
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBlbGVtZW50RGlkQmx1ck5vZGU6KERP
TU5vZGUgKilub2RlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkzODcxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTUtMTItMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBFeHBvc2UgbWVkaWEg
Y2FwdHVyZSBkZXZpY2VzIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgdG8gV2ViQ29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMDg3CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgdXNlciBtZWRpYSBwZXJtaXNzaW9uIGNoZWNrZXIg
cGFnZSBVSSBjbGllbnQgbWV0aG9kLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKFdUUjo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6IEFkZCBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
cmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBDbGVhciBtX3VzZXJNZWRpYU9y
aWdpblBlcm1pc3Npb25zLgorICAgICAgICAoV1RSOjpvcmlnaW5Vc2VyVmlzaWJsZU5hbWUpOiBO
ZXcsIGNyZWF0ZSBhIHN0cmluZyBmb3IgdGhlIG9yaWdpbi4KKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKTogU2V0
IHRoZSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZgorICAgICAgICAgIGFjY29yZGluZyB0
byB0aGUgc3RhdGUgb2YgdGhlIG9yaWdpbiBwZXJtaXNzaW9uIG1hcC4KKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmhhbmRsZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KTogUmVtZW1i
ZXIgYm90aCB0aGUgb3JpZ2luIGFuZCB0aGUKKyAgICAgICAgICByZXF1ZXN0IHNvIHdlIGNhbiB1
cGRhdGUgdGhlIG9yaWdpbiBwZXJtaXNzaW9uIG1hcCBpbiBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUp
OiBVcGRhdGUgdGhlCisgICAgICAgICAgb3JpZ2luIHBlcm1pc3Npb24gbWFwLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKwogMjAxNS0xMi0wOSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnVuIGF0bGVhc3Qgb25l
IHNpbXVsYXRvciBldmVuIGlmIG1heCBwcm9jZXNzIGxpbWl0IGlzIGxvdwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5S
ZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPGN0eXBlLmg+
CkBAIC0yMDEsOSArMjAzLDE0IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGUKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFuZGxlR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChwZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJl
ZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3N0YXRpYyB2b2lk
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
Ci0gICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhbmRsZVVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KHBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuaGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBwZXJtaXNzaW9u
UmVxdWVzdCk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9y
aWdpbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBX
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiBjaGVja1JlcXVlc3QsIGNvbnN0IHZvaWQqKQor
eworICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5oYW5kbGVDaGVja09mVXNlck1lZGlh
UGVybWlzc2lvbkZvck9yaWdpbihvcmlnaW4sIGNoZWNrUmVxdWVzdCk7CiB9CiAKIFdLUGFnZVJl
ZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiBvbGRQYWdlLCBXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBu
YXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQpAQCAtMjc3LDcgKzI4NCw4IEBAIFdLUGFnZVJlZiBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAg
ICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENv
bmZpcm0KLSAgICAgICAgMCAgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICAwLCAvLyBy
dW5KYXZhU2NyaXB0UHJvbXB0CisgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9y
aWdpbiwKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQ
YWdlVUlDbGllbnQuYmFzZSk7CiAgICAgCkBAIC01NDAsNiArNTQ4LDcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcAogICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0
QWxlcnQKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KICAgICAgICAgMCwgLy8g
cnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4sCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+
cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJhc2UpOwogCkBAIC03NDQsNiArNzUzLDcgQEAgYm9vbCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdAogCiAgICAgLy8gUmVzZXQgVXNlck1l
ZGlhIHBlcm1pc3Npb25zLgogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzLmNsZWFy
KCk7CisgICAgbV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9ucyA9IG51bGxwdHI7CiAgICAgbV9p
c1VzZXJNZWRpYVBlcm1pc3Npb25TZXQgPSBmYWxzZTsKICAgICBtX2lzVXNlck1lZGlhUGVybWlz
c2lvbkFsbG93ZWQgPSBmYWxzZTsKIApAQCAtMTY0Miw5ICsxNjUyLDM4IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnNldFVzZXJNZWRpYVBlcm1pc3MKICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6aGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCkKK3N0YXRpYyBXS1N0cmluZ1Jl
ZiBvcmlnaW5Vc2VyVmlzaWJsZU5hbWUoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit7Cisg
ICAgc3RkOjpzdHJpbmcgaG9zdCA9IHRvU1REKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlI
b3N0KG9yaWdpbikpKS5jX3N0cigpOworICAgIHN0ZDo6c3RyaW5nIHByb3RvY29sID0gdG9TVEQo
YWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKS5jX3N0cigpOwor
ICAgIHVuc2lnbmVkIHNob3J0IHBvcnQgPSBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChvcmlnaW4p
OworCisgICAgU3RyaW5nIHVzZXJWaXNpYmxlTmFtZTsKKyAgICBpZiAocG9ydCkKKyAgICAgICAg
dXNlclZpc2libGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIiVzOi8vJXM6JWQiLCBwcm90b2NvbC5j
X3N0cigpLCBob3N0LmNfc3RyKCksIHBvcnQpOworICAgIGVsc2UKKyAgICAgICAgdXNlclZpc2li
bGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIiVzOi8vJXMiLCBwcm90b2NvbC5jX3N0cigpLCBob3N0
LmNfc3RyKCkpOworCisgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVz
ZXJWaXNpYmxlTmFtZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
aGFuZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4sIGNvbnN0IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmJiBjaGVja1Jl
cXVlc3QpCit7CisgICAgYm9vbCBhbGxvd2VkID0gZmFsc2U7CisKKyAgICBpZiAobV91c2VyTWVk
aWFPcmlnaW5QZXJtaXNzaW9ucykgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
b3JpZ2luU3RyaW5nID0gb3JpZ2luVXNlclZpc2libGVOYW1lKG9yaWdpbik7CisgICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtX3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zLmdldCgpLCBvcmlnaW5T
dHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgaWYgKFdLR2V0VHlwZUlEKHZhbHVlKSA9PSBXS0Jvb2xl
YW5HZXRUeXBlSUQoKSkKKyAgICAgICAgICAgIGFsbG93ZWQgPSBXS0Jvb2xlYW5HZXRWYWx1ZSh2
YWx1ZSk7CisgICAgfQorCisgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tTZXRIYXNQZXJz
aXN0ZW50UGVybWlzc2lvbihjaGVja1JlcXVlc3QsIGFsbG93ZWQpOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3VyaXR5T3Jp
Z2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0KQog
ewotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzLmFwcGVuZCh1c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKG9yaWdpbiwgcmVxdWVzdCkpOwogICAgIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0SWZQb3NzaWJsZSgpOwogfQogCkBAIC0xNjUzLDkgKzE2
OTIsMTcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgIGlm
ICghbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25TZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAoYXV0byYgcmVxdWVzdCA6IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKSB7Ci0gICAg
ICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpIHsKKyAgICAgICAgYXV0
byBvcmlnaW4gPSBwYWlyLmZpcnN0LmdldCgpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBwYWly
LnNlY29uZC5nZXQoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gYXVkaW9EZXZp
Y2VVSURzID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlEcyhyZXF1
ZXN0KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gdmlkZW9EZXZpY2VVSURzID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhyZXF1ZXN0KTsKKwor
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gb3JpZ2luU3RyaW5nID0gYWRvcHRXSyhv
cmlnaW5Vc2VyVmlzaWJsZU5hbWUob3JpZ2luKSk7CisgICAgICAgIGlmICghbV91c2VyTWVkaWFP
cmlnaW5QZXJtaXNzaW9ucykKKyAgICAgICAgICAgIG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lv
bnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLQm9vbGVhblJlZj4gYWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1f
aXNVc2VyTWVkaWFQZXJtaXNzaW9uQWxsb3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMuZ2V0KCksIG9yaWdpblN0cmluZy5nZXQo
KSwgYWxsb3dlZC5nZXQoKSk7CiAKICAgICAgICAgaWYgKG1faXNVc2VyTWVkaWFQZXJtaXNzaW9u
QWxsb3dlZCAmJiAoV0tBcnJheUdldFNpemUodmlkZW9EZXZpY2VVSURzLmdldCgpKSB8fCBXS0Fy
cmF5R2V0U2l6ZShhdWRpb0RldmljZVVJRHMuZ2V0KCkpKSkgewogICAgICAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHZpZGVvRGV2aWNlVUlEOwpAQCAtMTY3MCwxMCArMTcxNywxMCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiIik7CiAKLSAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhyZXF1ZXN0LmdldCgpLCBhdWRpb0RldmljZVVJRC5nZXQoKSwgdmlkZW9EZXZpY2VV
SUQuZ2V0KCkpOworICAgICAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KHJlcXVlc3QsIGF1ZGlvRGV2aWNlVUlELmdldCgpLCB2aWRlb0RldmljZVVJRC5nZXQoKSk7CiAK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
RGVueShyZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3REZW55KHJlcXVlc3QpOwogICAgIH0KICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0cy5jbGVhcigpOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMTkzNzc5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogT0JK
Q19DTEFTUyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwpAQCAtOTUsNyArOTYsOCBAQCBwdWJsaWM6
CiAKICAgICAvLyBNZWRpYVN0cmVhbS4KICAgICB2b2lkIHNldFVzZXJNZWRpYVBlcm1pc3Npb24o
Ym9vbCk7Ci0gICAgdm9pZCBoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKKyAgICB2b2lkIGhhbmRsZVVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RSZWYpOworICAgIHZvaWQgaGFuZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25Gb3JP
cmlnaW4oV0tTZWN1cml0eU9yaWdpblJlZiwgY29uc3QgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tSZWYmKTsKIAogICAgIC8vIFBvbGljeSBkZWxlZ2F0ZS4KICAgICB2b2lkIHNldEN1c3RvbVBv
bGljeURlbGVnYXRlKGJvb2wgZW5hYmxlZCwgYm9vbCBwZXJtaXNzaXZlKTsKQEAgLTI4Miw3ICsy
ODQsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7
CiAgICAgYm9vbCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uQWxsb3dlZDsKIAotICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmPj4gbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHM7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFy
eVJlZj4gbV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9uczsKKworICAgIHR5cGVkZWYgVmVjdG9y
PHN0ZDo6cGFpcjxXS1JldGFpblB0cjxXS1NlY3VyaXR5T3JpZ2luUmVmPiwgV0tSZXRhaW5QdHI8
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZj4+PiBQZXJtaXNzaW9uUmVxdWVzdExpc3Q7
CisgICAgUGVybWlzc2lvblJlcXVlc3RMaXN0IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Rz
OworCiAgICAgYm9vbCBtX2lzVXNlck1lZGlhUGVybWlzc2lvblNldDsKICAgICBib29sIG1faXNV
c2VyTWVkaWFQZXJtaXNzaW9uQWxsb3dlZDsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkzNzc5KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTUtMTItMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01lZGlhU3RyZWFtXSBFeHBvc2UgbWVkaWEgY2FwdHVyZSBkZXZpY2VzIHBlcnNpc3Rl
bnQgcGVybWlzc2lvbnMgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJh
dGVEZXZpY2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWw6CisKIDIwMTUtMTItMDggIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgaW5zZXJ0IHBvc2l0aW9uZWQg
cmVuZGVyZXJzIHRvIG11bHRpcGxlIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2Vz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTkz
Nzc5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVy
YXRlRGV2aWNlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsMTYgKzYsMzggQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdAogUEFTUyBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KIAor
CisqKiogQ2FsbGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aGVuIHBlcnNpc3Rl
bnQgYWNjZXNzIEhBUyBOT1QgYmVlbiBncmFudGVkCisKK1BBU1MgY2FwdHVyZURldmljZXMubGVu
Z3RoIGlzIG5vbi16ZXJvLgorCitQQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4K
K1BBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURl
dmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyAiIgor
UEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCisKK1BBU1MgY2FwdHVyZURl
dmljZS5raW5kIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5v
bi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0
dXJlRGV2aWNlLmxhYmVsIGlzICIiCitQQVNTIGNhcHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24t
bnVsbC4KKworCisqKiogQ2FsbGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aGVu
IHBlcnNpc3RlbnQgYWNjZXNzIEhBUyBiZWVuIGdyYW50ZWQKKwogUEFTUyBjYXB0dXJlRGV2aWNl
cy5sZW5ndGggaXMgbm9uLXplcm8uCiAKIFBBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1u
dWxsLgogUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsLgogUEFTUyBjYXB0
dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlz
IG5vdCAiIgogUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCiAKIFBBU1Mg
Y2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgogUEFTUyBjYXB0dXJlRGV2aWNlLmRldmlj
ZUlkIGlzIG5vbi1udWxsLgogUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgor
UEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vdCAiIgogUEFTUyBjYXB0dXJlRGV2aWNlLmdy
b3VwSWQgaXMgbm9uLW51bGwuCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURl
dmljZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWwJKHJldmlzaW9uIDE5Mzc3OSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDcgQEAKICAgICAgICAgPHNjcmlwdD4KICAg
ICAgICAgICAgIHZhciBjYXB0dXJlRGV2aWNlczsKICAgICAgICAgICAgIHZhciBjYXB0dXJlRGV2
aWNlOworICAgICAgICAgICAgdmFyIGhhdmVQZXJtaXNzaW9uOwogCiAgICAgICAgICAgICBkZXNj
cmlwdGlvbigiVGVzdHMgTWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKSIpOwogICAgICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwpAQCAtMTcsMjUgKzE4LDU0IEBACiAg
ICAgICAgICAgICBzaG91bGRCZVR5cGUoIm5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRl
RGV2aWNlcyIsICJGdW5jdGlvbiIpOwogICAgICAgICAgICAgZGVidWcoIiIpOwogCi0gICAgICAg
ICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKQotICAgICAgICAg
ICAgICAgIC50aGVuKGZ1bmN0aW9uKGRldmljZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgY2Fw
dHVyZURldmljZXMgPSBkZXZpY2VzOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vblpl
cm8oImNhcHR1cmVEZXZpY2VzLmxlbmd0aCIpOwotICAgICAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgICAgICAgICAgICAgIGRldmljZXMuZm9yRWFjaChmdW5jdGlvbihkZXZpY2Up
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2UgPSBkZXZpY2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVEZXZpY2Uua2luZCIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNl
LmRldmljZUlkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNh
cHR1cmVEZXZpY2UubGFiZWwiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9u
TnVsbCgiY2FwdHVyZURldmljZS5ncm91cElkIik7CisgICAgICAgICAgICBmdW5jdGlvbiBlbnVt
ZXJhdGUobmV4dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgPGJyPioq
KiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdoZW4gcGVyc2lzdGVudCBh
Y2Nlc3MgSEFTICR7aGF2ZVBlcm1pc3Npb24gPyAiIiA6ICJOT1QgIn1iZWVuIGdyYW50ZWQ8YnI+
YCk7CisgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZp
Y2VzKCkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oZGV2aWNlcykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZURldmljZXMgPSBkZXZpY2VzOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJjYXB0dXJlRGV2aWNlcy5sZW5ndGgiKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZXMuZm9yRWFjaChmdW5jdGlvbihkZXZpY2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXB0dXJlRGV2aWNlID0gZGV2aWNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5raW5kIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmRldmljZUlk
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJl
RGV2aWNlLmxhYmVsIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVQZXJt
aXNzaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RCZUVxdWFs
VG9TdHJpbmcoImNhcHR1cmVEZXZpY2UubGFiZWwiLCAiIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVt
cHR5U3RyaW5nKCJjYXB0dXJlRGV2aWNlLmxhYmVsIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmdyb3VwSWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSkKKyAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZChlcnIubmFtZSArICI6ICIgKyBlcnIubWVzc2FnZSk7
CiAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBncmFudFBlcm1pc3Npb24oKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAudGhlbihmdW5jdGlvbihzdHJlYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YXZlUGVybWlzc2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVy
YXRlKG51bGwpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAg
ICAgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKCkgZmFpbGVkIHdpdGggJHtlcnIubmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAg
fSkKLSAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoZXJyLm5hbWUgKyAiOiAiICsgZXJyLm1lc3NhZ2UpOwotICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSBmYWxzZTsKKyAgICAg
ICAgICAgIGVudW1lcmF0ZShncmFudFBlcm1pc3Npb24pOwogCiAgICAgICAgICAgICB3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267121</attachid>
            <date>2015-12-10 13:02:08 -0800</date>
            <delta_ts>2015-12-10 13:02:08 -0800</delta_ts>
            <desc>Another updated patch for landing.</desc>
            <filename>devices_access_patch_9.txt</filename>
            <type>text/plain</type>
            <size>115343</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTEyLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
RXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYW4gZXhpc3RpbmcgdGVzdCB3YXMgdXBkYXRlZCB0byB0ZXN0IHRoZSBjaGFuZ2Uu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5jcHAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6fk1lZGlhRGV2
aWNlc1JlcXVlc3QpOiBDbGVhciB0aGUgcGVybWlzc2lvbiBjaGVja2VyIGNsaWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0KTogQ3JlYXRl
IGEgcGVybWlzc2lvbiBjaGVja2VyIGFuZCBzdGFydCBpdCBydW5uaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVDaGVjayk6IFN0YXJ0IHRoZSBt
ZWRpYSBzb3VyY2UgY2hlY2tlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVl
c3Q6OmRpZENvbXBsZXRlUmVxdWVzdCk6IE9ubHkgaW5jbHVkZSBhIHRyYWNrJ3MgbGFiZWwgaWYg
dGhlCisgICAgICAgICAgcGFnZSBoYXMgcGVybWlzc2lvbiB0byB1c2UgYSBjYXB0dXJlIGRldmlj
ZS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaDoK
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6IEluY2x1
ZGUgcHJvdG90eXBlcyBmb3IgcGVybWlzc2lvbiBjaGVja2VyLgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhQ2xpZW50Ojp+VXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAgCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwOiBS
ZW1vdmVkLCBub3QgbG9uZ2VyIHVzZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaDoKKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhQ29udHJvbGxlcjo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKTogTmV3LgorICAgICAgICAo
V2ViQ29yZTo6VXNlck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjp+VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2VjdXJpdHlPcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpjb250ZXh0RGVz
dHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzZXREZXZp
Y2VBY2Nlc3NNb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja0NsaWVudDo6flVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnNldENsaWVudCk6CisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwfC5oCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1VzZXJNZWRp
YUNsaWVudE1vY2suaDogUmVtb3ZlZCwgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisKIDIwMTUtMTItMDggIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodCBjbGVhbnVwIGluIFRleHRQYWludGVyLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NTIsNyArOTUyLDYgQEAgc2V0
KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwCi0gICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcApAQCAtOTc1LDYgKzk3NCw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQu
Y3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwCiAKICAgICBNb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGls
cy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHJl
dmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgTWVk
aWFEZXZpY2VzUmVxdWVzdDo6TWVkaWFEZXZpY2VzUmVxdWVzdAogCiBNZWRpYURldmljZXNSZXF1
ZXN0Ojp+TWVkaWFEZXZpY2VzUmVxdWVzdCgpCiB7CisgICAgaWYgKG1fcGVybWlzc2lvbkNoZWNr
KQorICAgICAgICBtX3Blcm1pc3Npb25DaGVjay0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCiBT
ZWN1cml0eU9yaWdpbiogTWVkaWFEZXZpY2VzUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25z
dApAQCAtNjUsMjggKzY3LDQ2IEBAIFNlY3VyaXR5T3JpZ2luKiBNZWRpYURldmljZXNSZXF1ZXN0
OjpzZWMKIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAg
ICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICBp
ZiAobV9wZXJtaXNzaW9uQ2hlY2spIHsKKyAgICAgICAgbV9wZXJtaXNzaW9uQ2hlY2stPnNldENs
aWVudChudWxscHRyKTsKKyAgICAgICAgbV9wZXJtaXNzaW9uQ2hlY2sgPSBudWxscHRyOworICAg
IH0KICAgICBtX3Byb3RlY3RvciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFEZXZpY2VzUmVx
dWVzdDo6c3RhcnQoKQogewogICAgIG1fcHJvdGVjdG9yID0gdGhpczsKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyh0
aGlzKTsKKyAgICBtX3Blcm1pc3Npb25DaGVjayA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6
Y3JlYXRlKCpkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgKnRo
aXMpOworICAgIG1fcGVybWlzc2lvbkNoZWNrLT5zdGFydCgpOworfQorCit2b2lkIE1lZGlhRGV2
aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlQ2hlY2soYm9vbCBjYW5BY2Nlc3MpCit7CisgICAgbV9w
ZXJtaXNzaW9uQ2hlY2stPnNldENsaWVudChudWxscHRyKTsKKyAgICBtX3Blcm1pc3Npb25DaGVj
ayA9IG51bGxwdHI7CisKKyAgICBtX2hhc1VzZXJNZWRpYVBlcm1pc3Npb24gPSBjYW5BY2Nlc3M7
CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMp
OworICAgIH0pOwogfQogCiB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUmVx
dWVzdChjb25zdCBUcmFja1NvdXJjZUluZm9WZWN0b3ImIGNhcHR1cmVkRGV2aWNlcykKIHsKLSAg
ICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIW1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgeworICAgICAgICBtX3Byb3RlY3RvciA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IGRldmlj
ZUluZm87CiAgICAgZm9yIChhdXRvIGRldmljZSA6IGNhcHR1cmVkRGV2aWNlcykgewogICAgICAg
ICBUcmFja1NvdXJjZUluZm8qIHRyYWNrSW5mbyA9IGRldmljZS5nZXQoKTsKICAgICAgICAgU3Ry
aW5nIGRldmljZVR5cGUgPSB0cmFja0luZm8tPmtpbmQoKSA9PSBUcmFja1NvdXJjZUluZm86OlNv
dXJjZUtpbmQ6OkF1ZGlvID8gTWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSgpIDogTWVk
aWFEZXZpY2VJbmZvOjp2aWRlb0lucHV0VHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBsYWJl
bCBpcyBzdXBwb3NlZCB0byBiZSBlbXB0eSB1bmxlc3MgYSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8g
YW4gYWN0aXZlIE1lZGlhU3RyZWFtVHJhY2sgaW4gdGhlIGN1cnJlbnQgYnJvd3NpbmcgY29udGV4
dCwgb3IKLSAgICAgICAgLy8gcGVyc2lzdGVudCBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGVzZSBs
b2NhbCBkZXZpY2VzIGhhcyBiZWVuIGdyYW50ZWQgdG8gdGhlIHBhZ2UncyBvcmlnaW4uCi0gICAg
ICAgIGRldmljZUluZm8uYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgdHJhY2tJbmZvLT5sYWJlbCgpLCB0cmFja0luZm8tPmlkKCksIHRyYWNr
SW5mby0+Z3JvdXBJZCgpLCBkZXZpY2VUeXBlKSk7CisgICAgICAgIEF0b21pY1N0cmluZyBsYWJl
bCA9IG1faGFzVXNlck1lZGlhUGVybWlzc2lvbiA/IHRyYWNrSW5mby0+bGFiZWwoKSA6IGVtcHR5
QXRvbTsKKyAgICAgICAgZGV2aWNlSW5mby5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVhdGUo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBsYWJlbCwgdHJhY2tJbmZvLT5pZCgpLCB0cmFja0lu
Zm8tPmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOwogICAgIH0KIAogICAgIFJlZlB0cjxNZWRpYURl
dmljZXNSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgJ
KHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMywxMCBAQAog
I2luY2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDcgKzQ3LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIE1lZGlhRGV2aWNl
c1JlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFEZXZpY2VzUmVx
dWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQsIHB1Ymxp
YyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYURldmljZXNSZXF1
ZXN0PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRpYURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9t
aXNlJiYsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNjMsMTAgKzY1LDE2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVJlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmZvVmVjdG9yJikg
ZmluYWw7CiAKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgotICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisKKyAgICAvLyBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tDbGllbnQKKyAgICB2b2lkIGRpZENvbXBsZXRlQ2hlY2soYm9vbCkgb3ZlcnJpZGUgZmlu
YWw7CiAKICAgICBNZWRpYURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9taXNlIG1fcHJvbWlz
ZTsKICAgICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gbV9wcm90ZWN0b3I7CisgICAgUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaz4gbV9wZXJtaXNzaW9uQ2hlY2s7CisKKyAgICBi
b29sIG1faGFzVXNlck1lZGlhUGVybWlzc2lvbiB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Qu
Y3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0LmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNvdXJj
ZUluZm8uaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Q+IE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjaz4gY2FsbGJhY2spCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
KGNvbnRleHQsIGNhbGxiYWNrKSk7Ci19Ci0KLU1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dDo6TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjaz4gY2Fs
bGJhY2spCi0gICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotewotICAgIG1fb3JpZ2luID0gY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUmVxdWVzdChjb25zdCBUcmFja1NvdXJj
ZUluZm9WZWN0b3ImIHJlcXVlc3RTb3VyY2VJbmZvcykKLXsKLSAgICBBU1NFUlQobV9jYWxsYmFj
ayk7Ci0KLSAgICBmb3IgKGF1dG8mIGluZm8gOiByZXF1ZXN0U291cmNlSW5mb3MpCi0gICAgICAg
IG1fc291cmNlSW5mb3MuYXBwZW5kKFNvdXJjZUluZm86OmNyZWF0ZShpbmZvKSk7Ci0KLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s+JiBjYWxsYmFjayA9IHByb3RlY3RlZFRo
aXMtPm1fY2FsbGJhY2s7Ci0gICAgICAgIEFTU0VSVChjYWxsYmFjayk7Ci0KLSAgICAgICAgY2Fs
bGJhY2stPmhhbmRsZUV2ZW50KHByb3RlY3RlZFRoaXMtPm1fc291cmNlSW5mb3MpOwotICAgICAg
ICBjYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmgJ
KHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0X2gKLSNkZWZpbmUgTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0X2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
LSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKLSNpbmNs
dWRlICJTb3VyY2VJbmZvLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjazsKLWNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQgewotcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdCgpIHsgfQotCi1wcml2YXRlOgotICAgIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291
cmNlc0NhbGxiYWNrPik7Ci0KLSAgICAvLyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RD
bGllbnQKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcmVxdWVzdE9yaWdpbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fb3JpZ2luOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
UmVxdWVzdChjb25zdCBUcmFja1NvdXJjZUluZm9WZWN0b3ImKSBvdmVycmlkZTsKLQotICAgIFN0
cmluZyBtX29yaWdpbjsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFj
az4gbV9jYWxsYmFjazsKLSAgICBWZWN0b3I8UmVmUHRyPFNvdXJjZUluZm8+PiBtX3NvdXJjZUlu
Zm9zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0X2gKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgJKHJldmlzaW9u
IDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICszOCwxOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBQYWdlOworY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOwog
Y2xhc3MgVXNlck1lZGlhUmVxdWVzdDsKIAogY2xhc3MgVXNlck1lZGlhQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoVXNlck1lZGlhUmVxdWVz
dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChV
c2VyTWVkaWFSZXF1ZXN0JikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNoZWNrVXNlck1lZGlh
UGVybWlzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2smKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFDbGllbnQoKSB7
IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
aCIKICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQwLDkgKzQxLDEyIEBAIHB1YmxpYzoKIAogICAgIFVzZXJNZWRpYUNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRp
YUFjY2VzcyhSZWY8VXNlck1lZGlhUmVxdWVzdD4mJik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1l
ZGlhQWNjZXNzKFVzZXJNZWRpYVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbFVzZXJNZWRpYUFj
Y2Vzc1JlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYpOwogCisgICAgdm9pZCBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb24oVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJik7CisgICAgdm9pZCBjYW5jZWxV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJik7CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAg
ICBzdGF0aWMgVXNlck1lZGlhQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxVc2VyTWVkaWFDb250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShw
YWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KIApAQCAtNTAsOSArNTQsOSBAQCBwcml2YXRlOgog
ICAgIFVzZXJNZWRpYUNsaWVudCogbV9jbGllbnQ7CiB9OwogCi1pbmxpbmUgdm9pZCBVc2VyTWVk
aWFDb250cm9sbGVyOjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVkaWFSZXF1ZXN0
PiYmIHJlcXVlc3QpCitpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpyZXF1ZXN0VXNl
ck1lZGlhQWNjZXNzKFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9jbGllbnQt
PnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MoV1RGOjptb3ZlKHJlcXVlc3QpKTsKKyAgICBtX2NsaWVu
dC0+cmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhyZXF1ZXN0KTsKIH0KIAogaW5saW5lIHZvaWQgVXNl
ck1lZGlhQ29udHJvbGxlcjo6Y2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChVc2VyTWVkaWFS
ZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNjAsNiArNjQsMTYgQEAgaW5saW5lIHZvaWQgVXNlck1lZGlh
Q29udHJvbGxlcjo6Y2FuY2VsVQogICAgIG1fY2xpZW50LT5jYW5jZWxVc2VyTWVkaWFBY2Nlc3NS
ZXF1ZXN0KHJlcXVlc3QpOwogfQogCitpbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpj
aGVja1VzZXJNZWRpYVBlcm1pc3Npb24oVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0
KQoreworICAgIG1fY2xpZW50LT5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb24ocmVxdWVzdCk7Cit9
CisKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNhbmNlbFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjayhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7CisgICAgbV9j
bGllbnQtPmNhbmNlbFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhyZXF1ZXN0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNNZWRpYURldmljZUluZm8uaCIKKyNpbmNsdWRl
ICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8VXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrPiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCYgY2xpZW50KQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhkb2N1bWVudCwgY2xpZW50
KSk7Cit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6VXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja0NsaWVudCYgY2xpZW50KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNv
bnRleHQpCisgICAgLCBtX2NsaWVudCgmY2xpZW50KQoreworfQorCitVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2s6On5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soKQoreworfQorCitTZWN1cml0eU9y
aWdpbiogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7
CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKworICAgIHJldHVybiBudWxs
cHRyOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6Y29udGV4dERlc3Ryb3ll
ZCgpCit7CisgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQo
KTsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6OnN0YXJ0KCkKK3sKKyAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIGF1dG8mIGRvY3VtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIFVzZXJN
ZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRv
Y3VtZW50LnBhZ2UoKSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBjb250cm9sbGVyLT5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oKnRoaXMpOworfQorCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazo6c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24o
Ym9vbCBtb2RlKQoreworICAgIG1faGFzUGVyc2lzdGVudFBlcm1pc3Npb24gPSBtb2RlOworCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVDaGVjayhtX2hh
c1BlcnNpc3RlbnRQZXJtaXNzaW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lm
bmRlZiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKwor
Y2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZUNoZWNrKGJvb2wpID0gMDsKK307CisKK2NsYXNzIFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayBmaW5hbCA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwg
cHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IGNyZWF0ZShEb2N1bWVudCYs
IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0NsaWVudCYpOworCisgICAgdmlydHVhbCB+VXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrKCk7CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzZXRD
bGllbnQoVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQg
PSBjbGllbnQ7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SGFzUGVyc2lzdGVudFBl
cm1pc3Npb24oYm9vbCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0Ns
aWVudCYpOworCisgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKKyAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZpbmFsOworCisgICAgVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrQ2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1faGFzUGVyc2lzdGVu
dFBlcm1pc3Npb24geyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2
ICsxMzAsOCBAQAogCQkwNzI3N0U1MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRy
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3
N0U0NzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrLmggKi87IH07CiAJCTA3
Mjc3RTU0MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI3N0U0ODE3RDAx
OENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzI3
N0U1NTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjc3RTQ5MTdEMDE4Q0Mw
MDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oICovOyB9OworCQkwNzI5N0ZBNzFD
MTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkE1MUMxODgxQzUwMDNG
MDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07CisJCTA3Mjk3RkE4MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Mjk3RkE2MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzJBRTFFNTE4M0MwNzQxMDAwQTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMURGMTgzQzA3NDEw
MDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovOyB9OwogCQkwNzJBRTFFNjE4M0MwNzQx
MDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBRTFFMDE4M0MwNzQxMDAwQTU5ODgg
LyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gKi87IH07CiAJCTA3MkFFMUU4MTgzQzA3
NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyQUUxRTIxODNDMDc0MTAwMEE1OTg4
IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi87IH07CkBAIC0xNTQsNyArMTU2LDcg
QEAKIAkJMDczNzk0RkQxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0RjcxOUY1
ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suY3BwICovOyB9OwogCQkwNzM3OTRGRTE5
RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0RjgxOUY1ODY0RTAwRTVBMDQ1IC8qIFJU
Q05vdGlmaWVyc01vY2suaCAqLzsgfTsKIAkJMDczOTRFQzgxQkFCMkNDRDAwQkU5OUNEIC8qIE1l
ZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczOTRFQzcxQkFCMkNDRDAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVl
c3QuY3BwICovOyB9OwotCQkwNzM5NEVDQTFCQUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2Vz
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLzsgfTsK
KwkJMDczOTRFQ0ExQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzk0RUM5MUJBQjJD
RDcwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNDAxN0QxN0UwMTAwMkJENDMxIC8q
IEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYS5jcHAgKi87IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmln
YXRvclVzZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUz
NDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzNDIxN0QxN0U3
QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwICovOyB9OwpAQCAtMTY3
LDggKzE2OSw2IEBACiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1
Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CiAJCTA3
NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKIAkJMDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi87IH07Ci0JCTA3NjMwNkQyMTdFMTQ3
OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2Q0UxN0UxNDc4RDAw
NUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgKi87IH07Ci0JCTA3
NjMwNkQzMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkNG
MTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCAqLzsg
fTsKIAkJMDc2MzA2RDcxN0UxNDlDRjAwNUE3QzRFIC8qIFNvdXJjZUluZm8uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2RDQxN0UxNDlDRjAw
NUE3QzRFIC8qIFNvdXJjZUluZm8uY3BwICovOyB9OwogCQkwNzYzMDZEODE3RTE0OUQwMDA1QTdD
NEUgLyogU291cmNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2MzA2RDUxN0UxNDlDRjAwNUE3QzRFIC8qIFNvdXJjZUluZm8uaCAqLzsgfTsK
IAkJMDc2MzA2REMxN0UxNUZCMDAwNUE3QzRFIC8qIEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzYzMDZEQTE3RTE1RkIwMDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0Nh
bGxiYWNrLmNwcCAqLzsgfTsKQEAgLTExNDgsNyArMTE0OCw2IEBACiAJCTJENzdBQzJCMUJGMkI5
ODcwMDcyNDcwQSAvKiBOU1RleHRGaW5kZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzdBQzI4MUJGMkI5ODYwMDcyNDcwQSAvKiBOU1RleHRG
aW5kZXJTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyRDc3QUMyRDFCRjJCOUEwMDA3MjQ3MEEgLyogTlNWaWV3U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDc3QUMyQzFCRjJCOUEwMDA3MjQ3
MEEgLyogTlNWaWV3U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkQ3RUQwQUIxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNlZE1v
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0VE
MEE5MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggKi87IH07Ci0JCTJE
N0VEMEFDMUJBRTk5MTcwMDQzQjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBQTFCQUU5OTE3MDA0
M0IzRTUgLyogVXNlck1lZGlhQ2xpZW50TW9jay5oICovOyB9OwogCQkyRDgyODdGNjE2RTRBMDM4
MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODI4N0Y0MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0
TG9jYXRpb24uY3BwICovOyB9OwogCQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVz
dExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ4RkVCREMxNDNFM0VG
NzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOEZFQkRBMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1ND
cm9zc2ZhZGVWYWx1ZS5jcHAgKi87IH07CkBAIC03NDM5LDYgKzc0MzgsOCBAQAogCQkwNzI3N0U0
ODE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzI3N0U0OTE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3Mjk3RkE1MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdGQTYx
QzE4ODFDNTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQUUxREYxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdp
blJlcGxhY2VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblJl
cGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkFFMUUwMTgzQzA3
NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJBRTFFMTE4M0MwNzQxMDAwQTU5ODgg
LyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBh
dGggPSBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03NDc4LDggKzc0NzksNiBAQAogCQkwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZFRleHRUcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzYzMDZDQzE3
RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjMwNkNEMTdFMTQ3OEQwMDVB
N0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2Q0UxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzYzMDZDRjE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzYzMDZENDE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbmZvLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MzA2RDUxN0UxNDlDRjAwNUE3QzRFIC8qIFNvdXJjZUluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzYzMDZENjE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNl
SW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlSW5mby5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTAwLDcgKzg0OTksNiBAQAogCQkyRDc3QUMyODFCRjJC
OTg2MDA3MjQ3MEEgLyogTlNUZXh0RmluZGVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5TVGV4dEZpbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDc3QUMyQzFCRjJCOUEwMDA3MjQ3MEEgLyogTlNWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TVmlld1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lckV2ZW50QmFzZWRNb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEN0VEMEFBMUJBRTk5MTcwMDQzQjNFNSAvKiBV
c2VyTWVkaWFDbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJNZWRpYUNsaWVudE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4Mjg3
RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXRUZXN0TG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDhGRUJEQTE0M0UzRUY3MDA3MjUwMkIg
LyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTUxMjgsOCArMTUxMjYsNiBAQAogCQkJCTA3MjIxQjU5MTdDRUMzMjcwMDg0OEU1MSAvKiBN
ZWRpYVN0cmVhbVRyYWNrRXZlbnQuaWRsICovLAogCQkJCTA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0
RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi8sCiAJCQkJMDc2MzA2Q0Qx
N0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsICov
LAotCQkJCTA3NjMwNkNFMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3QuY3BwICovLAotCQkJCTA3NjMwNkNGMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCAqLywKIAkJCQkwNzA1ODUzOTE3RkUwNzcwMDA1RjJC
Q0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICovLAogCQkJCTA3MDU4NTFEMTdGREMxNDAw
MDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAogCQkJCTA3MDU4NTFFMTdGREMx
NDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8sCkBAIC0xNTIwNiw2ICsx
NTIwMiw4IEBACiAJCQkJMDcyMjFCOEQxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNsaWVu
dC5oICovLAogCQkJCTA3MjIxQjhFMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDb250cm9s
bGVyLmNwcCAqLywKIAkJCQkwNzIyMUI4RjE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ29u
dHJvbGxlci5oICovLAorCQkJCTA3Mjk3RkE1MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwICovLAorCQkJCTA3Mjk3RkE2MUMxODgxQzUwMDNGMDczNSAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLywKIAkJCQkwNzIyMUI5MDE3Q0VDMzI3MDA4NDhF
NTEgLyogVXNlck1lZGlhUmVxdWVzdC5jcHAgKi8sCiAJCQkJMDcyMjFCOTExN0NFQzMyNzAwODQ4
RTUxIC8qIFVzZXJNZWRpYVJlcXVlc3QuaCAqLywKIAkJCSk7CkBAIC0xNzE1Myw3ICsxNzE1MSw2
IEBACiAJCQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5j
cHAgKi8sCiAJCQkJMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9j
ay5oICovLAogCQkJCTJEN0VEMEE5MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRN
b2NrLmggKi8sCi0JCQkJMkQ3RUQwQUExQkFFOTkxNzAwNDNCM0U1IC8qIFVzZXJNZWRpYUNsaWVu
dE1vY2suaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbW9jazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0yNjE5OCw2ICsyNjE5NSw3IEBACiAJCQkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYw
QjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1OTc0MURC
MUI3RDE0MDEwMDIwMUM5MiAvKiBKU01lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTU3MzlCQkIxQjQyMDEyRDAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2VzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwNzI5N0ZBODFDMTg4MUM1MDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyog
SlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYx
NDE5MENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjcwNyw3ICsyNjcwNSw2IEBACiAJCQkJMDc4RTA5MTkxN0QxNEQxQzAwNDIwQUExIC8q
IE1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGRkRFNjkxODFB
RUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzYzMDZEMDE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2MzA2RDMxN0UxNDc4RDAwNUE3QzRFIC8q
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2
MzA2RTMxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2NDFFQzAxODE5QjM2MDAwRUU0QzQxIC8qIE1l
ZGlhVGltZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2MEMwQzcxOTNFODdD
NzAwM0M2NTZCIC8qIE1lZGlhVGltZVFUS2l0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODk3LDcg
KzI3ODk0LDYgQEAKIAkJCQkyNTQyRjREQjExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjAzOTgzMThCOTVCQzYwMEIzOUFGOSAv
KiBVc2VySW5wdXRCcmlkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTJFMTdEMTREMUMw
MDQyMEFBMSAvKiBVc2VyTWVkaWFDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEN0VEMEFD
MUJBRTk5MTcwMDQzQjNFNSAvKiBVc2VyTWVkaWFDbGllbnRNb2NrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzhFMDkyRjE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlhQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MzAxN0QxNEQxQzAwNDIwQUExIC8qIFVzZXJNZWRpYVJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0EyRCAvKiBV
c2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjk2OTEsNiArMjk2ODcsNyBA
QAogCQkJCTUxNzEzOTA1MUJGNjRERUMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QUNCQzBDQTEyNzEzRDBBMDA5NEY5QjIgLyogSlNE
T01TZXR0YWJsZVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEzN0NGMjExQTU4
Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3
Mjk3RkE3MUMxODgxQzUwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0NjQ5NzExRDgyMzQ5MDA2NDU1
QjAgLyogSlNET01TdHJpbmdNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NDY0OUMxMUQ4
MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzA0MDMsNyArMzA0MDAsNiBAQAogCQkJCTA3OEUwOTAyMTdEMTRDRUUwMDQyMEFBMSAvKiBN
ZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTAzMTdEMTRDRUUw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDdGRkRFNjgxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTA3NjMwNkQyMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2NDFFQkYxODE5
QjM2MDAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRDYwQzBDNjE5M0U4N0M3MDAzQzY1NkIgLyogTWVkaWFUaW1lUVRLaXQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwNzA1ODUzQTE3RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaAkocmV2aXNpb24gMTkzNzc5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Vc2VyTWVkaWFDbGllbnRNb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBVc2VyTWVkaWFDbGllbnRNb2NrX2gKLSNkZWZpbmUgVXNlck1lZGlh
Q2xpZW50TW9ja19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiVGlt
ZXJFdmVudEJhc2VkTW9jay5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgotI2luY2x1
ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBV
c2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIgOiBwdWJsaWMgTW9ja05vdGlmaWVyIHsKLXB1
YmxpYzoKLSAgICBVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIoUmVmPFVzZXJNZWRpYVJl
cXVlc3Q+JiYgcmVxdWVzdCwgYm9vbCByZXF1ZXN0U3VjY2VzcykKLSAgICAgICAgOiBtX3JlcXVl
c3QoV1RGOjptb3ZlKHJlcXVlc3QpKQotICAgICAgICAsIG1fcmVxdWVzdFN1Y2Nlc3MocmVxdWVz
dFN1Y2Nlc3MpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmlyZSgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBpZiAoIW1fcmVxdWVzdFN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIG1fcmVxdWVz
dC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBhdXRvIGF1ZGlvRGV2aWNlVUlEcyA9IG1fcmVxdWVzdC0+YXVkaW9EZXZp
Y2VVSURzKCk7Ci0gICAgICAgIGF1dG8gdmlkZW9EZXZpY2VVSURzICA9IG1fcmVxdWVzdC0+dmlk
ZW9EZXZpY2VVSURzKCk7Ci0gICAgICAgIFN0cmluZyBhbGxvd2VkQXVkaW9VSUQgPSBhdWRpb0Rl
dmljZVVJRHMuc2l6ZSgpID8gYXVkaW9EZXZpY2VVSURzLmF0KDApIDogZW1wdHlTdHJpbmcoKTsK
LSAgICAgICAgU3RyaW5nIHZpZGVvQXVkaW9VSUQgPSB2aWRlb0RldmljZVVJRHMuc2l6ZSgpID8g
dmlkZW9EZXZpY2VVSURzLmF0KDApIDogZW1wdHlTdHJpbmcoKTsKLQotICAgICAgICBtX3JlcXVl
c3QtPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoYWxsb3dlZEF1ZGlvVUlELCB2aWRlb0F1ZGlvVUlE
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IG1fcmVxdWVz
dDsKLSAgICBib29sIG1fcmVxdWVzdFN1Y2Nlc3M7Ci19OwotCi1jbGFzcyBVc2VyTWVkaWFDbGll
bnRNb2NrIGZpbmFsIDogcHVibGljIFVzZXJNZWRpYUNsaWVudCwgcHVibGljIFRpbWVyRXZlbnRC
YXNlZE1vY2sgewotcHVibGljOgotICAgIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURl
c3Ryb3llZCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhSZWY8VXNlck1lZGlhUmVx
dWVzdD4mJiByZXF1ZXN0KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgUmVmUHRyPFVzZXJNZWRp
YUNsaWVudFJlcXVlc3ROb3RpZmllcj4gbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgVXNlck1lZGlh
Q2xpZW50UmVxdWVzdE5vdGlmaWVyKFdURjo6bW92ZShyZXF1ZXN0KSwgdHJ1ZSkpOwotICAgICAg
ICBtX3RpbWVyRXZlbnRzLmFwcGVuZChhZG9wdFJlZihuZXcgVGltZXJFdmVudCh0aGlzLCBub3Rp
ZmllcikpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhQWNjZXNz
UmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgUmVmUHRyPFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcj4gbm90aWZpZXIgPSBhZG9w
dFJlZihuZXcgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyKHJlcXVlc3QsIGZhbHNlKSk7
Ci0gICAgICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2ZW50KHRo
aXMsIG5vdGlmaWVyKSkpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBVc2VyTWVkaWFDbGll
bnRNb2NrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9u
IDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw2IEBACiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suaCIKLSNpbmNsdWRlICJVc2VyTWVkaWFDbGll
bnRNb2NrLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4MSBAQAorMjAxNS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEV4cG9zZSBtZWRp
YSBjYXB0dXJlIGRldmljZXMgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyB0byBXZWJDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OiBBZGQgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwIGFuZCBXS1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVjay5jcHAuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOiBE
ZWZpbmUgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLgorCisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLQmFzZS5oOiBBZGQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tSZWYgdHlwZWRlZi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6IE5ldy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDogQWRkIFdLVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUmVmL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5IG1hcHBpbmcuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VV
SUNsaWVudCk6IEltcGxlbWVudCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDogQWRkIFdLQ2hlY2tV
c2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sgdHlwZWRlZiBhbmQgYWRkCisgICAgICAgICAgY2hl
Y2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luIHRvIFdLUGFnZVVJQ2xpZW50VjYuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrR2V0VHlwZUlEKToKKyAg
ICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrU2V0SGFzUGVybWlzc2lvbik6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaDogQWRk
ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHk6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OnNldEhhc1Blcm1pc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2spOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlz
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS4qLCBhbmQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suKi4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFy
dFVzZXJNZWRpYVJlcXVlc3QpOiBSZW5hbWVkIGZyb20gc3RhcnRSZXF1ZXN0LgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QpOiBSZW5hbWVkIGZyb20gY2FuY2VsUmVxdWVzdC4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzc2lvbkRlY2lzaW9uKTogbV9yZXF1ZXN0VG9JRE1hcCAtPgorICAgICAgICAgIG1fdXNlck1l
ZGlhUmVxdWVzdFRvSURNYXAucmVtb3ZlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKTogTmV3
LCBzdGFydCB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2spOiBOZXcsIGNh
bmNlbAorICAgICAgICAgIHRoZSByZXF1ZXN0LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrKTogTmV3LCAKKyAgICAgICAgICBhbGwgdGhlIHJlcXVlc3QgY29tcGxldGlvbiBtZXRob2Qu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3Rh
cnRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVk
aWFBY2Nlc3MpOiBzdGFydFJlcXVlc3QgLT4gc3RhcnRVc2VyTWVkaWFSZXF1ZXN0LgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVl
c3QpOiBjYW5jZWxSZXF1ZXN0IC0+IGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QuCisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKTogTmV3
LgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayk6IE5ldy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb21wbGV0ZVVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjayk6IE5ldy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OiBBZGQgRGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suCisKIDIwMTUtMTItMDgg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlh
U3RyZWFtXSBSZW5hbWUgVXNlck1lZGlhQ2xpZW50IGFuZCBVc2VyTWVkaWFDb250cm9sbGVyIG1l
dGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDYgKzM0Nyw3
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHAKICAgICBVSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNz
L1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcApAQCAtNDU0
LDYgKzQ1NSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tT
ZXNzaW9uU3RhdGVSZWYuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tWaWJyYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRB
dHRyaWJ1dGVzLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShy
ZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDcgQEAgcHVibGljOgogICAgICAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXIsCiAgICAgICAgIFVzZXJDb250ZW50RXh0ZW5zaW9uLAogICAgICAg
ICBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLAorICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2ssCiAgICAgICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LAogICAgICAgICBWaWJy
YXRpb24sCiAgICAgICAgIFZpZXdwb3J0QXR0cmlidXRlcywKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2Vzc2lvblN0YXQKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRDb250cm9sbGVyKiBXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZSogV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tVc2VyQ29udGVudEZpbHRlciogV0tVc2VyQ29udGVudEZpbHRlclJlZjsKK3R5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJTY3JpcHQqIFdLVXNlclNjcmlw
dFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlicmF0aW9uKiBXS1ZpYnJhdGlv
blJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5oIgorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1l
ZGlhSUQpCisgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCisgICAgLCBtX3VzZXJNZWRpYUlEKHVz
ZXJNZWRpYUlEKQoreworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Ojpz
ZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihib29sIGFsbG93ZWQpCit7CisgICAgQVNTRVJUKG1f
bWFuYWdlcik7CisgICAgaWYgKCFtX21hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bWFuYWdlci0+ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sobV91c2VyTWVkaWFJ
RCwgYWxsb3dlZCk7CisgICAgbV9tYW5hZ2VyID0gbnVsbHB0cjsKK30KKwordm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9tYW5hZ2VyID0g
bnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHlfaAorI2RlZmluZSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eV9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTsKKworY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlEKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhhc1Bl
cnNpc3RlbnRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7
CisKK3ByaXZhdGU6CisgICAgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkoVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCk7CisK
KyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwor
ICAgIHVpbnQ2NF90IG1fdXNlck1lZGlhSUQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDE3IEBAIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjoKIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIHsKLSAgICBmb3IgKGF1dG8m
IHJlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJl
cXVlc3QgOiBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy52YWx1ZXMoKSkKICAgICAgICAgcmVx
dWVzdC0+aW52YWxpZGF0ZSgpOwogCi0gICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKKyAg
ICBtX3BlbmRpbmdVc2VyTWVkaWFSZXF1ZXN0cy5jbGVhcigpOwogfQogCi1QYXNzUmVmUHRyPFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlk
ZW9EZXZpY2VVSURzKQorUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90
IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQogewotICAgIFJlZlB0cjxVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgYXVkaW9EZXZpY2VVSURzLCB2
aWRlb0RldmljZVVJRHMpOwotICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwg
cmVxdWVzdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIFJlZjxV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgYXVkaW9EZXZpY2VV
SURzLCB2aWRlb0RldmljZVVJRHMpOworICAgIG1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLmFk
ZCh1c2VyTWVkaWFJRCwgcmVxdWVzdC5wdHIoKSk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAK
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVV
c2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxs
b3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0Rl
dmljZVVJRCkKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcgogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKSkKKyAgICBpZiAo
IW1fcGVuZGluZ1VzZXJNZWRpYVJlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtNjAsNCArNjAsMjYgQEAgdm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcgogI2VuZGlmCiB9CiAKK1JlZjxV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmNyZWF0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50NjRfdCB1c2Vy
TWVkaWFJRCkKK3sKKyAgICBSZWY8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IHJlcXVl
c3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVk
aWFJRCk7CisgICAgbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMuYWRkKHVzZXJNZWRpYUlELCByZXF1
ZXN0LnB0cigpKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKwordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkQ29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAoIW1f
cGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wZW5kaW5nRGV2
aWNlUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1c2VyTWVkaWFJRCwg
YWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhbGxv
d2VkKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogI2lmbmRlZiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCiAjZGVmaW5lIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5X2gKIAorI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTMyLDE0ICszMywxNiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0cygpOwogCi0gICAgLy8gQ3JlYXRlIGEgcmVxdWVzdCB0
byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuCi0gICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmlkZW9EZXZpY2VVSURzKTsKLQotICAgIC8vIENhbGxlZCBieSBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5IHdoZW4gYSBkZWNpc2lvbiBpcyBtYWRlIGJ5IHRoZSB1c2VyLgorICAg
IFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QsIGJvb2wgYWxsb3csIGNvbnN0
IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwog
CisKKyAgICBSZWY8VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IGNyZWF0ZVVzZXJNZWRp
YVBlcm1pc3Npb25DaGVjayh1aW50NjRfdCB1c2VyTWVkaWFJRCk7CisgICAgdm9pZCBkaWRDb21w
bGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50NjRfdCwgYm9vbCBhbGxvdyk7CisKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk+PiBtX3BlbmRpbmdSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1VzZXJNZWRp
YVJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eT4+IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzOwogICAgIFdlYlBhZ2VQcm94
eSYgbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAxOTM3
NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzEsOSArMzAsOSBAQCBjbGFzcyBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQCiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlh
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhdWRpb0RldmljZVVJRHMpCisgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmlkZW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCB2aWRlb0RldmljZVVJRHMsIGF1ZGlv
RGV2aWNlVUlEcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCB2aWRlb0RldmljZVVJRHMs
IGF1ZGlvRGV2aWNlVUlEcykpOwogICAgIH0KIAogICAgIHZvaWQgYWxsb3coY29uc3QgU3RyaW5n
JiB2aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkzNzc5
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyNTksNiArNTI1OSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVz
ZXJNZWRpYVBlcm1pCiAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRp
YUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKK3sKKyAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CisKKyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4g
b3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk+IHJlcXVlc3QgPSBtX3VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodXNlck1l
ZGlhSUQpOworCisgICAgaWYgKCFtX3VpQ2xpZW50LT5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25G
b3JPcmlnaW4oKnRoaXMsICpmcmFtZSwgKm9yaWdpbi5nZXQoKSwgKnJlcXVlc3QuZ2V0KCkpKQor
ICAgICAgICByZXF1ZXN0LT5zZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihmYWxzZSk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogewogICAgIGlmICghaXNS
ZXF1ZXN0SURWYWxpZChyZXF1ZXN0SUQpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkwLDYgKzExOTAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVp
bnQ2NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyKTsKIAogICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1
aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOworICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAgICB2b2lk
IG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYy
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgICMgTWVkaWFTdGVhbSBtZXNzYWdlcwogICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBvcmlnaW5JZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiBhdWRpb0RldmljZVVJRHMsIFZlY3Rv
cjxTdHJpbmc+IHZpZGVvRGV2aWNlVUlEcykKKyAgICBDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25G
b3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uIG1lc3NhZ2VzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lv
biAxOTM3NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5h
dGl2ZVdlYldoZWVsRXZlbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
K2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC0xMzEsNiArMTMyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgU2VjdXJp
dHlPcmlnaW4qLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSopIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSosIFNlY3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBQcmludGluZy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7
CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOwpAQCAtMTYxLDYgKzE2Miw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRD
aGVja2VyUmVmLCBXZWIKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudEZpbHRlclJlZiwgQVBJOjpV
c2VyQ29udGVudEV4dGVuc2lvbikKK1dLX0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1JlZiwgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQ
STo6VXNlclNjcmlwdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmli
cmF0aW9uUHJveHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTcsNiArMjAxNywxNSBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCisgICAgICAgIHZpcnR1YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1p
c3Npb25Gb3JPcmlnaW4oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
QVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eSYgcmVxdWVzdCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4pCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICBtX2NsaWVudC5jaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JPcmlnaW4odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwg
dG9BUEkoJnJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkq
IHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZVVJQ2xpZW50LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBA
IHR5cGVkZWYgdm9pZCAoKldLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnUKIHR5cGVkZWYgdm9pZCAo
KldLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZUlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiBw
ZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUmVmIGRldmljZXNSZXF1ZXN0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VNZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZUNhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiBtZXRhZGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKQEAgLTU0NSw2ICs1NDYsNyBAQCB0eXBlZGVmIHN0
cnVjdCBXS1BhZ2VVSUNsaWVudFY2IHsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVy
dDsKICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtOwogICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvck9yaWdpbjsKIH0gV0tQYWdlVUlDbGllbnRWNjsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIgorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0Fy
cmF5LmgiCisjaW5jbHVkZSAiV0tNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja0dldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5OjpBUElUeXBlKTsKK30KKwordm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1NldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBib29sIGFsbG93ZWQpCit7Cisg
ICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+c2V0SGFzUGVyc2lzdGVu
dFBlcm1pc3Npb24oYWxsb3dlZCk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja19oCisjZGVmaW5lIFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tTZXRIYXNQZXJzaXN0ZW50UGVybWlzc2lvbihXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1JlZiwgYm9vbCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK
KyNlbmRpZiAvKiBXS01lZGlhRGV2aWNlc1JlcXVlc3RfaCAqLwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkz
Nzc5KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMCBAQAogCQkwMEI5NjYxNjE4RTI0Q0JBMDBD
RTFGODggLyogQVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQu
aCAqLzsgfTsKIAkJMDBCOTY2MTkxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxNzE4RTI1
QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLzsgfTsKIAkJMDBCOTY2MUExOEUyNUFFMTAw
Q0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi87
IH07CisJCTA3Mjk3RjlFMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2tQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTA3Mjk3RjlG
MUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGOUQxQzE3QkJF
QTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmggKi87IHNldHRpbmdz
ID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMDcyOTdGQTIxQzE4NkFEQjAwM0YwNzM1IC8q
IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsg
fTsgfTsKKwkJMDcyOTdGQTMxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI5N0ZBMTFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzZFODg0
RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVFOTBG
QyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBG
NjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcg
LyogTGF5ZXJSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50
YXRpb24uaCAqLzsgfTsKQEAgLTIxNjcsNiArMjE3MSwxMCBAQAogCQkwMEI5NjYxNTE4RTI0Q0JB
MDBDRTFGODggLyogQVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2
NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdG
QTAxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyOTdGQTExQzE4NkFEQjAw
M0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0
TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZXh0
TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RjFBMTND
QkM2MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVG
RTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFw
cEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtNjE4NSw2ICs2MTkz
LDggQEAKIAkJCQlCQzA2RjQzOTEyREJDQ0ZCMDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcCAqLywKIAkJCQlCQzA2RjQzODEyREJDQ0ZCMDAyRDc4REUgLyog
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi8sCiAJCQkJMzE2MDdGMzgxOTYy
NzAwMjAwOUI4N0RBIC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oICovLAorCQkJCTA3Mjk3
RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAg
Ki8sCisJCQkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmggKi8sCiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGll
bnQuaCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5j
cHAgKi8sCiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAq
LywKQEAgLTY0ODEsNiArNjQ5MSw4IEBACiAJCQkJN0M4OUQyOUUxQTY3ODU1NDAwM0E1RkRFIC8q
IFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggKi8sCiAJCQkJN0MyNDEzMDYxQUFDRkNCNDAw
QTU4QzE1IC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAgKi8sCiAJCQkJN0My
NDEzMDcxQUFDRkNCNDAwQTU4QzE1IC8qIFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5o
ICovLAorCQkJCTA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVjay5jcHAgKi8sCisJCQkJMDcyOTdGQTExQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrLmggKi8sCiAJCQkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8q
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovLAogCQkJCTRBNDEwRjM2MTlBRjdB
QzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCiAJCQkJN0M4
OUQyQTExQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi8sCkBAIC03Nzc0
LDYgKzc3ODYsNyBAQAogCQkJCUJDMDZGNDNBMTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0NEE0MTg4
NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTA0
OUI4MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3Mjk3RkEzMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Np
b25DaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDRTcyQUQxMjQ3RTc4RDAwQkMwRUM0IC8q
IEhhbmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1QTFCMUIzMzY4MjcwMDU2
NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3Rjkw
REUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTgyNjYsNiArODI3OSw3IEBACiAJCQkJMUE0NDVCOUYxODRENUZCNTAwNEIzNDE0
IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUE1NTVGNjEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxQTU1NjAxMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5
cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI5N0Y5RjFDMTdCQkVBMDAzRjA3MzUgLyogVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzkzOEUx
MTE4MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzMwOTM0NUIxMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA4NCw2ICsxMDA5OCw3IEBACiAJCQkJQkM1NENDMTMx
MkQ2NzRFRTAwNUM2N0IwIC8qIFdLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMDZGNDRGMTJEQkRGM0YwMDJENzhERSAvKiBXS0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYxOTkxMkQ2Q0QxMjAwMTJBNzJB
IC8qIFdLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzI5N0ZB
MjFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDQjRFNTAxOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Q
cm92aWRlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTUxMThCQkUwNDQwMDBGQ0ZD
OSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjE3NEFBNzE0MkFBQzYxMDAzOTI1MEYgLyogV0tHZW9tZXRyeS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEwMDk4LDYgKzEwMTEzLDcgQEAKIAkJCQkwRjNDNzI1QzE5NkY2
MDUyMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTU0MjkzQTUxOTVBNDNERDAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBOUUxMEExMzE1Q0QxODAw
OUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwNzI5N0Y5RTFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEM0EzQjUxMzM5NjAwQjAwNzA5QkU0IC8qIFdL
TWVkaWFDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzk4QzQ4QTkxQjZGRDVC
NTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUM5Q0Q0MzlFMUI0QjAyNTMwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRh
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6VXNlck0KIHsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNlck1lZGlhUmVx
dWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PihyZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxw
dHI7CkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjoKICAgICB9CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJ
RCgpOwotICAgIG1faWRUb1JlcXVlc3RNYXAuYWRkKHJlcXVlc3RJRCwgJnJlcXVlc3QpOwotICAg
IG1fcmVxdWVzdFRvSURNYXAuYWRkKCZyZXF1ZXN0LCByZXF1ZXN0SUQpOworICAgIG1faWRUb1Vz
ZXJNZWRpYVJlcXVlc3RNYXAuYWRkKHJlcXVlc3RJRCwgJnJlcXVlc3QpOworICAgIG1fdXNlck1l
ZGlhUmVxdWVzdFRvSURNYXAuYWRkKCZyZXF1ZXN0LCByZXF1ZXN0SUQpOwogCiAgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKICAgICBBU1NF
UlQod2ViRnJhbWUpOwpAQCAtNjYsMjAgKzY2LDIwIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjoKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUt
PmZyYW1lSUQoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgcmVxdWVzdC5hdWRpb0Rl
dmljZVVJRHMoKSwgcmVxdWVzdC52aWRlb0RldmljZVVJRHMoKSkpOwogfQogCi12b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1
ZXN0JiByZXF1ZXN0KQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNh
bmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICB1
aW50NjRfdCByZXF1ZXN0SUQgPSBtX3JlcXVlc3RUb0lETWFwLnRha2UoJnJlcXVlc3QpOworICAg
IHVpbnQ2NF90IHJlcXVlc3RJRCA9IG1fdXNlck1lZGlhUmVxdWVzdFRvSURNYXAudGFrZSgmcmVx
dWVzdCk7CiAgICAgaWYgKCFyZXF1ZXN0SUQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2lkVG9S
ZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOworICAgIG1faWRUb1VzZXJNZWRpYVJlcXVlc3RN
YXAucmVtb3ZlKHJlcXVlc3RJRCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90
IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBj
b25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQogewotICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1
ZXN0PiByZXF1ZXN0ID0gbV9pZFRvUmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CisgICAgUmVm
UHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBtX2lkVG9Vc2VyTWVkaWFSZXF1ZXN0TWFw
LnRha2UocmVxdWVzdElEKTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX3JlcXVlc3RUb0lETWFwLnJlbW92ZShyZXF1ZXN0KTsKKyAgICBtX3VzZXJNZWRpYVJlcXVl
c3RUb0lETWFwLnJlbW92ZShyZXF1ZXN0KTsKIAogICAgIGlmIChhbGxvd2VkKQogICAgICAgICBy
ZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGF1ZGlvRGV2aWNlVUlELCB2aWRlb0Rldmlj
ZVVJRCk7CkBAIC04Nyw2ICs4Nyw0NSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6CiAgICAgICAgIHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0RlbmllZCgpOwogfQog
Cit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0
KQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihyZXF1ZXN0
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQg
PyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisKKyAgICBpZiAoIWZyYW1lKSB7CisgICAg
ICAgIHJlcXVlc3Quc2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24oZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVSZXF1ZXN0
SUQoKTsKKyAgICBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tNYXAuYWRkKHJlcXVlc3RJ
RCwgJnJlcXVlc3QpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvbkNoZWNrVG9JRE1hcC5hZGQo
JnJlcXVlc3QsIHJlcXVlc3RJRCk7CisKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFt
ZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKKyAgICBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luID0gcmVxdWVzdC5zZWN1cml0eU9yaWdpbigpOworICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKSkpOworfQorCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1RvSURNYXAudGFrZSgmcmVxdWVzdCk7CisgICAgaWYgKCFy
ZXF1ZXN0SUQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2lkVG9Vc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tNYXAucmVtb3ZlKHJlcXVlc3RJRCk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjpkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1aW50
NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrPiByZXF1ZXN0ID0gbV9pZFRvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrTWFw
LnRha2UocmVxdWVzdElEKTsKKyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1RvSURNYXAucmVtb3ZlKHJlcXVlc3QpOworICAg
IAorICAgIHJlcXVlc3QtPnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGFsbG93ZWQpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJ
KHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDYgKzIxLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNl
ck1lZGlhUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgpAQCAtMzQsMTYgKzM1LDIyIEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlciAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCi0gICAgdm9pZCBzdGFydFJlcXVlc3QoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdCYpOwotICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0Jik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9u
RGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CisgICAgdm9p
ZCBzdGFydFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOworICAg
IHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7
CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90
IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBj
b25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKKworICAgIHZvaWQgc3RhcnRVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJik7CisgICAg
dm9pZCBjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjayh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCk7CiAKIHByaXZhdGU6CiAgICAg
V2ViUGFnZSYgbV9wYWdlOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q+PiBtX2lkVG9SZXF1ZXN0TWFwOwotICAgIEhhc2hNYXA8UmVmUHRy
PFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCB1aW50NjRfdD4gbV9yZXF1ZXN0VG9JRE1hcDsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4+
IG1faWRUb1VzZXJNZWRpYVJlcXVlc3RNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdD4sIHVpbnQ2NF90PiBtX3VzZXJNZWRpYVJlcXVlc3RUb0lETWFwOwor
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Np
b25DaGVjaz4+IG1faWRUb1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja01hcDsKKyAgICBIYXNoTWFw
PFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+LCB1aW50NjRfdD4gbV91
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tUb0lETWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCShyZXZpc2lvbiAxOTM3Nzkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE1ICszOSwyNCBAQCB2b2lkIFdlYlVz
ZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZv
aWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJlZjxVc2VyTWVk
aWFSZXF1ZXN0PiYmIHByUmVxdWVzdCkKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0
VXNlck1lZGlhQWNjZXNzKFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgVXNlck1l
ZGlhUmVxdWVzdCYgcmVxdWVzdCA9IHByUmVxdWVzdC5sZWFrUmVmKCk7Ci0gICAgbV9wYWdlLnVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0YXJ0UmVxdWVzdChyZXF1ZXN0KTsK
KyAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuc3RhcnRVc2Vy
TWVkaWFSZXF1ZXN0KHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2Fu
Y2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5jYW5jZWxSZXF1
ZXN0KHJlcXVlc3QpOworICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIoKS5jYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3QpOworfQorCit2b2lkIFdlYlVzZXJN
ZWRpYUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFdlYkNvcmU6OlVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayYgcmVxdWVzdCkKK3sKKyAgICBtX3BhZ2UudXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkuc3RhcnRVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2socmVxdWVzdCk7
Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJiByZXF1ZXN0KQoreworICAg
IG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5jYW5jZWxVc2VyTWVk
aWFQZXJtaXNzaW9uQ2hlY2socmVxdWVzdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAkocmV2aXNpb24gMTkzNzc5KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE0IEBAIHB1YmxpYzoKICAgICBXZWJVc2Vy
TWVkaWFDbGllbnQoV2ViUGFnZSYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYWdl
RGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFJl
ZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUFjY2VzcyhX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxVc2Vy
TWVkaWFBY2Nlc3NSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVycmlkZTsK
IAorICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKFdlYkNvcmU6OlVzZXJNZWRpYVBl
cm1pc3Npb25DaGVjayYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrKFdlYkNvcmU6OlVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayYpIG92ZXJyaWRlOwor
CiAgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTkzNzc5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzY1LDYgKzMzNjUsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzcwogewogICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFsbG93ZWQsIGF1ZGlv
RGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxl
dGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxs
b3dlZCkKK3sKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5kaWRDb21w
bGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayh1c2VyTWVkaWFJRCwgYWxsb3dlZCk7Cit9CiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMDUs
NiArMTEwNSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFdL
X0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0
X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJ
RCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CisgICAgV0tfRVhQT1JUIHZvaWQgZGlk
Q29tcGxldGVVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2sodWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgYWxsb3dlZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5
Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAjIE1l
ZGlhU3RlYW0KICAgICBEaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3Ry
aW5nIHZpZGVvRGV2aWNlVUlEKQorICAgIERpZENvbXBsZXRlVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQpCiAjZW5kaWYKIAogICAgICMg
Tm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTM3NzkpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBA
QAorMjAxNS0xMi0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTWVkaWFTdHJlYW1dIEV4cG9zZSBtZWRpYSBjYXB0dXJlIGRldmljZXMgcGVyc2lz
dGVudCBwZXJtaXNzaW9ucyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwODcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBE
dW1lei4KKworICAgICAgICBBZGQgbWV0aG9kcyBhbmQgaGVscGVycyBmb3IgV0sxIHBlcm1pc3Np
b24gY2hlY2tlciBpbnRlcmZhY2UuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
Lm1tOgorICAgICAgICAodXNlck1lZGlhUmVxdWVzdHNNYXApOgorICAgICAgICAoQWRkUmVxdWVz
dFRvUmVxdWVzdE1hcCk6CisgICAgICAgIChSZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXApOgor
ICAgICAgICAodXNlck1lZGlhQ2hlY2tNYXApOgorICAgICAgICAoQWRkUGVybWlzc2lvbkNoZWNr
VG9NYXApOgorICAgICAgICAoUmVtb3ZlUGVybWlzc2lvbkNoZWNrRnJvbU1hcCk6CisgICAgICAg
IChXZWJVc2VyTWVkaWFDbGllbnQ6OldlYlVzZXJNZWRpYUNsaWVudCk6CisgICAgICAgIChXZWJV
c2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3MpOgorICAgICAgICAoV2ViVXNl
ck1lZGlhQ2xpZW50OjpjYW5jZWxVc2VyTWVkaWFBY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdl
YlVzZXJNZWRpYUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uKToKKyAgICAgICAgKFdl
YlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrKToKKyAgICAg
ICAgKC1bV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgYWxsb3ddKToKKyAgICAgICAgKC1bV2Vi
VXNlck1lZGlhUG9saWN5TGlzdGVuZXIgZGVueV0pOgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQ
b2xpY3lDaGVja2VyTGlzdGVuZXIgaW5pdFdpdGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6XSk6
CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBjYW5jZWxVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tdKToKKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5Q2hl
Y2tlckxpc3RlbmVyIGFsbG93XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNr
ZXJMaXN0ZW5lciBkZW55XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJM
aXN0ZW5lciBkZW55T25seVRoaXNSZXF1ZXN0XSk6CisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBv
bGljeUNoZWNrZXJMaXN0ZW5lciBzaG91bGRDbGVhckNhY2hlXSk6CisgICAgICAgIChBZGRSZXF1
ZXN0VG9NYXApOiBEZWxldGVkLgorICAgICAgICAoUmVtb3ZlUmVxdWVzdEZyb21NYXApOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxNS0x
Mi0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVw
IHRvOgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50LmgJKHJldmlzaW9uIDE5Mzc3OSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVzZXJNZWRpYUNs
aWVudDsKK2NsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazsKIGNsYXNzIFVzZXJNZWRpYVJl
cXVlc3Q7CiB9CiAKQEAgLTQ0LDkgKzQ1LDEzIEBAIHB1YmxpYzoKICAgICB+V2ViVXNlck1lZGlh
Q2xpZW50KCk7CiAKICAgICAvLyBVc2VyTWVkaWFDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYUFjY2VzcyhSZWY8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFVzZXJN
ZWRpYUFjY2Vzc1JlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb24oV2ViQ29yZTo6VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2soV2ViQ29yZTo6VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrJikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJW
aWV3KiBtX3dlYlZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCShyZXZpc2lvbiAxOTM3NzkpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhj
ZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNTAsMjQg
KzUyLDUxIEBAIC0gKHZvaWQpY2FuY2VsVXNlck1lZGlhQWNjZXNzUmVxdWVzdDsKIC0gKHZvaWQp
ZGVueTsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVu
ZXIgOiBOU09iamVjdCA8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+IHsKKyAgICBSZWZQdHI8
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrPiBfcmVxdWVzdDsKK30KKy0gKGlkKWluaXRXaXRoVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrOihQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
az4pcmVxdWVzdDsKKy0gKHZvaWQpY2FuY2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOworLSAo
dm9pZClkZW55OworQGVuZAorCiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVJlcXVl
c3Q+LCBSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXI+PiBVc2VyTWVkaWFSZXF1
ZXN0c01hcDsKIAogc3RhdGljIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiB1c2VyTWVkaWFSZXF1ZXN0
c01hcCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFVzZXJNZWRpYVJl
cXVlc3RzTWFwLCByZXF1ZXN0cywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2Vy
TWVkaWFSZXF1ZXN0c01hcD4gcmVxdWVzdHM7CiAgICAgcmV0dXJuIHJlcXVlc3RzOwogfQogCi1z
dGF0aWMgdm9pZCBBZGRSZXF1ZXN0VG9NYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwgUmV0
YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lcikKK3N0YXRpYyB2b2lk
IEFkZFJlcXVlc3RUb1JlcXVlc3RNYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwgUmV0YWlu
UHRyPFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lcikKIHsKICAgICB1c2VyTWVk
aWFSZXF1ZXN0c01hcCgpLnNldChyZXF1ZXN0LCBsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyB2b2lk
IFJlbW92ZVJlcXVlc3RGcm9tTWFwKFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMg
dm9pZCBSZW1vdmVSZXF1ZXN0RnJvbVJlcXVlc3RNYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVz
dCkKIHsKICAgICB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLnJlbW92ZShyZXF1ZXN0KTsKIH0KIAor
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+LCBSZXRhaW5Q
dHI8V2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyPj4gVXNlck1lZGlhQ2hlY2tNYXA7
CisKK3N0YXRpYyBVc2VyTWVkaWFDaGVja01hcCYgdXNlck1lZGlhQ2hlY2tNYXAoKQoreworICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVc2VyTWVkaWFDaGVja01hcCwgcmVxdWVz
dHMsICgpKTsKKyAgICByZXR1cm4gcmVxdWVzdHM7Cit9CisKK3N0YXRpYyB2b2lkIEFkZFBlcm1p
c3Npb25DaGVja1RvTWFwKFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayogcmVxdWVzdCwgUmV0YWlu
UHRyPFdlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lcj4gbGlzdGVuZXIpCit7CisgICAg
dXNlck1lZGlhQ2hlY2tNYXAoKS5zZXQocmVxdWVzdCwgbGlzdGVuZXIpOworfQorCitzdGF0aWMg
dm9pZCBSZW1vdmVQZXJtaXNzaW9uQ2hlY2tGcm9tTWFwKFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ayogcmVxdWVzdCkKK3sKKyAgICB1c2VyTWVkaWFDaGVja01hcCgpLnJlbW92ZShyZXF1ZXN0KTsK
K30KKworCiBXZWJVc2VyTWVkaWFDbGllbnQ6OldlYlVzZXJNZWRpYUNsaWVudChXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC04OCwyMiArMTE3LDIxIEBA
IHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhp
czsKIH0KIAotdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnJlcXVlc3RVc2VyTWVkaWFBY2Nlc3Mo
UmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcHJwUmVxdWVzdCkKK3ZvaWQgV2ViVXNlck1lZGlhQ2xp
ZW50OjpyZXF1ZXN0VXNlck1lZGlhQWNjZXNzKFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgVXNlck1lZGlhUmVxdWVz
dCogcmVxdWVzdCA9ICZwcnBSZXF1ZXN0LmdldCgpOwogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxl
Y3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOmxp
c3RlbmVyOik7CiAgICAgaWYgKCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2Vs
ZWN0b3I6c2VsZWN0b3JdKSB7Ci0gICAgICAgIHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0Rlbmll
ZCgpOworICAgICAgICByZXF1ZXN0LnVzZXJNZWRpYUFjY2Vzc0RlbmllZCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgKmxpc3RlbmVy
ID0gW1tXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhVc2VyTWVkaWFS
ZXF1ZXN0OnJlcXVlc3RdOwotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dl
YlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46cmVx
dWVzdC0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIg
Kmxpc3RlbmVyID0gW1tXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhV
c2VyTWVkaWFSZXF1ZXN0OiZyZXF1ZXN0XTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3Jp
Z2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5
T3JpZ2luOnJlcXVlc3Quc2VjdXJpdHlPcmlnaW4oKV07CiAKICAgICBDYWxsVUlEZWxlZ2F0ZSht
X3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGxpc3RlbmVyKTsKLSAgICBBZGRSZXF1ZXN0
VG9NYXAocmVxdWVzdCwgbGlzdGVuZXIpOworICAgIEFkZFJlcXVlc3RUb1JlcXVlc3RNYXAoJnJl
cXVlc3QsIGxpc3RlbmVyKTsKIAogICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CiAgICAgW2xpc3Rl
bmVyIHJlbGVhc2VdOwpAQCAtMTIyLDYgKzE1MCwzOSBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dDo6Y2FuY2VsVXNlck1lZGlhCiAgICAgcmVxdWVzdHNNYXAucmVtb3ZlKGl0KTsKIH0KIAordm9p
ZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbihVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2smIHJlcXVlc3QpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworCisgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6Y2hlY2tQb2xpY3lG
b3JVc2VyTWVkaWFSZXF1ZXN0RnJvbU9yaWdpbjpsaXN0ZW5lcjopOworICAgIGlmICghW1ttX3dl
YlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgeworICAgICAg
ICByZXF1ZXN0LnNldEhhc1BlcnNpc3RlbnRQZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFdlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciAqbGlz
dGVuZXIgPSBbW1dlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s6JnJlcXVlc3RdOworICAgIFdlYlNlY3VyaXR5T3Jp
Z2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJD
b3JlU2VjdXJpdHlPcmlnaW46cmVxdWVzdC5zZWN1cml0eU9yaWdpbigpXTsKKworICAgIENhbGxV
SURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdpbiwgbGlzdGVuZXIpOworICAg
IEFkZFBlcm1pc3Npb25DaGVja1RvTWFwKCZyZXF1ZXN0LCBsaXN0ZW5lcik7CisKKyAgICBbd2Vi
T3JpZ2luIHJlbGVhc2VdOworICAgIFtsaXN0ZW5lciByZWxlYXNlXTsKKworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Cit9CisKKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNl
bFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjayhXZWJDb3JlOjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2smIHJlcXVlc3QpCit7CisgICAgVXNlck1lZGlhQ2hlY2tNYXAmIHJlcXVlc3RzTWFwID0gdXNl
ck1lZGlhQ2hlY2tNYXAoKTsKKyAgICBVc2VyTWVkaWFDaGVja01hcDo6aXRlcmF0b3IgaXQgPSBy
ZXF1ZXN0c01hcC5maW5kKCZyZXF1ZXN0KTsKKyAgICBpZiAoaXQgPT0gcmVxdWVzdHNNYXAuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFtpdC0+dmFsdWUgY2FuY2VsVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrXTsKKyAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOworfQogCiBAaW1wbGVt
ZW50YXRpb24gV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIKIApAQCAtMTU1LDcgKzIxNiw3IEBA
IC0gKHZvaWQpYWxsb3cKICAgICAKICAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRl
ZChfcmVxdWVzdC0+YWxsb3dlZEF1ZGlvRGV2aWNlVUlEKCksIF9yZXF1ZXN0LT5hbGxvd2VkVmlk
ZW9EZXZpY2VVSUQoKSk7CiAKLSAgICBSZW1vdmVSZXF1ZXN0RnJvbU1hcChfcmVxdWVzdC5nZXQo
KSk7CisgICAgUmVtb3ZlUmVxdWVzdEZyb21SZXF1ZXN0TWFwKF9yZXF1ZXN0LmdldCgpKTsKICNl
bmRpZgogfQogCkBAIC0xNjYsNyArMjI3LDcgQEAgLSAodm9pZClkZW55CiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7Ci0gICAgUmVt
b3ZlUmVxdWVzdEZyb21NYXAoX3JlcXVlc3QuZ2V0KCkpOworICAgIFJlbW92ZVJlcXVlc3RGcm9t
UmVxdWVzdE1hcChfcmVxdWVzdC5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTg0LDQgKzI0NSw2
NyBAQCAtIChCT09MKXNob3VsZENsZWFyQ2FjaGUKICNlbmRpZgogCiBAZW5kCisKKworQGltcGxl
bWVudGF0aW9uIFdlYlVzZXJNZWRpYVBvbGljeUNoZWNrZXJMaXN0ZW5lcgorCistIChpZClpbml0
V2l0aFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjazooUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2s+KXJlcXVlc3QKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3JlcXVl
c3QgPSByZXF1ZXN0OworICAgIHJldHVybiBzZWxmOworI2VuZGlmCit9CisKKy0gKHZvaWQpY2Fu
Y2VsVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICBpZiAoIV9yZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBfcmVxdWVzdCA9IG51
bGxwdHI7CisjZW5kaWYKKworfQorCistICh2b2lkKWFsbG93Cit7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBpZiAoIV9yZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBfcmVx
dWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24odHJ1ZSk7CisgICAgUmVtb3ZlUGVybWlz
c2lvbkNoZWNrRnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7CiAjZW5kaWYKK30KKworLSAodm9pZClk
ZW55Cit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAoIV9yZXF1ZXN0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBfcmVxdWVzdC0+c2V0SGFzUGVyc2lzdGVudFBlcm1pc3Npb24o
dHJ1ZSk7CisgICAgUmVtb3ZlUGVybWlzc2lvbkNoZWNrRnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7
CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpZGVueU9ubHlUaGlzUmVx
dWVzdAoreworfQorCistIChCT09MKXNob3VsZENsZWFyQ2FjaGUKK3sKKyAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjI0NQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK0BlbmQKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTM3NzkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1OCw2ICsyNTgsNyBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURl
bGVnYXRlUHJpdmF0CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAq
KW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVy
OwogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0
ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOworLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBjaGVja1BvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RG
cm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOwogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZWxlbWVudERpZEZvY3VzTm9kZTooRE9NTm9kZSAqKW5vZGU7CiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZWxlbWVudERpZEJsdXJOb2RlOihET01Ob2RlICop
bm9kZTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE5Mzg3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDE1LTEyLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gRXhwb3NlIG1lZGlhIGNhcHR1cmUg
ZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Npb25zIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjA4NworCisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciB0aGUgbmV3IHVzZXIgbWVkaWEgcGVybWlzc2lvbiBjaGVja2VyIHBhZ2UgVUkg
Y2xpZW50IG1ldGhvZC4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChX
VFI6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOiBBZGQgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmll
d1dpdGhPcHRpb25zKTogRGl0dG8uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKTogQ2xlYXIgbV91c2VyTWVkaWFPcmlnaW5QZXJtaXNz
aW9ucy4KKyAgICAgICAgKFdUUjo6b3JpZ2luVXNlclZpc2libGVOYW1lKTogTmV3LCBjcmVhdGUg
YSBzdHJpbmcgZm9yIHRoZSBvcmlnaW4uCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpo
YW5kbGVDaGVja09mVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6IFNldCB0aGUgV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tSZWYKKyAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHN0YXRl
IG9mIHRoZSBvcmlnaW4gcGVybWlzc2lvbiBtYXAuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6IFJlbWVtYmVyIGJvdGggdGhl
IG9yaWdpbiBhbmQgdGhlCisgICAgICAgICAgcmVxdWVzdCBzbyB3ZSBjYW4gdXBkYXRlIHRoZSBv
cmlnaW4gcGVybWlzc2lvbiBtYXAgaW4gZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RJZlBvc3NpYmxlLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRl
UG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJZlBvc3NpYmxlKTogVXBkYXRlIHRo
ZQorICAgICAgICAgIG9yaWdpbiBwZXJtaXNzaW9uIG1hcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisKIDIwMTUtMTItMDkgIEFha2FzaCBKYWluICA8YWFr
YXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBhdGxlYXN0IG9uZSBzaW11bGF0b3Ig
ZXZlbiBpZiBtYXggcHJvY2VzcyBsaW1pdCBpcyBsb3cKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTM3NzkpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr
NTEsOCBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5j
bHVkZSA8V2ViS2l0L1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+CiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMjAxLDkg
KzIwMywxNCBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlCiAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhbmRsZUdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QocGVybWlzc2lvblJlcXVlc3QpOwogfQogCi1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYsIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcGVybWlzc2lv
blJlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVm
IHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5oYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChw
ZXJtaXNzaW9uUmVxdWVzdCk7CisgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhbmRs
ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgcGVybWlzc2lvblJlcXVlc3QpOwor
fQorCitzdGF0aWMgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tSZWYgY2hlY2tSZXF1ZXN0LCBjb25zdCB2b2lkKikKK3sKKyAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFuZGxlQ2hlY2tPZlVzZXJNZWRpYVBlcm1pc3Npb25G
b3JPcmlnaW4ob3JpZ2luLCBjaGVja1JlcXVlc3QpOwogfQogCiBXS1BhZ2VSZWYgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFnZSwgV0tQYWdlQ29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFj
dGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKQEAgLTI3Nyw3ICsyODQsOCBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnCiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgMCwgLy8gcnVu
SmF2YVNjcmlwdEFsZXJ0CiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAg
ICAgIDAgIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlw
dFByb21wdAorICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCiAgICAg
fTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50
LmJhc2UpOwogICAgIApAQCAtNTQwLDYgKzU0OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZVdlYlZpZXdXaXRoT3AKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CiAgICAg
ICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCiAgICAgICAgIDAsIC8vIHJ1bkphdmFTY3Jp
cHRQcm9tcHQKKyAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luLAogICAg
IH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBh
Z2VVSUNsaWVudC5iYXNlKTsKIApAQCAtNzQ0LDYgKzc1Myw3IEBAIGJvb2wgVGVzdENvbnRyb2xs
ZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3QKIAogICAgIC8vIFJlc2V0IFVzZXJNZWRpYSBwZXJtaXNz
aW9ucy4KICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cy5jbGVhcigpOworICAgIG1f
dXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMgPSBudWxscHRyOwogICAgIG1faXNVc2VyTWVkaWFQ
ZXJtaXNzaW9uU2V0ID0gZmFsc2U7CiAgICAgbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2Vk
ID0gZmFsc2U7CiAKQEAgLTE2NDIsOSArMTY1MiwzOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRVc2VyTWVkaWFQZXJtaXNzCiAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RJZlBvc3NpYmxlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmhhbmRsZVVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYg
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCitzdGF0aWMgV0tTdHJpbmdSZWYgb3JpZ2luVXNl
clZpc2libGVOYW1lKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQoreworICAgIHN0ZDo6c3Ry
aW5nIGhvc3QgPSB0b1NURChhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4p
KSkuY19zdHIoKTsKKyAgICBzdGQ6OnN0cmluZyBwcm90b2NvbCA9IHRvU1REKGFkb3B0V0soV0tT
ZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChvcmlnaW4pKSkuY19zdHIoKTsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBwb3J0ID0gV0tTZWN1cml0eU9yaWdpbkdldFBvcnQob3JpZ2luKTsKKworICAgIFN0
cmluZyB1c2VyVmlzaWJsZU5hbWU7CisgICAgaWYgKHBvcnQpCisgICAgICAgIHVzZXJWaXNpYmxl
TmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIlczovLyVzOiVkIiwgcHJvdG9jb2wuY19zdHIoKSwgaG9z
dC5jX3N0cigpLCBwb3J0KTsKKyAgICBlbHNlCisgICAgICAgIHVzZXJWaXNpYmxlTmFtZSA9IFN0
cmluZzo6Zm9ybWF0KCIlczovLyVzIiwgcHJvdG9jb2wuY19zdHIoKSwgaG9zdC5jX3N0cigpKTsK
KworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyVmlzaWJsZU5h
bWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmhhbmRsZUNoZWNr
T2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
LCBjb25zdCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiYgY2hlY2tSZXF1ZXN0KQorewor
ICAgIGJvb2wgYWxsb3dlZCA9IGZhbHNlOworCisgICAgaWYgKG1fdXNlck1lZGlhT3JpZ2luUGVy
bWlzc2lvbnMpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG9yaWdpblN0cmlu
ZyA9IG9yaWdpblVzZXJWaXNpYmxlTmFtZShvcmlnaW4pOworICAgICAgICBXS0Jvb2xlYW5SZWYg
dmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9ucy5nZXQoKSwgb3JpZ2luU3RyaW5nLmdldCgp
KSk7CisgICAgICAgIGlmIChXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tCb29sZWFuR2V0VHlwZUlE
KCkpCisgICAgICAgICAgICBhbGxvd2VkID0gV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpOworICAg
IH0KKworICAgIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrU2V0SGFzUGVyc2lzdGVudFBlcm1p
c3Npb24oY2hlY2tSZXF1ZXN0LCBhbGxvd2VkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
aGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV0tTZWN1cml0eU9yaWdpblJlZiBvcmln
aW4sIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKLSAgICBtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cy5hcHBlbmQodXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihvcmlnaW4sIHJlcXVlc3QpKTsKICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdElmUG9zc2libGUoKTsKIH0KIApAQCAtMTY1Myw5ICsxNjkyLDE3IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclVzZXIKICAgICBpZiAoIW1faXNVc2Vy
TWVkaWFQZXJtaXNzaW9uU2V0KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIHJl
cXVlc3QgOiBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cykgewotICAgICAgICBXS1JldGFp
blB0cjxXS0FycmF5UmVmPiBhdWRpb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0QXVkaW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICBXS1JldGFpblB0
cjxXS0FycmF5UmVmPiB2aWRlb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0VmlkZW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkpOworICAgIGZvciAoYXV0byYgcGFpciA6
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0g
cGFpci5maXJzdC5nZXQoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gcGFpci5zZWNvbmQuZ2V0
KCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJRHMocmVxdWVzdCk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMocmVxdWVzdCk7CisKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG9yaWdpblN0cmluZyA9IGFkb3B0V0sob3JpZ2luVXNlclZp
c2libGVOYW1lKG9yaWdpbikpOworICAgICAgICBpZiAoIW1fdXNlck1lZGlhT3JpZ2luUGVybWlz
c2lvbnMpCisgICAgICAgICAgICBtX3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zID0gYWRvcHRX
SyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgICAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IGFsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShtX2lzVXNlck1lZGlh
UGVybWlzc2lvbkFsbG93ZWQpKTsKKyAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3VzZXJN
ZWRpYU9yaWdpblBlcm1pc3Npb25zLmdldCgpLCBvcmlnaW5TdHJpbmcuZ2V0KCksIGFsbG93ZWQu
Z2V0KCkpOwogCiAgICAgICAgIGlmIChtX2lzVXNlck1lZGlhUGVybWlzc2lvbkFsbG93ZWQgJiYg
KFdLQXJyYXlHZXRTaXplKHZpZGVvRGV2aWNlVUlEcy5nZXQoKSkgfHwgV0tBcnJheUdldFNpemUo
YXVkaW9EZXZpY2VVSURzLmdldCgpKSkpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB2aWRlb0RldmljZVVJRDsKQEAgLTE2NzAsMTAgKzE3MTcsMTAgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGF1ZGlvRGV2aWNlVUlEID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IiIpOwogCi0gICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVx
dWVzdC5nZXQoKSwgYXVkaW9EZXZpY2VVSUQuZ2V0KCksIHZpZGVvRGV2aWNlVUlELmdldCgpKTsK
KyAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0LCBh
dWRpb0RldmljZVVJRC5nZXQoKSwgdmlkZW9EZXZpY2VVSUQuZ2V0KCkpOwogCiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkocmVxdWVz
dC5nZXQoKSk7CisgICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShy
ZXF1ZXN0KTsKICAgICB9CiAgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMuY2xlYXIo
KTsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlz
aW9uIDE5Mzc3OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIE9CSkNfQ0xBU1MgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbjsKQEAgLTk1LDcgKzk2LDggQEAgcHVibGljOgogCiAgICAgLy8g
TWVkaWFTdHJlYW0uCiAgICAgdm9pZCBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGJvb2wpOwotICAg
IHZvaWQgaGFuZGxlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFJlZik7CisgICAgdm9pZCBoYW5kbGVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsK
KyAgICB2b2lkIGhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdLU2Vj
dXJpdHlPcmlnaW5SZWYsIGNvbnN0IFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmJik7CiAK
ICAgICAvLyBQb2xpY3kgZGVsZWdhdGUuCiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0
ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSk7CkBAIC0yODIsNyArMjg0LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wg
bV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvbkFsbG93ZWQ7CiAKLSAgICBWZWN0b3I8V0tSZXRhaW5Q
dHI8V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZj4+IG1fdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RzOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fdXNl
ck1lZGlhT3JpZ2luUGVybWlzc2lvbnM7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8
V0tSZXRhaW5QdHI8V0tTZWN1cml0eU9yaWdpblJlZj4sIFdLUmV0YWluUHRyPFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RSZWY+Pj4gUGVybWlzc2lvblJlcXVlc3RMaXN0OworICAgIFBlcm1p
c3Npb25SZXF1ZXN0TGlzdCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0czsKKwogICAgIGJv
b2wgbV9pc1VzZXJNZWRpYVBlcm1pc3Npb25TZXQ7CiAgICAgYm9vbCBtX2lzVXNlck1lZGlhUGVy
bWlzc2lvbkFsbG93ZWQ7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzc3OSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEyLTA5
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRp
YVN0cmVhbV0gRXhwb3NlIG1lZGlhIGNhcHR1cmUgZGV2aWNlcyBwZXJzaXN0ZW50IHBlcm1pc3Np
b25zIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MjA4NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVy
YXRlRGV2aWNlcy5odG1sOgorCiAyMDE1LTEyLTA4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgRG8gbm90IGluc2VydCBwb3NpdGlvbmVkIHJlbmRlcmVycyB0byBt
dWx0aXBsZSBnUG9zaXRpb25lZERlc2NlbmRhbnRzTWFwLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMt
ZW51bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Mzc3OSkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDE2ICs2LDM4IEBAIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyBp
cyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVt
ZXJhdGVEZXZpY2VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiAKKworKioqIENhbGxpbmcg
bWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2hlbiBwZXJzaXN0ZW50IGFjY2VzcyBIQVMg
Tk9UIGJlZW4gZ3JhbnRlZAorCitQQVNTIGNhcHR1cmVEZXZpY2VzLmxlbmd0aCBpcyBub24temVy
by4KKworUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVE
ZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMg
bm9uLW51bGwuCitQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgIiIKK1BBU1MgY2FwdHVyZURl
dmljZS5ncm91cElkIGlzIG5vbi1udWxsLgorCitQQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBu
b24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KK1BBU1Mg
Y2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJl
bCBpcyAiIgorUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCisKKworKioq
IENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2hlbiBwZXJzaXN0ZW50IGFj
Y2VzcyBIQVMgYmVlbiBncmFudGVkCisKIFBBU1MgY2FwdHVyZURldmljZXMubGVuZ3RoIGlzIG5v
bi16ZXJvLgogCiBQQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KIFBBU1MgY2Fw
dHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmljZS5sYWJl
bCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIKIFBBU1Mg
Y2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgogCiBQQVNTIGNhcHR1cmVEZXZpY2Uu
a2luZCBpcyBub24tbnVsbC4KIFBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVs
bC4KIFBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KK1BBU1MgY2FwdHVyZURl
dmljZS5sYWJlbCBpcyBub3QgIiIKIFBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1u
dWxsLgogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51
bWVyYXRlRGV2aWNlcy5odG1sCShyZXZpc2lvbiAxOTM3NzkpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTksNiArOSw3IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICB2YXIg
Y2FwdHVyZURldmljZXM7CiAgICAgICAgICAgICB2YXIgY2FwdHVyZURldmljZTsKKyAgICAgICAg
ICAgIHZhciBoYXZlUGVybWlzc2lvbjsKIAogICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3Rz
IE1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkiKTsKICAgICAgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKQEAgLTE3LDI1ICsxOCw1NCBAQAogICAgICAgICAgICAgc2hv
dWxkQmVUeXBlKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMiLCAiRnVu
Y3Rpb24iKTsKICAgICAgICAgICAgIGRlYnVnKCIiKTsKIAotICAgICAgICAgICAgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKLSAgICAgICAgICAgICAgICAudGhlbihm
dW5jdGlvbihkZXZpY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2VzID0g
ZGV2aWNlczsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJjYXB0dXJlRGV2
aWNlcy5sZW5ndGgiKTsKLSAgICAgICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VzLmZvckVhY2goZnVuY3Rpb24oZGV2aWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlID0gZGV2aWNlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmtpbmQiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5kZXZpY2VJZCIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmxh
YmVsIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNhcHR1cmVE
ZXZpY2UuZ3JvdXBJZCIpOworICAgICAgICAgICAgZnVuY3Rpb24gZW51bWVyYXRlKG5leHQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoYDxicj4qKiogQ2FsbGluZyBtZWRp
YURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aGVuIHBlcnNpc3RlbnQgYWNjZXNzIEhBUyAke2hh
dmVQZXJtaXNzaW9uID8gIiIgOiAiTk9UICJ9YmVlbiBncmFudGVkPGJyPmApOworICAgICAgICAg
ICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCisgICAgICAg
ICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKGRldmljZXMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhcHR1cmVEZXZpY2VzID0gZGV2aWNlczsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlTm9uWmVybygiY2FwdHVyZURldmljZXMubGVuZ3RoIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzLmZv
ckVhY2goZnVuY3Rpb24oZGV2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fw
dHVyZURldmljZSA9IGRldmljZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZU5vbk51bGwoImNhcHR1cmVEZXZpY2Uua2luZCIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5kZXZpY2VJZCIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5sYWJlbCIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlUGVybWlzc2lvbikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmVFcXVhbFRvU3RyaW5nKCJjYXB0
dXJlRGV2aWNlLmxhYmVsIiwgIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFbXB0eVN0cmluZygiY2Fw
dHVyZURldmljZS5sYWJlbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
Tm9uTnVsbCgiY2FwdHVyZURldmljZS5ncm91cElkIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobmV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAg
ICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoZXJyLm5hbWUgKyAiOiAiICsgZXJyLm1lc3NhZ2UpOwogICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVu
Y3Rpb24gZ3JhbnRQZXJtaXNzaW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0VXNlck1lZGlhKHth
dWRpbzp7fSwgdmlkZW86e319KQorICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rp
b24oc3RyZWFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0ZShudWxsKTsgICAg
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZChgbWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIGZhaWxl
ZCB3aXRoICR7ZXJyLm5hbWV9OiAke2Vyci5tZXNzYWdlfWApOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAg
ICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKGVyci5uYW1lICsgIjogIiArIGVyci5tZXNzYWdlKTsKLSAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGhhdmVQZXJtaXNzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBlbnVtZXJh
dGUoZ3JhbnRQZXJtaXNzaW9uKTsKIAogICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CiAgICAgICAgIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>