<?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>165476</bug_id>
          
          <creation_ts>2016-12-06 10:22:39 -0800</creation_ts>
          <short_desc>[MediaStream][Mac] Revoke sandbox extensions when capture ends</short_desc>
          <delta_ts>2017-01-12 10:40: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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1256857</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-06 10:22:39 -0800</bug_when>
    <thetext>Revoke sandbox extensions issued to the WebProcess when all capture sessions end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256927</commentid>
    <comment_count>1</comment_count>
      <attachid>296311</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-06 13:10:24 -0800</bug_when>
    <thetext>Created attachment 296311
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256932</commentid>
    <comment_count>2</comment_count>
      <attachid>296311</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-06 13:31:51 -0800</bug_when>
    <thetext>Comment on attachment 296311
Proposed patch.

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

I think some RefPtr&lt;&gt;s can and should be Ref&lt;&gt;s instead.
Otherwise lgtm

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:6425
&gt; +    if (!oldMediaStateHasActiveCapture &amp;&amp; newMediaStateHasActiveCapture) {
&gt; +        m_uiClient-&gt;didBeginCaptureSession();
&gt; +        m_userMediaPermissionRequestManager.startedCaptureSession();
&gt; +    }
&gt; +    if (oldMediaStateHasActiveCapture &amp;&amp; !newMediaStateHasActiveCapture) {
&gt; +        m_uiClient-&gt;didEndCaptureSession();
&gt; +        m_userMediaPermissionRequestManager.endedCaptureSession();
&gt; +    }

nit: else if (...)

&gt; Source/WebKit2/WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:59
&gt; +std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; MediaDeviceSandboxExtensions::operator[](size_t i)

Ref&lt;SandboxExtension&gt; ?

&gt; Source/WebKit2/WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:66
&gt; +const std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; MediaDeviceSandboxExtensions::operator[](size_t i) const

Ref&lt;SandboxExtension&gt; ?

&gt; Source/WebKit2/WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:46
&gt; +    std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; operator[](size_t i);
&gt; +    const std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; operator[](size_t i) const;

Ref&lt;SandboxExtension&gt; ?

&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:74
&gt; +    HashMap&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; m_userMediaDeviceSandboxExtensions;

Ref&lt;SandboxExtension&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256953</commentid>
    <comment_count>3</comment_count>
      <attachid>296311</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-06 14:04:38 -0800</bug_when>
    <thetext>Comment on attachment 296311
Proposed patch.

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

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:6425
&gt;&gt; +    }
&gt; 
&gt; nit: else if (...)

Fixed.

&gt;&gt; Source/WebKit2/WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:59
&gt;&gt; +std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; MediaDeviceSandboxExtensions::operator[](size_t i)
&gt; 
&gt; Ref&lt;SandboxExtension&gt; ?

That doesn&apos;t work because we need to call SandboxExtension.consume and revoke, but they are not const.

&gt;&gt; Source/WebKit2/WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:66
&gt;&gt; +const std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; MediaDeviceSandboxExtensions::operator[](size_t i) const
&gt; 
&gt; Ref&lt;SandboxExtension&gt; ?

Ditto.

&gt;&gt; Source/WebKit2/WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:46
&gt;&gt; +    const std::pair&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; operator[](size_t i) const;
&gt; 
&gt; Ref&lt;SandboxExtension&gt; ?

Ditto.

&gt;&gt; Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h:74
&gt;&gt; +    HashMap&lt;String, RefPtr&lt;SandboxExtension&gt;&gt; m_userMediaDeviceSandboxExtensions;
&gt; 
&gt; Ref&lt;SandboxExtension&gt; ?

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256955</commentid>
    <comment_count>4</comment_count>
      <attachid>296317</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-06 14:06:39 -0800</bug_when>
    <thetext>Created attachment 296317
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256972</commentid>
    <comment_count>5</comment_count>
      <attachid>296317</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-06 14:33:11 -0800</bug_when>
    <thetext>Comment on attachment 296317
Patch for landing.

Clearing flags on attachment: 296317

Committed r209422: &lt;http://trac.webkit.org/changeset/209422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256973</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-06 14:33:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257108</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-12-06 17:25:47 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 296317 [details]
&gt; Patch for landing.
&gt; 
&gt; Clearing flags on attachment: 296317
&gt; 
&gt; Committed r209422: &lt;http://trac.webkit.org/changeset/209422&gt;

This change appears to have caused assertion failures for 8 API tests:

https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20WK1%20%28Tests%29/builds/10154

ASSERTION FAILED: stateMap().contains(&amp;proxy.page().process())
/Volumes/Data/slave/elcapitan-debug/build/Source/WebKit2/UIProcess/UserMediaProcessManager.cpp(163) : void WebKit::UserMediaProcessManager::endedCaptureSession(WebKit::UserMediaPermissionRequestManagerProxy &amp;)
1   0x105453d60 WTFCrash
2   0x107edf300 WebKit::UserMediaProcessManager::endedCaptureSession(WebKit::UserMediaPermissionRequestManagerProxy&amp;)
3   0x107edf19e WebKit::UserMediaProcessManager::removeUserMediaPermissionRequestManagerProxy(WebKit::UserMediaPermissionRequestManagerProxy&amp;)
4   0x108091c55 WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy()
5   0x108091ca5 WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy()
6   0x10835db7c WebKit::WebPageProxy::~WebPageProxy()
7   0x1083613a5 WebKit::WebPageProxy::~WebPageProxy()
8   0x10865e25d -[WKObject release]
9   0x107b8536d API::Object::deref()
10  0x10815b5e0 WTF::Ref&lt;WebKit::WebPageProxy&gt;::~Ref()
11  0x108159a95 WTF::Ref&lt;WebKit::WebPageProxy&gt;::~Ref()
12  0x1085db3b2 WebKit::WebViewImpl::~WebViewImpl()
13  0x1085db4d5 WebKit::WebViewImpl::~WebViewImpl()
14  0x1086bb236 -[WKView dealloc]
15  0x7fff95081ac4 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
16  0x7fff8beaec12 _CFAutoreleasePoolPop
17  0x7fff8762f9ea -[NSAutoreleasePool drain]
18  0x103babf4c main
19  0x7fff8febf5ad start
20  0x2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257181</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-12-06 21:32:27 -0800</bug_when>
    <thetext>Reverted r209422 for reason:

This change caused assertion failures during API tests.

Committed r209449: &lt;http://trac.webkit.org/changeset/209449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257371</commentid>
    <comment_count>9</comment_count>
      <attachid>296423</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-07 14:24:49 -0800</bug_when>
    <thetext>Created attachment 296423
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257402</commentid>
    <comment_count>10</comment_count>
      <attachid>296423</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-07 15:49:50 -0800</bug_when>
    <thetext>Comment on attachment 296423
Updated patch.

I looked at the diff between the two patches. New one&apos;s fine.

Get the bots green. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257419</commentid>
    <comment_count>11</comment_count>
      <attachid>296433</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-12-07 16:10:03 -0800</bug_when>
    <thetext>Created attachment 296433
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257522</commentid>
    <comment_count>12</comment_count>
      <attachid>296433</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-07 18:26:26 -0800</bug_when>
    <thetext>Comment on attachment 296433
Patch for landing.

Clearing flags on attachment: 296433

Committed r209512: &lt;http://trac.webkit.org/changeset/209512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266199</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-12 10:40:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/29993828&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296311</attachid>
            <date>2016-12-06 13:10:24 -0800</date>
            <delta_ts>2016-12-06 14:06:39 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>revoke_sandbox_extensions_patch_1.txt</filename>
            <type>text/plain</type>
            <size>41158</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQwNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE2LTEyLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBSZXZva2Ugc2FuZGJveCBleHRlbnNpb25zIHdoZW4gY2FwdHVyZSBlbmRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0NzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRyYWNrIG1l
ZGlhIGNhcHR1cmUgYnkgcHJvY2VzcyBzbyBpdCBpcyBwb3NzaWJsZSB0byByZXZva2UgdGhlIHNh
bmRib3ggZXh0ZW5zaW9ucyBpc3N1ZWQgdG8KKyAgICAgICAgYSB3ZWIgcHJvY2VzcyB3aGVuIGNh
cHR1cmUgc3RvcHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBmaWxlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6IFJlZ2lz
dGVyCisgICAgICAgICAgd2l0aCBwcm9jZXNzIG1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp+VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCk6IE1vdmUg
c2FuZGJveCAKKyAgICAgICAgICBleHRlbnNpb24gY29kZSB0byB0aGUgcHJvY2VzcyBtYW5hZ2Vy
LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6c3RvcENhcHR1cmUpOiBOZXcuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpzdGFydGVkQ2FwdHVyZVNlc3Npb24pOiBOZXcsIHJlcG9y
dCBzdGF0ZQorICAgICAgICAgIGNoYW5nZSB0byB0aGUgcHJvY2VzcyBtYW5hZ2VyLgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW5kZWRD
YXB0dXJlU2Vzc2lvbik6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NT
dGF0ZTo6UHJvY2Vzc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlOjptYW5h
Z2Vycyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6c2FuZGJveEV4dGVuc2lvbnNH
cmFudGVkKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlOjpzZXRTYW5kYm94RXh0ZW5z
aW9uc0dyYW50ZWQpOgorICAgICAgICAoV2ViS2l0OjpzdGF0ZU1hcCk6CisgICAgICAgIChXZWJL
aXQ6OnByb2Nlc3NTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6YWRkUmVx
dWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGU6OnJlbW92ZVJlcXVl
c3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNp
bmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjphZGRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
Ojp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6c3RhcnRlZENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OmVuZGVkQ2FwdHVyZVNlc3Npb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oOiBBZGRlZC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKTogUmVwb3J0IGNhcHR1cmUgc3RhdGUgY2hhbmdlcyB0
byB0aGUgcmVxdWVzdAorICAgICAgICAgIG1hbmFnZXIgcHJveHkuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6Ok1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9uczo6c2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmg6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6On5Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIpOiBTYW5kYm94IGV4dGVuc2lvbgorICAgICAgICAgIGlzIG5v
dyBpbiBhIEhhc2hNYXAsIG5vdCBhIFZlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKTogUmVjb3JkCisgICAgICAgICAgSURzIHdpdGggZXh0ZW5zaW9ucyBzbyB0aGV5IGNh
biBiZSByZXZva2VkIGxhdGVyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OnJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKTog
TmV3LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OmdyYW50VXNlck1lZGlhRGV2aWNlc1NhbmRib3hFeHRlbnNpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdyYW50VXNlck1lZGlh
RGV2aWNlc1NhbmRib3hFeHRlbnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTYtMTItMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBEb24ndCBtZW1jcHkgb3V0IG9mIGxpbmUgZGF0YQpJbmRleDog
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDcgQEAgc2V0KFdlYktp
dDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5j
cHAKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCisg
ICAgVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CiAgICAgVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNwcApAQCAtNTc3LDYgKzU3OCw3IEBAIHNl
dChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKIAorICAgIFdlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKICAgICBXZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogICAgIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDIwOTEzNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpA
QCAtOTIsNiArOTMsMTIgQEAgRnJhbWVBdXRob3JpemF0aW9uU3RhdGUmIFVzZXJNZWRpYVBlcm1p
cwogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFn
ZShwYWdlKQogeworICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5hZGRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSgqdGhpcyk7Cit9CisKK1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp+VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkoKQoreworICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5n
bGV0b24oKS5yZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSgqdGhp
cyk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Omlu
dmFsaWRhdGVSZXF1ZXN0cygpCkBAIC0xOTcsMjkgKzIwNCw3IEBAIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHIKICAgICBmYW1lU3RhdGUuc2V0SGFzUGVybWlzc2lvblRv
VXNlQ2FwdHVyZURldmljZShhdWRpb0RldmljZVVJRCwgdHJ1ZSk7CiAgICAgZmFtZVN0YXRlLnNl
dEhhc1Blcm1pc3Npb25Ub1VzZUNhcHR1cmVEZXZpY2UodmlkZW9EZXZpY2VVSUQsIHRydWUpOwog
Ci0gICAgc2l6ZV90IGV4dGVuc2lvbkNvdW50ID0gMDsKLSAgICB1bnNpZ25lZCByZXF1aXJlZEV4
dGVuc2lvbnMgPSBTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6Ok5vbmU7Ci0gICAgaWYgKCFhdWRp
b0RldmljZVVJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zIHw9IFNh
bmRib3hFeHRlbnNpb25zR3JhbnRlZDo6QXVkaW87Ci0gICAgICAgIGV4dGVuc2lvbkNvdW50Kys7
Ci0gICAgfQotICAgIGlmICghdmlkZW9EZXZpY2VVSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJl
cXVpcmVkRXh0ZW5zaW9ucyB8PSBTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OlZpZGVvOwotICAg
ICAgICBleHRlbnNpb25Db3VudCsrOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGN1cnJlbnRFeHRl
bnNpb25zID0gbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOwotICAgIGlmICghKHJlcXVp
cmVkRXh0ZW5zaW9ucyAmIGN1cnJlbnRFeHRlbnNpb25zKSkgewotICAgICAgICBBU1NFUlQoZXh0
ZW5zaW9uQ291bnQpOwotICAgICAgICBtX3BhZ2VTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQgPSBy
ZXF1aXJlZEV4dGVuc2lvbnMgfCBjdXJyZW50RXh0ZW5zaW9uczsKLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKLSAgICAgICAgaGFuZGxlcy5hbGxvY2F0ZShl
eHRlbnNpb25Db3VudCk7Ci0gICAgICAgIGlmICghdmlkZW9EZXZpY2VVSUQuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVu
c2lvbigiY29tLmFwcGxlLndlYmtpdC5jYW1lcmEiLCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRd
KTsKLSAgICAgICAgaWYgKCFhdWRpb0RldmljZVVJRC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBw
bGUud2Via2l0Lm1pY3JvcGhvbmUiLCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKTsKLSAgICAg
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHcmFudFVzZXJNZWRp
YURldmljZXNTYW5kYm94RXh0ZW5zaW9uKGhhbmRsZXMpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAg
IH0KKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkud2lsbENyZWF0ZU1l
ZGlhU3RyZWFtKCp0aGlzLCAhYXVkaW9EZXZpY2VVSUQuaXNFbXB0eSgpLCAhdmlkZW9EZXZpY2VV
SUQuaXNFbXB0eSgpKTsKIAogICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1c2VyTWVkaWFJRCwgYXVkaW9EZXZpY2VV
SUQsIHZpZGVvRGV2aWNlVUlEKSwgbV9wYWdlLnBhZ2VJRCgpKTsKICNlbHNlCkBAIC0zNDIsNCAr
MzI3LDM0IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHIKICNlbmRp
ZgogfQogCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpzdG9w
Q2FwdHVyZSgpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fcGFnZS5zZXRNdXRlZChXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpDYXB0dXJlRGV2aWNlc0FyZU11dGVkKTsKKyNlbmRpZgorfQorCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpzdGFydGVkQ2FwdHVy
ZVNlc3Npb24oKQoreworICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdl
cjo6c2luZ2xldG9uKCkuc3RhcnRlZENhcHR1cmVTZXNzaW9uKCp0aGlzKTsKKyNlbmRpZgorfQor
Cit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbmRlZENhcHR1
cmVTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbigpLmVuZGVkQ2FwdHVyZVNlc3Npb24oKnRoaXMpOworI2VuZGlmCit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgJKHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw2ICs1Myw5IEBAIHByaXZhdGU6CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgflVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5KCk7CisKKyAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2U7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAK
QEAgLTY4LDYgKzcxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDYWNoZWRTdGF0ZSgp
OwogCisgICAgdm9pZCBzdGFydGVkQ2FwdHVyZVNlc3Npb24oKTsKKyAgICB2b2lkIGVuZGVkQ2Fw
dHVyZVNlc3Npb24oKTsKKyAgICB2b2lkIHN0b3BDYXB0dXJlKCk7CisKIHByaXZhdGU6CiAgICAg
UmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0
X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyZ1c2VyTWVkaWFE
b2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9wTGV2ZWxEb2N1bWVudE9y
aWdpbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOwogICAgIHZvaWQgZGVueVJlcXVl
c3QodWludDY0X3QgdXNlck1lZGlhSUQsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbiwgY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3Ry
YWludCk7CkBAIC03NiwxNCArODMsNiBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+PiBtX3BlbmRpbmdVc2Vy
TWVkaWFSZXF1ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk+PiBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0czsKLQotICAgIGVudW0g
U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkIHsKLSAgICAgICAgTm9uZSA9IDAsCi0gICAgICAgIFZp
ZGVvID0gMSA8PCAwLAotICAgICAgICBBdWRpbyA9IDEgPDwgMQotICAgIH07Ci0gICAgdW5zaWdu
ZWQgbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOwotCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjp1bmlxdWVfcHRyPEZyYW1lQXV0aG9yaXphdGlvblN0YXRlPj4gbV9mcmFtZVN0YXRl
czsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
YXVkaW9FeHRlbnNpb25QYXRoID0gImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9uZSI7CitzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgdmlkZW9FeHRlbnNpb25QYXRoID0gImNvbS5hcHBsZS53ZWJr
aXQuY2FtZXJhIjsKKworY2xhc3MgUHJvY2Vzc1N0YXRlIHsKK3B1YmxpYzoKKyAgICBQcm9jZXNz
U3RhdGUoKSB7IH0KKyAgICBQcm9jZXNzU3RhdGUoY29uc3QgUHJvY2Vzc1N0YXRlJikgPSBkZWxl
dGU7CisKKyAgICB2b2lkIGFkZFJlcXVlc3RNYW5hZ2VyKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Jik7CisgICAgdm9pZCByZW1vdmVSZXF1ZXN0TWFuYWdlcihVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAgIFZlY3RvcjxVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSo+JiBtYW5hZ2VycygpIHsgcmV0dXJuIG1fbWFu
YWdlcnM7IH0KKworICAgIGVudW0gU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkIHsKKyAgICAgICAg
Tm9uZSA9IDAsCisgICAgICAgIFZpZGVvID0gMSA8PCAwLAorICAgICAgICBBdWRpbyA9IDEgPDwg
MQorICAgIH07CisKKyAgICBTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQgc2FuZGJveEV4dGVuc2lv
bnNHcmFudGVkKCkgeyByZXR1cm4gbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOyB9Cisg
ICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQodW5zaWduZWQgZ3JhbnRlZCkgeyBt
X3BhZ2VTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQgPSBzdGF0aWNfY2FzdDxTYW5kYm94RXh0ZW5z
aW9uc0dyYW50ZWQ+KGdyYW50ZWQpOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Kj4gbV9tYW5hZ2VyczsKKyAgICBTYW5kYm94
RXh0ZW5zaW9uc0dyYW50ZWQgbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkIHsgU2FuZGJv
eEV4dGVuc2lvbnNHcmFudGVkOjpOb25lIH07Cit9OworCitzdGF0aWMgSGFzaE1hcDxXZWJQcm9j
ZXNzUHJveHkqLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1N0YXRlPj4mIHN0YXRlTWFwKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQcm9jZXNzUHJveHkqLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc1N0YXRlPj4+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQorCitz
dGF0aWMgUHJvY2Vzc1N0YXRlJiBwcm9jZXNzU3RhdGUoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQoreworICAgIGF1dG8mIHN0YXRlID0gc3RhdGVNYXAoKS5hZGQoJnByb2Nlc3MsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoc3RhdGUpCisgICAgICAgIHJldHVybiAqc3RhdGU7
CisKKyAgICBzdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1N0YXRlPigpOworICAgIHJl
dHVybiAqc3RhdGU7Cit9CisKK3ZvaWQgUHJvY2Vzc1N0YXRlOjphZGRSZXF1ZXN0TWFuYWdlcihV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCit7CisgICAgQVNT
RVJUKCFtX21hbmFnZXJzLmNvbnRhaW5zKCZwcm94eSkpOworICAgIG1fbWFuYWdlcnMuYXBwZW5k
KCZwcm94eSk7Cit9CisKK3ZvaWQgUHJvY2Vzc1N0YXRlOjpyZW1vdmVSZXF1ZXN0TWFuYWdlcihV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCit7CisgICAgQVNT
RVJUKG1fbWFuYWdlcnMuY29udGFpbnMoJnByb3h5KSk7CisgICAgbV9tYW5hZ2Vycy5yZW1vdmVG
aXJzdE1hdGNoaW5nKFsmcHJveHldKGF1dG8gb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVy
ID09ICZwcm94eTsKKyAgICB9KTsKK30KKworVXNlck1lZGlhUHJvY2Vzc01hbmFnZXImIFVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdl
cjsKK30KKwordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YWRkVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkmIHByb3h5KQoreworICAgIHByb2Nlc3NTdGF0ZShwcm94eS5wYWdlKCkucHJvY2Vzcygp
KS5hZGRSZXF1ZXN0TWFuYWdlcihwcm94eSk7Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXI6OnJlbW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBwcm94eSkKK3sKKyAgICBlbmRlZENh
cHR1cmVTZXNzaW9uKHByb3h5KTsKKworICAgIGF1dG8mIHN0YXRlID0gcHJvY2Vzc1N0YXRlKHBy
b3h5LnBhZ2UoKS5wcm9jZXNzKCkpOworICAgIHN0YXRlLnJlbW92ZVJlcXVlc3RNYW5hZ2VyKHBy
b3h5KTsKKyAgICBpZiAoc3RhdGUubWFuYWdlcnMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byBpdCA9IHN0YXRlTWFwKCkuZmluZCgmcHJveHkucGFnZSgpLnByb2Nlc3MoKSk7CisgICAgICAg
IHN0YXRlTWFwKCkucmVtb3ZlKGl0KTsKKyAgICB9Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSYgcHJveHksIGJvb2wgd2l0aEF1ZGlvLCBib29sIHdpdGhWaWRlbykKK3sK
KyAgICBBU1NFUlQoc3RhdGVNYXAoKS5jb250YWlucygmcHJveHkucGFnZSgpLnByb2Nlc3MoKSkp
OworCisgICAgYXV0byYgc3RhdGUgPSBwcm9jZXNzU3RhdGUocHJveHkucGFnZSgpLnByb2Nlc3Mo
KSk7CisgICAgc2l6ZV90IGV4dGVuc2lvbkNvdW50ID0gMDsKKyAgICB1bnNpZ25lZCByZXF1aXJl
ZEV4dGVuc2lvbnMgPSBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6Tm9u
ZTsKKworICAgIGlmICh3aXRoQXVkaW8pIHsKKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zIHw9
IFByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpBdWRpbzsKKyAgICAgICAg
ZXh0ZW5zaW9uQ291bnQrKzsKKyAgICB9CisgICAgaWYgKHdpdGhWaWRlbykgeworICAgICAgICBy
ZXF1aXJlZEV4dGVuc2lvbnMgfD0gUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50
ZWQ6OlZpZGVvOworICAgICAgICBleHRlbnNpb25Db3VudCsrOworICAgIH0KKworICAgIHVuc2ln
bmVkIGN1cnJlbnRFeHRlbnNpb25zID0gc3RhdGUuc2FuZGJveEV4dGVuc2lvbnNHcmFudGVkKCk7
CisgICAgaWYgKCEocmVxdWlyZWRFeHRlbnNpb25zICYgY3VycmVudEV4dGVuc2lvbnMpKSB7Cisg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZXM7CisgICAgICAgIGhh
bmRsZXMuYWxsb2NhdGUoZXh0ZW5zaW9uQ291bnQpOworCisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGlkczsKKyAgICAgICAgaWRzLnJlc2VydmVDYXBhY2l0eShleHRlbnNpb25Db3VudCk7CisKKyAg
ICAgICAgaWYgKHdpdGhBdWRpbyAmJiByZXF1aXJlZEV4dGVuc2lvbnMgJiBQcm9jZXNzU3RhdGU6
OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6QXVkaW8pIHsKKyAgICAgICAgICAgIGlmIChTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKGF1ZGlvRXh0ZW5z
aW9uUGF0aCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBp
ZHMuYXBwZW5kKEFTQ0lJTGl0ZXJhbChhdWRpb0V4dGVuc2lvblBhdGgpKTsKKyAgICAgICAgICAg
ICAgICBjdXJyZW50RXh0ZW5zaW9ucyB8PSBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25z
R3JhbnRlZDo6QXVkaW87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
d2l0aFZpZGVvICYmIHJlcXVpcmVkRXh0ZW5zaW9ucyAmIFByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4
dGVuc2lvbnNHcmFudGVkOjpWaWRlbykgeworICAgICAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24odmlkZW9FeHRlbnNpb25QYXRoLCBo
YW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkgeworICAgICAgICAgICAgICAgIGlkcy5hcHBlbmQo
QVNDSUlMaXRlcmFsKHZpZGVvRXh0ZW5zaW9uUGF0aCkpOworICAgICAgICAgICAgICAgIGN1cnJl
bnRFeHRlbnNpb25zIHw9IFByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpW
aWRlbzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0YXRlLnNldFNhbmRi
b3hFeHRlbnNpb25zR3JhbnRlZChjdXJyZW50RXh0ZW5zaW9ucyk7CisgICAgICAgIHByb3h5LnBh
Z2UoKS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R3JhbnRVc2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGlkcywgV1RG
TW92ZShoYW5kbGVzKSkpLCBwcm94eS5wYWdlKCkucGFnZUlEKCkpOworICAgIH0KK30KKwordm9p
ZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c3RhcnRlZENhcHR1cmVTZXNzaW9uKFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBwcm94eSkKK3sKKyAgICBBU1NFUlQoc3Rh
dGVNYXAoKS5jb250YWlucygmcHJveHkucGFnZSgpLnByb2Nlc3MoKSkpOworfQorCit2b2lkIFVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjplbmRlZENhcHR1cmVTZXNzaW9uKFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBwcm94eSkKK3sKKyAgICBBU1NFUlQoc3RhdGVNYXAo
KS5jb250YWlucygmcHJveHkucGFnZSgpLnByb2Nlc3MoKSkpOworCisgICAgYXV0byYgc3RhdGUg
PSBwcm9jZXNzU3RhdGUocHJveHkucGFnZSgpLnByb2Nlc3MoKSk7CisgICAgYm9vbCBoYXNBdWRp
b0NhcHR1cmUgPSBmYWxzZTsKKyAgICBib29sIGhhc1ZpZGVvQ2FwdHVyZSA9IGZhbHNlOworICAg
IGZvciAoYXV0byYgbWFuYWdlciA6IHN0YXRlLm1hbmFnZXJzKCkpIHsKKyAgICAgICAgaWYgKG1h
bmFnZXItPnBhZ2UoKS5oYXNBY3RpdmVBdWRpb1N0cmVhbSgpKQorICAgICAgICAgICAgaGFzQXVk
aW9DYXB0dXJlID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1hbmFnZXItPnBhZ2UoKS5oYXNBY3RpdmVW
aWRlb1N0cmVhbSgpKQorICAgICAgICAgICAgaGFzVmlkZW9DYXB0dXJlID0gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAoaGFzQXVkaW9DYXB0dXJlICYmIGhhc1ZpZGVvQ2FwdHVyZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1zOworICAgIHVuc2lnbmVkIGN1cnJl
bnRFeHRlbnNpb25zID0gc3RhdGUuc2FuZGJveEV4dGVuc2lvbnNHcmFudGVkKCk7CisgICAgaWYg
KCFoYXNBdWRpb0NhcHR1cmUgJiYgY3VycmVudEV4dGVuc2lvbnMgJiBQcm9jZXNzU3RhdGU6OlNh
bmRib3hFeHRlbnNpb25zR3JhbnRlZDo6QXVkaW8pIHsKKyAgICAgICAgcGFyYW1zLmFwcGVuZChB
U0NJSUxpdGVyYWwoYXVkaW9FeHRlbnNpb25QYXRoKSk7CisgICAgICAgIGN1cnJlbnRFeHRlbnNp
b25zICY9IH5Qcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6QXVkaW87Cisg
ICAgfQorICAgIGlmICghaGFzVmlkZW9DYXB0dXJlICYmIGN1cnJlbnRFeHRlbnNpb25zICYgUHJv
Y2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OlZpZGVvKSB7CisgICAgICAgIHBh
cmFtcy5hcHBlbmQoQVNDSUlMaXRlcmFsKHZpZGVvRXh0ZW5zaW9uUGF0aCkpOworICAgICAgICBj
dXJyZW50RXh0ZW5zaW9ucyAmPSB+UHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50
ZWQ6OlZpZGVvOworICAgIH0KKworICAgIGlmIChwYXJhbXMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGF0ZS5zZXRTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQoY3VycmVudEV4
dGVuc2lvbnMpOworICAgIHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMocGFyYW1zKSwgcHJv
eHkucGFnZSgpLnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2Vz
c1Byb3h5OworCitjbGFzcyBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlciB7CitwdWJsaWM6CisKKyAg
ICBzdGF0aWMgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgdm9p
ZCBhZGRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkmKTsKKworICAgIHZvaWQgd2lsbENyZWF0ZU1lZGlhU3RyZWFtKFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgYm9vbCB3aXRoQXVkaW8sIGJvb2wgd2l0aFZp
ZGVvKTsKKworICAgIHZvaWQgc3RhcnRlZENhcHR1cmVTZXNzaW9uKFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CisgICAgdm9pZCBlbmRlZENhcHR1cmVTZXNzaW9uKFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjA5MTM2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MDksMTUgKzY0MDksMjIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbgogCiAgICAgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZE1lZGlhU3RhdGVIYXNBY3RpdmVD
YXB0dXJlID0gbV9tZWRpYVN0YXRlICYgKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2
ZUF1ZGlvQ2FwdHVyZURldmljZSB8IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZp
ZGVvQ2FwdHVyZURldmljZSk7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG5ld01lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlID0gc3RhdGUgJiAoV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlIHwgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlKTsKLSAgICBpZiAoIW9sZE1l
ZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmIG5ld01lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJl
KQotICAgICAgICBtX3VpQ2xpZW50LT5kaWRCZWdpbkNhcHR1cmVTZXNzaW9uKCk7Ci0gICAgaWYg
KG9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmICFuZXdNZWRpYVN0YXRlSGFzQWN0aXZl
Q2FwdHVyZSkKLSAgICAgICAgbV91aUNsaWVudC0+ZGlkRW5kQ2FwdHVyZVNlc3Npb24oKTsKIAog
ICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBwbGF5aW5nTWVkaWFNYXNrID0gTWVk
aWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdWaWRl
bzsKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgb2xkU3RhdGUgPSBtX21lZGlh
U3RhdGU7CiAgICAgbV9tZWRpYVN0YXRlID0gc3RhdGU7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIGlmICghb2xkTWVkaWFTdGF0ZUhhc0FjdGl2ZUNhcHR1cmUgJiYgbmV3TWVkaWFT
dGF0ZUhhc0FjdGl2ZUNhcHR1cmUpIHsKKyAgICAgICAgbV91aUNsaWVudC0+ZGlkQmVnaW5DYXB0
dXJlU2Vzc2lvbigpOworICAgICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5zdGFydGVkQ2FwdHVyZVNlc3Npb24oKTsKKyAgICB9CisgICAgaWYgKG9sZE1lZGlhU3RhdGVI
YXNBY3RpdmVDYXB0dXJlICYmICFuZXdNZWRpYVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSkgeworICAg
ICAgICBtX3VpQ2xpZW50LT5kaWRFbmRDYXB0dXJlU2Vzc2lvbigpOworICAgICAgICBtX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5lbmRlZENhcHR1cmVTZXNzaW9uKCk7CisgICAg
fQorI2VuZGlmCisKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6Oklz
QXVkaWJsZSk7CiAKICAgICBwbGF5aW5nTWVkaWFNYXNrIHw9IE1lZGlhUHJvZHVjZXI6Okhhc0Fj
dGl2ZUF1ZGlvQ2FwdHVyZURldmljZSB8IE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2Fw
dHVyZURldmljZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJ
KHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0OCw2ICsxMDQ4LDggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc1BsYXlpbmdBdWRpbygpIGNvbnN0IHsgcmV0dXJuICEhKG1fbWVkaWFTdGF0ZSAmIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvKTsgfQogICAgIHZvaWQgaXNQbGF5
aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
LCB1aW50NjRfdCk7CisgICAgYm9vbCBoYXNBY3RpdmVBdWRpb1N0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVkaWFTdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlv
Q2FwdHVyZURldmljZTsgfQorICAgIGJvb2wgaGFzQWN0aXZlVmlkZW9TdHJlYW0oKSBjb25zdCB7
IHJldHVybiBtX21lZGlhU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVW
aWRlb0NhcHR1cmVEZXZpY2U7IH0KICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0
YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRlOyB9
CiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDkxMzYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDkgQEAKIAkJMDcyOTdGOUYxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaCAqLzsgfTsKIAkJMDcyOTdGQTIxQzE4NkFEQjAwM0YwNzM1IC8qIFdL
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5jcHAgKi87IH07CiAJCTA3Mjk3RkEzMUMxODZBREIwMDNGMDczNSAv
KiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGQTExQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMDc0RTc1RkQxREYyMjExNTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NEU3NUZDMURGMjAwMjQwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5j
cHAgKi87IH07CisJCTA3NEU3NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87
IH07CisJCTA3NEU3NjAyMURGNzA3QkUwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NEU3NjAwMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmNwcCAqLzsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsK
IAkJMDdBNUVCQkIxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQjkxQzdCQTQz
RTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovOyB9OwogCQkwN0E1RUJCQzFDN0JB
NDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJh
bWVIYW5kbGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjA1Miw2ICsyMDU1LDEwIEBACiAJCTA3Mjk3RjlEMUMxN0JCRUEwMDNGMDczNSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzI5N0ZBMTFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0RTc1RkIxREYxRkQx
MzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3NEU3NUZDMURGMjAwMjQwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
NEU3NjAwMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzRFNzYwMTFE
RjcwNzVEMDBEMzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAv
KiBBUElDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzZFODg0RjFBMTNDQkM2MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDUyLDYgKzU0NTksOCBAQAogCQk0QTQxMEY0
MTE5QUY3QjI3MDAyRUJBQjUgLyogTWVkaWFTdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3NEU3NjAwMURGNzA3NUQwMEQzMThFQyAvKiBNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCAqLywKKwkJCQkwNzRFNzYwMTFERjcwNzVEMDBE
MzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oICovLAogCQkJCTRBNDEwRjQy
MTlBRjdCMjcwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3Bw
ICovLAogCQkJCTRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaCAqLywKIAkJCSk7CkBAIC02MTMyLDYgKzYxNDEsOCBAQAogCQlCQzAz
MkRDMzEwRjQzODI2MDA1OEMxNUEgLyogVUlQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzRFNzVGQzFERjIwMDI0MDBEMzE4RUMgLyogVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwICovLAorCQkJCTA3NEU3NUZCMURGMUZEMTMwMEQzMThF
QyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oICovLAogCQkJCUJDMDMyREM0MTBGNDM4N0Mw
MDU4QzE1QSAvKiBBUEkgKi8sCiAJCQkJMUFCMUY3NzYxRDFCMzBBOTAwN0M5QkQxIC8qIEFwcGxl
UGF5ICovLAogCQkJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAq
LywKQEAgLTgyNjcsNiArODI3OCw3IEBACiAJCQkJNTMyMTU5NTUxREJBRTcyOTAwNTRBQTNDIC8q
IE5ldHdvcmtTZXNzaW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTRGMThCQkUw
NDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQzhCMzc0MTI1RkI2OTAwMERFNDZBNCAvKiBXS0dlb21ldHJ5LmggaW4gSGVhZGVycyAq
LywKKwkJCQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDIyRjhCMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hp
c3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2MkU3MzEyMTQzMDQ3
QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTBB
RTBEMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC05MzI5LDYgKzkzNDEsNyBAQAogCQkJCTBGNUUyMDAzMThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMDQ5QjMxODBD
Q0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDg3MTAxNjE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc0RTc1RkQxREYyMjExNTAwRDMxOEVDIC8qIFVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODk0OUYwMTgy
MDQ0RjYwMEU4OThBQSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNDNDNBQkExMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9w
dXBNZW51RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQjdEMjExRTY1MUUyMDBEQjEz
NzEgLyogUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTc5MSw2ICs5ODA0LDcgQEAKIAkJ
CQkxQTI1NkUzNzE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQzQTY1REExQTdDM0ExRjAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvbkFj
dGlvblJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzBGMzRBMjE4MjlCRTFFMDA5MDI3Qzgg
LyogV0tOYXZpZ2F0aW9uRGF0YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3NEU3NjAyMURGNzA3
QkUwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRjY5RkFBMTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVm
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEM0E2NUUyMUE3QzNBOTMwMENBQzYzNyAvKiBXS05h
dmlnYXRpb25SZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExQjBFQjUxOEE0MjQ5NTAwMzg0
ODFBIC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnM6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoVmVjdG9yPFN0cmlu
Zz4gaWRzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIGhhbmRsZXMpCisgICAgOiBt
X2lkcyhpZHMpCisgICAgLCBtX2hhbmRsZXMoV1RGTW92ZShoYW5kbGVzKSkKK3sKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lkcy5zaXplKCkgPT0gbV9oYW5kbGVzLnNp
emUoKSk7Cit9CisKK3ZvaWQgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1faWRzOworICAg
IG1faGFuZGxlcy5lbmNvZGUoZW5jb2Rlcik7Cit9CisKK2Jvb2wgTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9uczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyYgcmVzdWx0KQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm1faWRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5tX2hhbmRsZXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpwYWlyPFN0
cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zOjpvcGVyYXRvcltdKHNpemVfdCBpKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKG1faWRzLnNpemUoKSA9PSBtX2hhbmRsZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9pZHMuc2l6ZSgpKTsKKyAgICByZXR1cm4g
eyBtX2lkc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKG1faGFuZGxlc1tpXSkgfTsKK30K
KworY29uc3Qgc3RkOjpwYWlyPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zOjpvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAorewor
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1faWRzLnNpemUoKSA9PSBtX2hh
bmRsZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwg
bV9pZHMuc2l6ZSgpKTsKKyAgICByZXR1cm4geyBtX2lkc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKG1faGFuZGxlc1tpXSkgfTsKK30KKworc2l6ZV90IE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnM6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkcy5zaXplKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyk7CitwdWJsaWM6CisgICAgTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucygpCisgICAgeworICAgIH0KKworICAgIE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4gaWRzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmIGhhbmRsZXMpOworCisgICAgc3RkOjpwYWlyPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+PiBvcGVyYXRvcltdKHNpemVfdCBpKTsKKyAgICBjb25zdCBzdGQ6OnBhaXI8U3RyaW5n
LCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0Owor
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyYpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxTdHJpbmc+IG1f
aWRzOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IG1faGFuZGxlczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAJKHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OlVz
ZXJNCiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6On5Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKQogewogICAgIGZvciAoYXV0byYgc2FuZGJveEV4dGVuc2lvbiA6
IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpCi0gICAgICAgIHNhbmRib3hFeHRl
bnNpb24tPnJldm9rZSgpOworICAgICAgICBzYW5kYm94RXh0ZW5zaW9uLnZhbHVlLT5yZXZva2Uo
KTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0VXNl
ck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMjAyLDE1ICsyMDIs
MjEgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OgogICAgIHJlcXVl
c3QtPnNldERldmljZUluZm8oZGV2aWNlTGlzdCwgbWVkaWFEZXZpY2VJZGVudGlmaWVySGFzaFNh
bHQsIGhhc1BlcnNpc3RlbnRBY2Nlc3MpOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbihjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMp
Cit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Z3JhbnRVc2VyTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
JiBleHRlbnNpb25zKQogewotICAgIEFTU0VSVChtX3VzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zLnNpemUoKSA8PSAyKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4dGVuc2lv
bnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgYXV0byYgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uc1tp
XTsKKyAgICAgICAgZXh0ZW5zaW9uLnNlY29uZC0+Y29uc3VtZSgpOworICAgICAgICBtX3VzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmFkZChleHRlbnNpb24uZmlyc3QsIGV4dGVuc2lv
bi5zZWNvbmQpOworICAgIH0KK30KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGF1dG8gZXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ld
KSkgewotICAgICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAgICAgICBtX3Vz
ZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24ucmVsZWFzZSgp
KTsKLSAgICAgICAgfQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJl
dm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBleHRlbnNpb25JRHMpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb25JRCA6IGV4
dGVuc2lvbklEcykgeworICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IG1fdXNlck1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMudGFrZShleHRlbnNpb25JRCk7CisgICAgICAgIGlmIChleHRlbnNp
b24pCisgICAgICAgICAgICBleHRlbnNpb24tPnJldm9rZSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lv
biAyMDkxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsy
Miw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFDb25zdHJhaW50cy5oPgpAQCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3JlOjpNZWRpYURldmljZXNFbnVt
ZXJhdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJh
dGlvbih1aW50NjRfdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiBkZXZp
Y2VMaXN0LCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgYm9vbCBvcmln
aW5IYXNQZXJzaXN0ZW50QWNjZXNzKTsKIAotICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2Vz
U2FuZGJveEV4dGVuc2lvbihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwor
ICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zJik7CisgICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYp
OwpAQCAtNjksNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q+PiBtX2lkVG9NZWRpYURl
dmljZXNFbnVtZXJhdGlvblJlcXVlc3RNYXA7CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6
TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0PiwgdWludDY0X3Q+IG1fbWVkaWFEZXZpY2Vz
RW51bWVyYXRpb25SZXF1ZXN0VG9JRE1hcDsKIAotICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4
dGVuc2lvbj4+IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV91c2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9uczsKIAogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50Piwg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pj4+IG1fYmxvY2tlZFJlcXVl
c3RzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4OCw5ICszNjg4LDE0IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW0KICAgICBtX3VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5kaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRp
b24odXNlck1lZGlhSUQsIGRldmljZXMsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgb3JpZ2lu
SGFzUGVyc2lzdGVudEFjY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFE
ZXZpY2VzU2FuZGJveEV4dGVuc2lvbihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYgaGFuZGxlcykKK3ZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucyhjb25zdCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiBleHRlbnNpb25zKQog
ewotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmdyYW50VXNlck1lZGlh
RGV2aWNlc1NhbmRib3hFeHRlbnNpb24oaGFuZGxlcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhl
eHRlbnNpb25zKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQoreworICAg
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLnJldm9rZVVzZXJNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zKGV4dGVuc2lvbklEcyk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMDkx
MzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTc3LDcgKzExNzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXNlck1l
ZGlhQWNjZXNzV2FzRGVuaWVkKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCByZWFzb24s
IFN0cmluZyBpbnZhbGlkQ29uc3RyYWludCk7CiAKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFE
ZXZpY2VFbnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U+JiBkZXZpY2VzLCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZp
ZXJIYXNoU2FsdCwgYm9vbCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKTsKLSAgICB2b2lkIGdy
YW50VXNlck1lZGlhRGV2aWNlc1NhbmRib3hFeHRlbnNpb24oY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmKTsKKyAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYpOworICAgIHZvaWQg
cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5MTM2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCBTdHJpbmcgYXVkaW9EZXZpY2VVSUQsIFN0cmluZyB2aWRlb0RldmljZVVJRCkK
ICAgICBVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2
NF90IHJlYXNvbiwgU3RyaW5nIGludmFsaWRDb25zdHJhaW50KQogICAgIERpZENvbXBsZXRlTWVk
aWFEZXZpY2VFbnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgVmVjdG9yPFdlYkNvcmU6
OkNhcHR1cmVEZXZpY2U+IGRldmljZXMsIFN0cmluZyBtZWRpYURldmljZUlkZW50aWZpZXJIYXNo
U2FsdCwgYm9vbCBoYXNQZXJzaXN0ZW50QWNjZXNzKQotICAgIEdyYW50VXNlck1lZGlhRGV2aWNl
c1NhbmRib3hFeHRlbnNpb24oV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIEdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zIHNhbmRib3hFeHRl
bnNpb25zKQorICAgIFJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3Rv
cjxTdHJpbmc+IHNhbmRib3hFeHRlbnNpb25JRHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0
aW9uCg==
</data>
<flag name="review"
          id="318766"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296317</attachid>
            <date>2016-12-06 14:06:39 -0800</date>
            <delta_ts>2016-12-07 14:24:49 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>revoke_sandbox_extensions_patch_2.txt</filename>
            <type>text/plain</type>
            <size>41166</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQwNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE2LTEyLTA2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBSZXZva2Ugc2FuZGJveCBleHRlbnNpb25zIHdoZW4gY2FwdHVyZSBlbmRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0NzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisgICAgICAgIAorICAgICAgICBUcmFjayBtZWRp
YSBjYXB0dXJlIGJ5IHByb2Nlc3Mgc28gaXQgaXMgcG9zc2libGUgdG8gcmV2b2tlIHRoZSBzYW5k
Ym94IGV4dGVuc2lvbnMgaXNzdWVkIHRvCisgICAgICAgIGEgd2ViIHByb2Nlc3Mgd2hlbiBjYXB0
dXJlIHN0b3BzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcgZmlsZXMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkpOiBSZWdpc3Rl
cgorICAgICAgICAgIHdpdGggcHJvY2VzcyBtYW5hZ2VyLgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6flVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OnVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQpOiBNb3ZlIHNh
bmRib3ggCisgICAgICAgICAgZXh0ZW5zaW9uIGNvZGUgdG8gdGhlIHByb2Nlc3MgbWFuYWdlci4K
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OnN0b3BDYXB0dXJlKTogTmV3LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6c3RhcnRlZENhcHR1cmVTZXNzaW9uKTogTmV3LCByZXBvcnQg
c3RhdGUKKyAgICAgICAgICBjaGFuZ2UgdG8gdGhlIHByb2Nlc3MgbWFuYWdlci4KKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVuZGVkQ2Fw
dHVyZVNlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3Rh
dGU6OlByb2Nlc3NTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6bWFuYWdl
cnMpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGU6OnNhbmRib3hFeHRlbnNpb25zR3Jh
bnRlZCk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6c2V0U2FuZGJveEV4dGVuc2lv
bnNHcmFudGVkKToKKyAgICAgICAgKFdlYktpdDo6c3RhdGVNYXApOgorICAgICAgICAoV2ViS2l0
Ojpwcm9jZXNzU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGU6OmFkZFJlcXVl
c3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlOjpyZW1vdmVSZXF1ZXN0
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5n
bGV0b24pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6YWRkVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6cmVtb3ZlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6
d2lsbENyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OnN0YXJ0ZWRDYXB0dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyOjplbmRlZENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpp
c1BsYXlpbmdNZWRpYURpZENoYW5nZSk6IFJlcG9ydCBjYXB0dXJlIHN0YXRlIGNoYW5nZXMgdG8g
dGhlIHJlcXVlc3QKKyAgICAgICAgICBtYW5hZ2VyIHByb3h5LgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6
b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnM6OnNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp+VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKTogU2FuZGJveCBleHRlbnNpb24KKyAgICAgICAgICBpcyBub3cg
aW4gYSBIYXNoTWFwLCBub3QgYSBWZWN0b3IuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucyk6IFJlY29yZAorICAgICAgICAgIElEcyB3aXRoIGV4dGVuc2lvbnMgc28gdGhleSBjYW4g
YmUgcmV2b2tlZCBsYXRlci4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyk6IE5l
dy4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpn
cmFudFVzZXJNZWRpYURldmljZXNTYW5kYm94RXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpncmFudFVzZXJNZWRpYURl
dmljZXNTYW5kYm94RXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDE2LTEyLTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRG9uJ3QgbWVtY3B5IG91dCBvZiBsaW5lIGRhdGEKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDkxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDYgKzM2NSw3IEBAIHNldChXZWJLaXQy
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3Bw
CiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAogICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorICAg
IFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAKQEAgLTU3Nyw2ICs1NzgsNyBAQCBzZXQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCiAKKyAgICBXZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiAgICAgV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBXZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyMDkxMzYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJBUElT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCisjaW5jbHVkZSAiVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAg
LTkyLDYgKzkzLDEyIEBAIEZyYW1lQXV0aG9yaXphdGlvblN0YXRlJiBVc2VyTWVkaWFQZXJtaXMK
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKIHsKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuYWRkVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKnRoaXMpOworfQorCitVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5KCkKK3sKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xl
dG9uKCkucmVtb3ZlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKnRoaXMp
OwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZh
bGlkYXRlUmVxdWVzdHMoKQpAQCAtMTk3LDI5ICsyMDQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgZmFtZVN0YXRlLnNldEhhc1Blcm1pc3Npb25Ub1Vz
ZUNhcHR1cmVEZXZpY2UoYXVkaW9EZXZpY2VVSUQsIHRydWUpOwogICAgIGZhbWVTdGF0ZS5zZXRI
YXNQZXJtaXNzaW9uVG9Vc2VDYXB0dXJlRGV2aWNlKHZpZGVvRGV2aWNlVUlELCB0cnVlKTsKIAot
ICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcmVxdWlyZWRFeHRl
bnNpb25zID0gU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpOb25lOwotICAgIGlmICghYXVkaW9E
ZXZpY2VVSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucyB8PSBTYW5k
Ym94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvOwotICAgICAgICBleHRlbnNpb25Db3VudCsrOwot
ICAgIH0KLSAgICBpZiAoIXZpZGVvRGV2aWNlVUlELmlzRW1wdHkoKSkgewotICAgICAgICByZXF1
aXJlZEV4dGVuc2lvbnMgfD0gU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpWaWRlbzsKLSAgICAg
ICAgZXh0ZW5zaW9uQ291bnQrKzsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBjdXJyZW50RXh0ZW5z
aW9ucyA9IG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDsKLSAgICBpZiAoIShyZXF1aXJl
ZEV4dGVuc2lvbnMgJiBjdXJyZW50RXh0ZW5zaW9ucykpIHsKLSAgICAgICAgQVNTRVJUKGV4dGVu
c2lvbkNvdW50KTsKLSAgICAgICAgbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkID0gcmVx
dWlyZWRFeHRlbnNpb25zIHwgY3VycmVudEV4dGVuc2lvbnM7Ci0gICAgICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5IGhhbmRsZXM7Ci0gICAgICAgIGhhbmRsZXMuYWxsb2NhdGUoZXh0
ZW5zaW9uQ291bnQpOwotICAgICAgICBpZiAoIXZpZGVvRGV2aWNlVUlELmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNp
b24oImNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIiwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSk7
Ci0gICAgICAgIGlmICghYXVkaW9EZXZpY2VVSUQuaXNFbXB0eSgpKQotICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxl
LndlYmtpdC5taWNyb3Bob25lIiwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSk7Ci0gICAgICAg
IG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R3JhbnRVc2VyTWVkaWFE
ZXZpY2VzU2FuZGJveEV4dGVuc2lvbihoYW5kbGVzKSwgbV9wYWdlLnBhZ2VJRCgpKTsKLSAgICB9
CisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLndpbGxDcmVhdGVNZWRp
YVN0cmVhbSgqdGhpcywgIWF1ZGlvRGV2aWNlVUlELmlzRW1wdHkoKSwgIXZpZGVvRGV2aWNlVUlE
LmlzRW1wdHkoKSk7CiAKICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlE
LCB2aWRlb0RldmljZVVJRCksIG1fcGFnZS5wYWdlSUQoKSk7CiAjZWxzZQpAQCAtMzQyLDQgKzMy
NywzNCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAjZW5kaWYK
IH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c3RvcENh
cHR1cmUoKQoreworICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3BhZ2Uuc2V0TXV0ZWQoV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6Q2FwdHVyZURldmljZXNBcmVNdXRlZCk7CisjZW5kaWYKK30KKwordm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c3RhcnRlZENhcHR1cmVT
ZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0ZWRDYXB0dXJlU2Vzc2lvbigqdGhpcyk7CisjZW5kaWYKK30KKwor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW5kZWRDYXB0dXJl
U2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5lbmRlZENhcHR1cmVTZXNzaW9uKCp0aGlzKTsKKyNlbmRpZgorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCShyZXZpc2lvbiAyMDkxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsOSBAQCBwcml2YXRlOgogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkgewogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOworICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSgpOworCisgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0cygpOwogCkBA
IC02OCw2ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ2FjaGVkU3RhdGUoKTsK
IAorICAgIHZvaWQgc3RhcnRlZENhcHR1cmVTZXNzaW9uKCk7CisgICAgdm9pZCBlbmRlZENhcHR1
cmVTZXNzaW9uKCk7CisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOworCiBwcml2YXRlOgogICAgIFJl
ZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90
IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmdXNlck1lZGlhRG9j
dW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvcExldmVsRG9jdW1lbnRPcmln
aW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKICAgICB2b2lkIGRlbnlSZXF1ZXN0
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpV
c2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24sIGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0cmFp
bnQpOwpAQCAtNzYsMTQgKzgzLDYgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Pj4gbV9wZW5kaW5nVXNlck1l
ZGlhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5Pj4gbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHM7Ci0KLSAgICBlbnVtIFNh
bmRib3hFeHRlbnNpb25zR3JhbnRlZCB7Ci0gICAgICAgIE5vbmUgPSAwLAotICAgICAgICBWaWRl
byA9IDEgPDwgMCwKLSAgICAgICAgQXVkaW8gPSAxIDw8IDEKLSAgICB9OwotICAgIHVuc2lnbmVk
IG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDsKLQogICAgIEhhc2hNYXA8dWludDY0X3Qs
IHN0ZDo6dW5pcXVlX3B0cjxGcmFtZUF1dGhvcml6YXRpb25TdGF0ZT4+IG1fZnJhbWVTdGF0ZXM7
CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGF1
ZGlvRXh0ZW5zaW9uUGF0aCA9ICJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiOworc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHZpZGVvRXh0ZW5zaW9uUGF0aCA9ICJjb20uYXBwbGUud2Via2l0
LmNhbWVyYSI7CisKK2NsYXNzIFByb2Nlc3NTdGF0ZSB7CitwdWJsaWM6CisgICAgUHJvY2Vzc1N0
YXRlKCkgeyB9CisgICAgUHJvY2Vzc1N0YXRlKGNvbnN0IFByb2Nlc3NTdGF0ZSYpID0gZGVsZXRl
OworCisgICAgdm9pZCBhZGRSZXF1ZXN0TWFuYWdlcihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVxdWVzdE1hbmFnZXIoVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKKyAgICBWZWN0b3I8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqPiYgbWFuYWdlcnMoKSB7IHJldHVybiBtX21hbmFn
ZXJzOyB9CisKKyAgICBlbnVtIFNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCB7CisgICAgICAgIE5v
bmUgPSAwLAorICAgICAgICBWaWRlbyA9IDEgPDwgMCwKKyAgICAgICAgQXVkaW8gPSAxIDw8IDEK
KyAgICB9OworCisgICAgU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkIHNhbmRib3hFeHRlbnNpb25z
R3JhbnRlZCgpIHsgcmV0dXJuIG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDsgfQorICAg
IHZvaWQgc2V0U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkKHVuc2lnbmVkIGdyYW50ZWQpIHsgbV9w
YWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkID0gc3RhdGljX2Nhc3Q8U2FuZGJveEV4dGVuc2lv
bnNHcmFudGVkPihncmFudGVkKTsgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSo+IG1fbWFuYWdlcnM7CisgICAgU2FuZGJveEV4
dGVuc2lvbnNHcmFudGVkIG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCB7IFNhbmRib3hF
eHRlbnNpb25zR3JhbnRlZDo6Tm9uZSB9OworfTsKKworc3RhdGljIEhhc2hNYXA8V2ViUHJvY2Vz
c1Byb3h5Kiwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NTdGF0ZT4+JiBzdGF0ZU1hcCgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViUHJvY2Vzc1Byb3h5Kiwgc3RkOjp1
bmlxdWVfcHRyPFByb2Nlc3NTdGF0ZT4+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3Rh
dGljIFByb2Nlc3NTdGF0ZSYgcHJvY2Vzc1N0YXRlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykK
K3sKKyAgICBhdXRvJiBzdGF0ZSA9IHN0YXRlTWFwKCkuYWRkKCZwcm9jZXNzLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgaWYgKHN0YXRlKQorICAgICAgICByZXR1cm4gKnN0YXRlOwor
CisgICAgc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NTdGF0ZT4oKTsKKyAgICByZXR1
cm4gKnN0YXRlOworfQorCit2b2lkIFByb2Nlc3NTdGF0ZTo6YWRkUmVxdWVzdE1hbmFnZXIoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHByb3h5KQoreworICAgIEFTU0VS
VCghbV9tYW5hZ2Vycy5jb250YWlucygmcHJveHkpKTsKKyAgICBtX21hbmFnZXJzLmFwcGVuZCgm
cHJveHkpOworfQorCit2b2lkIFByb2Nlc3NTdGF0ZTo6cmVtb3ZlUmVxdWVzdE1hbmFnZXIoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHByb3h5KQoreworICAgIEFTU0VS
VChtX21hbmFnZXJzLmNvbnRhaW5zKCZwcm94eSkpOworICAgIG1fbWFuYWdlcnMucmVtb3ZlRmly
c3RNYXRjaGluZyhbJnByb3h5XShhdXRvIG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciA9
PSAmcHJveHk7CisgICAgfSk7Cit9CisKK1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7
Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmFkZFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBwcm94eSkKK3sKKyAgICBwcm9jZXNzU3RhdGUocHJveHkucGFnZSgpLnByb2Nlc3MoKSku
YWRkUmVxdWVzdE1hbmFnZXIocHJveHkpOworfQorCit2b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjpyZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCit7CisgICAgZW5kZWRDYXB0
dXJlU2Vzc2lvbihwcm94eSk7CisKKyAgICBhdXRvJiBzdGF0ZSA9IHByb2Nlc3NTdGF0ZShwcm94
eS5wYWdlKCkucHJvY2VzcygpKTsKKyAgICBzdGF0ZS5yZW1vdmVSZXF1ZXN0TWFuYWdlcihwcm94
eSk7CisgICAgaWYgKHN0YXRlLm1hbmFnZXJzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8g
aXQgPSBzdGF0ZU1hcCgpLmZpbmQoJnByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpOworICAgICAgICBz
dGF0ZU1hcCgpLnJlbW92ZShpdCk7CisgICAgfQorfQorCit2b2lkIFVzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0oVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkmIHByb3h5LCBib29sIHdpdGhBdWRpbywgYm9vbCB3aXRoVmlkZW8pCit7Cisg
ICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFpbnMoJnByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpKTsK
KworICAgIGF1dG8mIHN0YXRlID0gcHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkp
OworICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9IDA7CisgICAgdW5zaWduZWQgcmVxdWlyZWRF
eHRlbnNpb25zID0gUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6Ok5vbmU7
CisKKyAgICBpZiAod2l0aEF1ZGlvKSB7CisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucyB8PSBQ
cm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6QXVkaW87CisgICAgICAgIGV4
dGVuc2lvbkNvdW50Kys7CisgICAgfQorICAgIGlmICh3aXRoVmlkZW8pIHsKKyAgICAgICAgcmVx
dWlyZWRFeHRlbnNpb25zIHw9IFByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVk
OjpWaWRlbzsKKyAgICAgICAgZXh0ZW5zaW9uQ291bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBjdXJyZW50RXh0ZW5zaW9ucyA9IHN0YXRlLnNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCgpOwor
ICAgIGlmICghKHJlcXVpcmVkRXh0ZW5zaW9ucyAmIGN1cnJlbnRFeHRlbnNpb25zKSkgeworICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBoYW5kbGVzOworICAgICAgICBoYW5k
bGVzLmFsbG9jYXRlKGV4dGVuc2lvbkNvdW50KTsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBp
ZHM7CisgICAgICAgIGlkcy5yZXNlcnZlQ2FwYWNpdHkoZXh0ZW5zaW9uQ291bnQpOworCisgICAg
ICAgIGlmICh3aXRoQXVkaW8gJiYgcmVxdWlyZWRFeHRlbnNpb25zICYgUHJvY2Vzc1N0YXRlOjpT
YW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvKSB7CisgICAgICAgICAgICBpZiAoU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihhdWRpb0V4dGVuc2lv
blBhdGgsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKSB7CisgICAgICAgICAgICAgICAgaWRz
LmFwcGVuZChBU0NJSUxpdGVyYWwoYXVkaW9FeHRlbnNpb25QYXRoKSk7CisgICAgICAgICAgICAg
ICAgY3VycmVudEV4dGVuc2lvbnMgfD0gUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dy
YW50ZWQ6OkF1ZGlvOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHdp
dGhWaWRlbyAmJiByZXF1aXJlZEV4dGVuc2lvbnMgJiBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRl
bnNpb25zR3JhbnRlZDo6VmlkZW8pIHsKKyAgICAgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKHZpZGVvRXh0ZW5zaW9uUGF0aCwgaGFu
ZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBpZHMuYXBwZW5kKEFT
Q0lJTGl0ZXJhbCh2aWRlb0V4dGVuc2lvblBhdGgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50
RXh0ZW5zaW9ucyB8PSBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6Vmlk
ZW87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZS5zZXRTYW5kYm94
RXh0ZW5zaW9uc0dyYW50ZWQoY3VycmVudEV4dGVuc2lvbnMpOworICAgICAgICBwcm94eS5wYWdl
KCkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdyYW50VXNlck1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhpZHMsIFdURk1v
dmUoaGFuZGxlcykpKSwgcHJveHkucGFnZSgpLnBhZ2VJRCgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnN0YXJ0ZWRDYXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCit7CisgICAgQVNTRVJUKHN0YXRl
TWFwKCkuY29udGFpbnMoJnByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpKTsKK30KKwordm9pZCBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlcjo6ZW5kZWRDYXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCit7CisgICAgQVNTRVJUKHN0YXRlTWFwKCku
Y29udGFpbnMoJnByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpKTsKKworICAgIGF1dG8mIHN0YXRlID0g
cHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpOworICAgIGJvb2wgaGFzQXVkaW9D
YXB0dXJlID0gZmFsc2U7CisgICAgYm9vbCBoYXNWaWRlb0NhcHR1cmUgPSBmYWxzZTsKKyAgICBm
b3IgKGF1dG8mIG1hbmFnZXIgOiBzdGF0ZS5tYW5hZ2VycygpKSB7CisgICAgICAgIGlmIChtYW5h
Z2VyLT5wYWdlKCkuaGFzQWN0aXZlQXVkaW9TdHJlYW0oKSkKKyAgICAgICAgICAgIGhhc0F1ZGlv
Q2FwdHVyZSA9IHRydWU7CisgICAgICAgIGlmIChtYW5hZ2VyLT5wYWdlKCkuaGFzQWN0aXZlVmlk
ZW9TdHJlYW0oKSkKKyAgICAgICAgICAgIGhhc1ZpZGVvQ2FwdHVyZSA9IHRydWU7CisgICAgfQor
CisgICAgaWYgKGhhc0F1ZGlvQ2FwdHVyZSAmJiBoYXNWaWRlb0NhcHR1cmUpCisgICAgICAgIHJl
dHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtczsKKyAgICB1bnNpZ25lZCBjdXJyZW50
RXh0ZW5zaW9ucyA9IHN0YXRlLnNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCgpOworICAgIGlmICgh
aGFzQXVkaW9DYXB0dXJlICYmIGN1cnJlbnRFeHRlbnNpb25zICYgUHJvY2Vzc1N0YXRlOjpTYW5k
Ym94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvKSB7CisgICAgICAgIHBhcmFtcy5hcHBlbmQoQVND
SUlMaXRlcmFsKGF1ZGlvRXh0ZW5zaW9uUGF0aCkpOworICAgICAgICBjdXJyZW50RXh0ZW5zaW9u
cyAmPSB+UHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvOworICAg
IH0KKyAgICBpZiAoIWhhc1ZpZGVvQ2FwdHVyZSAmJiBjdXJyZW50RXh0ZW5zaW9ucyAmIFByb2Nl
c3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpWaWRlbykgeworICAgICAgICBwYXJh
bXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCh2aWRlb0V4dGVuc2lvblBhdGgpKTsKKyAgICAgICAgY3Vy
cmVudEV4dGVuc2lvbnMgJj0gflByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVk
OjpWaWRlbzsKKyAgICB9CisKKyAgICBpZiAocGFyYW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3RhdGUuc2V0U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkKGN1cnJlbnRFeHRl
bnNpb25zKTsKKyAgICBwcm94eS5wYWdlKCkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKHBhcmFtcyksIHByb3h5
LnBhZ2UoKS5wYWdlSUQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKKworY2xhc3MgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIgeworcHVibGljOgorCisgICAg
c3RhdGljIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQg
YWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Jik7CisKKyAgICB2b2lkIHdpbGxDcmVhdGVNZWRpYVN0cmVhbShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIGJvb2wgd2l0aEF1ZGlvLCBib29sIHdpdGhWaWRl
byk7CisKKyAgICB2b2lkIHN0YXJ0ZWRDYXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAgIHZvaWQgZW5kZWRDYXB0dXJlU2Vzc2lvbihVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDA5LDE1ICs2NDA5LDIxIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW4KIAogICAgIFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBvbGRNZWRpYVN0YXRlSGFzQWN0aXZlQ2Fw
dHVyZSA9IG1fbWVkaWFTdGF0ZSAmIChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVB
dWRpb0NhcHR1cmVEZXZpY2UgfCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVWaWRl
b0NhcHR1cmVEZXZpY2UpOwogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBuZXdNZWRpYVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSA9IHN0YXRlICYgKFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSB8IFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSk7Ci0gICAgaWYgKCFvbGRNZWRp
YVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSAmJiBuZXdNZWRpYVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSkK
LSAgICAgICAgbV91aUNsaWVudC0+ZGlkQmVnaW5DYXB0dXJlU2Vzc2lvbigpOwotICAgIGlmIChv
bGRNZWRpYVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSAmJiAhbmV3TWVkaWFTdGF0ZUhhc0FjdGl2ZUNh
cHR1cmUpCi0gICAgICAgIG1fdWlDbGllbnQtPmRpZEVuZENhcHR1cmVTZXNzaW9uKCk7CiAKICAg
ICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgcGxheWluZ01lZGlhTWFzayA9IE1lZGlh
UHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHwgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nVmlkZW87
CiAgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZFN0YXRlID0gbV9tZWRpYVN0
YXRlOwogICAgIG1fbWVkaWFTdGF0ZSA9IHN0YXRlOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICBpZiAoIW9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmIG5ld01lZGlhU3Rh
dGVIYXNBY3RpdmVDYXB0dXJlKSB7CisgICAgICAgIG1fdWlDbGllbnQtPmRpZEJlZ2luQ2FwdHVy
ZVNlc3Npb24oKTsKKyAgICAgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
c3RhcnRlZENhcHR1cmVTZXNzaW9uKCk7CisgICAgfSBlbHNlIGlmIChvbGRNZWRpYVN0YXRlSGFz
QWN0aXZlQ2FwdHVyZSAmJiAhbmV3TWVkaWFTdGF0ZUhhc0FjdGl2ZUNhcHR1cmUpIHsKKyAgICAg
ICAgbV91aUNsaWVudC0+ZGlkRW5kQ2FwdHVyZVNlc3Npb24oKTsKKyAgICAgICAgbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZW5kZWRDYXB0dXJlU2Vzc2lvbigpOworICAgIH0K
KyNlbmRpZgorCiAgICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpJc0F1
ZGlibGUpOwogCiAgICAgcGxheWluZ01lZGlhTWFzayB8PSBNZWRpYVByb2R1Y2VyOjpIYXNBY3Rp
dmVBdWRpb0NhcHR1cmVEZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVWaWRlb0NhcHR1
cmVEZXZpY2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyMDkxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNDgsNiArMTA0OCw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiAhIShtX21lZGlhU3RhdGUgJiBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyk7IH0KICAgICB2b2lkIGlzUGxheWlu
Z01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncywg
dWludDY0X3QpOworICAgIGJvb2wgaGFzQWN0aXZlQXVkaW9TdHJlYW0oKSBjb25zdCB7IHJldHVy
biBtX21lZGlhU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVBdWRpb0Nh
cHR1cmVEZXZpY2U7IH0KKyAgICBib29sIGhhc0FjdGl2ZVZpZGVvU3RyZWFtKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlk
ZW9DYXB0dXJlRGV2aWNlOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1lZGlhU3RhdGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdGF0ZTsgfQog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA5MTM2KQorKysgU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw2ICs1OCw5IEBACiAJCTA3Mjk3RjlGMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5LmggKi87IH07CiAJCTA3Mjk3RkEyMUMxODZBREIwMDNGMDczNSAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzI5N0ZBMDFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2suY3BwICovOyB9OwogCQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3MzUgLyog
V0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTA3NEU3NUZEMURGMjIxMTUwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzRFNzVGQzFERjIwMDI0MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3Bw
ICovOyB9OworCQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NEU3NUZCMURGMUZEMTMwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oICovOyB9
OworCQkwNzRFNzYwMjFERjcwN0JFMDBEMzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzRFNzYwMDFERjcwNzVEMDBEMzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5j
cHAgKi87IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2
RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJ
CTA3QTVFQkJCMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QTVFQkI5MUM3QkE0M0Uw
MEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmNwcCAqLzsgfTsKIAkJMDdBNUVCQkMxQzdCQTQz
RTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1l
SGFuZGxlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTIwNTIsNiArMjA1NSwxMCBAQAogCQkwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyog
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDcyOTdGQTAxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcyOTdGQTExQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NEU3NUZCMURGMUZEMTMw
MEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzRFNzVGQzFERjIwMDI0MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzRF
NzYwMDFERjcwNzVEMDBEMzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0RTc2MDExREY3
MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyog
QVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2
RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QTVFQkI5MUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ1Miw2ICs1NDU5LDggQEAKIAkJNEE0MTBGNDEx
OUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzRFNzYwMDFERjcwNzVEMDBEMzE4RUMgLyogTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAgKi8sCisJCQkJMDc0RTc2MDExREY3MDc1RDAwRDMx
OEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCAqLywKIAkJCQk0QTQxMEY0MjE5
QUY3QjI3MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCAq
LywKIAkJCQk0QTQxMEY0MzE5QUY3QjI3MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmggKi8sCiAJCQkpOwpAQCAtNjEzMiw2ICs2MTQxLDggQEAKIAkJQkMwMzJE
QzMxMEY0MzgyNjAwNThDMTVBIC8qIFVJUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc0RTc1RkMxREYyMDAyNDAwRDMxOEVDIC8qIFVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcCAqLywKKwkJCQkwNzRFNzVGQjFERjFGRDEzMDBEMzE4RUMg
LyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLywKIAkJCQlCQzAzMkRDNDEwRjQzODdDMDA1
OEMxNUEgLyogQVBJICovLAogCQkJCTFBQjFGNzc2MUQxQjMwQTkwMDdDOUJEMSAvKiBBcHBsZVBh
eSAqLywKIAkJCQk1MTJGNTg4RDEyQTg4MzZGMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb24gKi8s
CkBAIC04MjY3LDYgKzgyNzgsNyBAQAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBO
ZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0RjE4QkJFMDQ0
MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0M4QjM3NDEyNUZCNjkwMDBERTQ2QTQgLyogV0tHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQyMkY4QjE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0
b3J5RGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNjJFNzMxMjE0MzA0N0Iw
MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEwQUUw
RDEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
OTMyOSw2ICs5MzQxLDcgQEAKIAkJCQkwRjVFMjAwMzE4RTc3MDUxMDAzRUMzRTUgLyogUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQTA0OUIzMTgwQ0ND
RDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ4NzEwMTYxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3NEU3NUZEMURGMjIxMTUwMEQzMThFQyAvKiBVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDg5NDlGMDE4MjA0
NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzQzQUJBMTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVw
TWVudURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkI3RDIxMUU2NTFFMjAwREIxMzcx
IC8qIFBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3OTEsNiArOTgwNCw3IEBACiAJCQkJ
MUEyNTZFMzcxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEM0E2NURBMUE3QzNBMUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rp
b25SZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcwRjM0QTIxODI5QkUxRTAwOTAyN0M4IC8q
IFdLTmF2aWdhdGlvbkRhdGEubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzRFNzYwMjFERjcwN0JF
MDBEMzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0Y2OUZBQTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJlZi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDNBNjVFMjFBN0MzQTkzMDBDQUM2MzcgLyogV0tOYXZp
Z2F0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMUIwRUI1MThBNDI0OTUwMDM4NDgx
QSAvKiBXS05hdmlnYXRpb25SZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zOjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+
IGlkcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBoYW5kbGVzKQorICAgIDogbV9p
ZHMoaWRzKQorICAgICwgbV9oYW5kbGVzKFdURk1vdmUoaGFuZGxlcykpCit7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9pZHMuc2l6ZSgpID09IG1faGFuZGxlcy5zaXpl
KCkpOworfQorCit2b2lkIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2lkczsKKyAgICBt
X2hhbmRsZXMuZW5jb2RlKGVuY29kZXIpOworfQorCitib29sIE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMmIHJlc3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X2lkcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6OmRlY29kZShkZWNvZGVyLCByZXN1bHQubV9oYW5kbGVzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0ZDo6cGFpcjxTdHJp
bmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
czo6b3BlcmF0b3JbXShzaXplX3QgaSkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihtX2lkcy5zaXplKCkgPT0gbV9oYW5kbGVzLnNpemUoKSk7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1faWRzLnNpemUoKSk7CisgICAgcmV0dXJuIHsg
bV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShtX2hhbmRsZXNbaV0pIH07Cit9CisK
K2NvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2lkcy5zaXplKCkgPT0gbV9oYW5k
bGVzLnNpemUoKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1f
aWRzLnNpemUoKSk7CisgICAgcmV0dXJuIHsgbV9pZHNbaV0sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShtX2hhbmRsZXNbaV0pIH07Cit9CisKK3NpemVfdCBNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZHMuc2l6ZSgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlh
RGV2aWNlU2FuZGJveEV4dGVuc2lvbnMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlh
RGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOworcHVibGljOgorICAgIE1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMoKQorICAgIHsKKyAgICB9CisKKyAgICBNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKFZlY3RvcjxTdHJpbmc+IGlkcywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
JiBoYW5kbGVzKTsKKworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPj4gb3BlcmF0b3JbXShzaXplX3QgaSk7CisgICAgY29uc3Qgc3RkOjpwYWlyPFN0cmluZywg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdDsKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIE1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMmKTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2lk
czsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBtX2hhbmRsZXM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyMDkxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpVc2Vy
TQogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp+VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkKIHsKICAgICBmb3IgKGF1dG8mIHNhbmRib3hFeHRlbnNpb24gOiBt
X3VzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKQotICAgICAgICBzYW5kYm94RXh0ZW5z
aW9uLT5yZXZva2UoKTsKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbi52YWx1ZS0+cmV2b2tlKCk7
CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFVzZXJN
ZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTIwMiwxNSArMjAyLDIx
IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjoKICAgICByZXF1ZXN0
LT5zZXREZXZpY2VJbmZvKGRldmljZUxpc3QsIG1lZGlhRGV2aWNlSWRlbnRpZmllckhhc2hTYWx0
LCBoYXNQZXJzaXN0ZW50QWNjZXNzKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI6OmdyYW50VXNlck1lZGlhRGV2aWNlc1NhbmRib3hFeHRlbnNpb24oY29uc3Qg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmdyYW50VXNlck1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYg
ZXh0ZW5zaW9ucykKIHsKLSAgICBBU1NFUlQobV91c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucy5zaXplKCkgPD0gMik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25z
LnNpemUoKTsgaSsrKSB7CisgICAgICAgIGF1dG8mIGV4dGVuc2lvbiA9IGV4dGVuc2lvbnNbaV07
CisgICAgICAgIGV4dGVuc2lvbi5zZWNvbmQtPmNvbnN1bWUoKTsKKyAgICAgICAgbV91c2VyTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uLmZpcnN0LCBleHRlbnNpb24u
c2Vjb25kLmNvcHlSZWYoKSk7CisgICAgfQorfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoYXV0
byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZXNbaV0pKSB7Ci0gICAgICAgICAgICBleHRlbnNpb24tPmNvbnN1bWUoKTsKLSAgICAgICAg
ICAgIG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5y
ZWxlYXNlKCkpOwotICAgICAgICB9Cit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGV4dGVuc2lvbklEcykKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lv
bklEIDogZXh0ZW5zaW9uSURzKSB7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9uID0gbV91c2VyTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYg
KGV4dGVuc2lvbikKKyAgICAgICAgICAgIGV4dGVuc2lvbi0+cmV2b2tlKCk7CiAgICAgfQogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJ
KHJldmlzaW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDYgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDYW5TdGFydExpc3RlbmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CkBAIC01MSw3ICs1Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uKFdlYkNvcmU6Ok1lZGlhRGV2
aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVNZWRpYURldmlj
ZUVudW1lcmF0aW9uKHVpbnQ2NF90LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmlj
ZT4mIGRldmljZUxpc3QsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0LCBi
b29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpOwogCi0gICAgdm9pZCBncmFudFVzZXJNZWRp
YURldmljZXNTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5Jik7CisgICAgdm9pZCBncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNv
bnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmKTsKKyAgICB2b2lkIHJldm9rZVVzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBzZW5kVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Jik7CkBAIC02OSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdD4+IG1faWRU
b01lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdE1hcDsKICAgICBIYXNoTWFwPFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q+LCB1aW50NjRfdD4gbV9tZWRp
YURldmljZXNFbnVtZXJhdGlvblJlcXVlc3RUb0lETWFwOwogCi0gICAgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPj4gbV91c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczsKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX3VzZXJNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zOwogCiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6RG9j
dW1lbnQ+LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+Pj4gbV9ibG9j
a2VkUmVxdWVzdHM7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjA5MTM2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjg4LDkgKzM2
ODgsMTQgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bQogICAgIG1f
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmRpZENvbXBsZXRlTWVkaWFEZXZpY2VF
bnVtZXJhdGlvbih1c2VyTWVkaWFJRCwgZGV2aWNlcywgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0
LCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpncmFudFVz
ZXJNZWRpYURldmljZXNTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiBoYW5kbGVzKQordm9pZCBXZWJQYWdlOjpncmFudFVzZXJNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmIGV4dGVu
c2lvbnMpCiB7Ci0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ3JhbnRV
c2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbihoYW5kbGVzKTsKKyAgICBtX3VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5ncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKGV4dGVuc2lvbnMpOworfQorCit2b2lkIFdlYlBhZ2U6OnJldm9rZVVzZXJNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25JRHMp
Cit7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIucmV2b2tlVXNlck1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoZXh0ZW5zaW9uSURzKTsKIH0KICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDIwOTEzNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNzcsNyArMTE3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90
IHJlYXNvbiwgU3RyaW5nIGludmFsaWRDb25zdHJhaW50KTsKIAogICAgIHZvaWQgZGlkQ29tcGxl
dGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIGRldmljZXMsIGNvbnN0IFN0cmluZyYgZGV2aWNl
SWRlbnRpZmllckhhc2hTYWx0LCBib29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpOwotICAg
IHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbihjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucyhjb25zdCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJik7Cisg
ICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
MDkxMzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodWlu
dDY0X3QgdXNlck1lZGlhSUQsIFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3RyaW5nIHZpZGVvRGV2
aWNlVUlEKQogICAgIFVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgdWludDY0X3QgcmVhc29uLCBTdHJpbmcgaW52YWxpZENvbnN0cmFpbnQpCiAgICAgRGlkQ29t
cGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBWZWN0b3I8
V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNlcywgU3RyaW5nIG1lZGlhRGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0LCBib29sIGhhc1BlcnNpc3RlbnRBY2Nlc3MpCi0gICAgR3JhbnRVc2VyTWVk
aWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAgR3JhbnRVc2VyTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucyhXZWJLaXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMgc2Fu
ZGJveEV4dGVuc2lvbnMpCisgICAgUmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMoVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lvbklEcykKICNlbmRpZgogCiAgICAgIyBO
b3RpZmljYXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296423</attachid>
            <date>2016-12-07 14:24:49 -0800</date>
            <delta_ts>2016-12-07 15:49:50 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>revoke_sandbox_extensions_patch_3.txt</filename>
            <type>text/plain</type>
            <size>56463</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDE2LTEyLTA3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBSZXZva2Ugc2FuZGJveCBleHRlbnNpb25zIHdoZW4gY2FwdHVyZSBlbmRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0NzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFjayBtZWRpYSBjYXB0
dXJlIGJ5IHByb2Nlc3Mgc28gaXQgaXMgcG9zc2libGUgdG8gcmV2b2tlIHRoZSBzYW5kYm94IGV4
dGVuc2lvbnMgaXNzdWVkIHRvCisgICAgICAgIGEgd2ViIHByb2Nlc3Mgd2hlbiBjYXB0dXJlIHN0
b3BzLiBBbGxvY2F0ZSBXSzIgdXNlciBtZWRpYSBwZXJtaXNzaW9uIG1hbmFnZXIgbGF6aWx5IHJh
dGhlcgorICAgICAgICB0aGFuIGV2ZXJ5IHRpbWUgYSBwYWdlIGlzIGNyZWF0ZWQgYXMgbW9zdCBw
YWdlcyB3b24ndCBuZWVkIG9uZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgbmV3
IGZpbGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
KTogUmVnaXN0ZXIKKyAgICAgICAgICB3aXRoIHByb2Nlc3MgbWFuYWdlci4KKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6On5Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVk
KTogTW92ZSBzYW5kYm94IAorICAgICAgICAgIGV4dGVuc2lvbiBjb2RlIHRvIHRoZSBwcm9jZXNz
IG1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpzdG9wQ2FwdHVyZSk6IE5ldy4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnN0YXJ0ZWRDYXB0dXJlU2Vzc2lvbik6IE5l
dywgcmVwb3J0IHN0YXRlCisgICAgICAgICAgY2hhbmdlIHRvIHRoZSBwcm9jZXNzIG1hbmFnZXIu
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjplbmRlZENhcHR1cmVTZXNzaW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc1N0YXRlOjpQcm9jZXNzU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3Rh
dGU6Om1hbmFnZXJzKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlOjpzYW5kYm94RXh0
ZW5zaW9uc0dyYW50ZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGU6OnNldFNhbmRi
b3hFeHRlbnNpb25zR3JhbnRlZCk6CisgICAgICAgIChXZWJLaXQ6OnN0YXRlTWFwKToKKyAgICAg
ICAgKFdlYktpdDo6cHJvY2Vzc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRl
OjphZGRSZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6cmVt
b3ZlUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFu
YWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OmFkZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnJlbW92ZVVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyOjpzdGFydGVkQ2FwdHVyZVNlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6ZW5kZWRDYXB0dXJlU2Vzc2lvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmg6IEFkZGVkLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KTogRG9uJ3QgYWxsb2NhdGUgbV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZSk6IFNldCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB0byBudWxsLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcik6IEFsbG9jYXRlIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyCisg
ICAgICAgICAgbGF6aWx5IGFzIG1vc3QgcGFnZXMgZG9uJ3QgbmVlZCBpdC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKTog
Q2FsbCB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyVXNlck1lZGlhU3RhdGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1BsYXlpbmdNZWRpYURpZENoYW5n
ZSk6IFJlcG9ydCBjYXB0dXJlIHN0YXRlIGNoYW5nZXMgdG8gdGhlIHJlcXVlc3QKKyAgICAgICAg
ICBtYW5hZ2VyIHByb3h5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxl
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zOjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6b3BlcmF0b3JbXSk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6OnNpemUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oOiBB
ZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjp+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKTog
U2FuZGJveCBleHRlbnNpb24KKyAgICAgICAgICBpcyBub3cgaW4gYSBIYXNoTWFwLCBub3QgYSBW
ZWN0b3IuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyk6IFJlY29yZAorICAgICAg
ICAgIElEcyB3aXRoIGV4dGVuc2lvbnMgc28gdGhleSBjYW4gYmUgcmV2b2tlZCBsYXRlci4KKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZXZva2VV
c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyk6IE5ldy4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJNZWRpYURldmljZXNT
YW5kYm94RXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
cmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpncmFudFVzZXJNZWRpYURldmljZXNTYW5kYm94RXh0ZW5zaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE2LTEy
LTA3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgaUNs
b3VkIFBhZ2VzIGFuZCBLZXlub3RlIHNpdGUtc3BlY2lmaWMgaGFja3MKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDk0NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2OSw3IEBAIHNldChXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCiAgICAg
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogICAg
IFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorICAgIFVJUHJv
Y2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAKQEAgLTU4MSw2ICs1ODIsNyBAQCBzZXQoV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCiAKKyAgICBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiAgICAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBXZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyMDk0NjApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJBUElTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCisjaW5jbHVkZSAiVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTkyLDYg
KzkzLDEzIEBAIEZyYW1lQXV0aG9yaXphdGlvblN0YXRlJiBVc2VyTWVkaWFQZXJtaXMKIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkK
IHsKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkuYWRkVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKnRoaXMpOworfQorCitVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5KCkKK3sKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCku
cmVtb3ZlVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKnRoaXMpOworICAg
IGludmFsaWRhdGVSZXF1ZXN0cygpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQpAQCAtMTk3LDI5ICsyMDUsNyBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgZmFtZVN0YXRl
LnNldEhhc1Blcm1pc3Npb25Ub1VzZUNhcHR1cmVEZXZpY2UoYXVkaW9EZXZpY2VVSUQsIHRydWUp
OwogICAgIGZhbWVTdGF0ZS5zZXRIYXNQZXJtaXNzaW9uVG9Vc2VDYXB0dXJlRGV2aWNlKHZpZGVv
RGV2aWNlVUlELCB0cnVlKTsKIAotICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9IDA7Ci0gICAg
dW5zaWduZWQgcmVxdWlyZWRFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpO
b25lOwotICAgIGlmICghYXVkaW9EZXZpY2VVSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlcXVp
cmVkRXh0ZW5zaW9ucyB8PSBTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvOwotICAgICAg
ICBleHRlbnNpb25Db3VudCsrOwotICAgIH0KLSAgICBpZiAoIXZpZGVvRGV2aWNlVUlELmlzRW1w
dHkoKSkgewotICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMgfD0gU2FuZGJveEV4dGVuc2lvbnNH
cmFudGVkOjpWaWRlbzsKLSAgICAgICAgZXh0ZW5zaW9uQ291bnQrKzsKLSAgICB9Ci0KLSAgICB1
bnNpZ25lZCBjdXJyZW50RXh0ZW5zaW9ucyA9IG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3JhbnRl
ZDsKLSAgICBpZiAoIShyZXF1aXJlZEV4dGVuc2lvbnMgJiBjdXJyZW50RXh0ZW5zaW9ucykpIHsK
LSAgICAgICAgQVNTRVJUKGV4dGVuc2lvbkNvdW50KTsKLSAgICAgICAgbV9wYWdlU2FuZGJveEV4
dGVuc2lvbnNHcmFudGVkID0gcmVxdWlyZWRFeHRlbnNpb25zIHwgY3VycmVudEV4dGVuc2lvbnM7
Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZXM7Ci0gICAgICAg
IGhhbmRsZXMuYWxsb2NhdGUoZXh0ZW5zaW9uQ291bnQpOwotICAgICAgICBpZiAoIXZpZGVvRGV2
aWNlVUlELmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIiwgaGFuZGxl
c1stLWV4dGVuc2lvbkNvdW50XSk7Ci0gICAgICAgIGlmICghYXVkaW9EZXZpY2VVSUQuaXNFbXB0
eSgpKQotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJp
Y0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIiwgaGFuZGxlc1stLWV4dGVu
c2lvbkNvdW50XSk7Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbihoYW5kbGVzKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKLSAgICB9CisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmds
ZXRvbigpLndpbGxDcmVhdGVNZWRpYVN0cmVhbSgqdGhpcywgIWF1ZGlvRGV2aWNlVUlELmlzRW1w
dHkoKSwgIXZpZGVvRGV2aWNlVUlELmlzRW1wdHkoKSk7CiAKICAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodXNlck1l
ZGlhSUQsIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCksIG1fcGFnZS5wYWdlSUQoKSk7
CiAjZWxzZQpAQCAtMzQyLDQgKzMyOCwzNCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByCiAjZW5kaWYKIH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6c3RvcENhcHR1cmUoKQoreworICAgIGlmICghbV9wYWdlLmlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3Bh
Z2Uuc2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6Q2FwdHVyZURldmljZXNBcmVNdXRl
ZCk7CisjZW5kaWYKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6c3RhcnRlZENhcHR1cmVTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0ZWRDYXB0dXJlU2Vzc2lvbigq
dGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZW5kZWRDYXB0dXJlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5lbmRlZENhcHR1cmVTZXNzaW9uKCp0
aGlzKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAyMDk0NjApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBAQCBwcml2YXRlOgogY2xhc3MgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgewogcHVibGljOgogICAgIGV4cGxpY2l0IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOworICAg
IH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSgpOworCisgICAgV2ViUGFn
ZVByb3h5JiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAKICAgICB2b2lkIGludmFs
aWRhdGVSZXF1ZXN0cygpOwogCkBAIC02OCw2ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsZWFyQ2FjaGVkU3RhdGUoKTsKIAorICAgIHZvaWQgc3RhcnRlZENhcHR1cmVTZXNzaW9uKCk7
CisgICAgdm9pZCBlbmRlZENhcHR1cmVTZXNzaW9uKCk7CisgICAgdm9pZCBzdG9wQ2FwdHVyZSgp
OworCiBwcml2YXRlOgogICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBj
cmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsK
ICAgICB2b2lkIGRlbnlSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24sIGNvbnN0IFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnQpOwpAQCAtNzYsMTQgKzgzLDYgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5Pj4gbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Pj4gbV9wZW5kaW5nRGV2aWNlUmVx
dWVzdHM7Ci0KLSAgICBlbnVtIFNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCB7Ci0gICAgICAgIE5v
bmUgPSAwLAotICAgICAgICBWaWRlbyA9IDEgPDwgMCwKLSAgICAgICAgQXVkaW8gPSAxIDw8IDEK
LSAgICB9OwotICAgIHVuc2lnbmVkIG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDsKLQog
ICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxGcmFtZUF1dGhvcml6YXRpb25T
dGF0ZT4+IG1fZnJhbWVTdGF0ZXM7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIk1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCIKKyNpbmNs
dWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGF1ZGlvRXh0ZW5zaW9uUGF0aCA9ICJjb20uYXBwbGUud2Via2l0
Lm1pY3JvcGhvbmUiOworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHZpZGVvRXh0ZW5zaW9uUGF0
aCA9ICJjb20uYXBwbGUud2Via2l0LmNhbWVyYSI7CisKK2NsYXNzIFByb2Nlc3NTdGF0ZSB7Citw
dWJsaWM6CisgICAgUHJvY2Vzc1N0YXRlKCkgeyB9CisgICAgUHJvY2Vzc1N0YXRlKGNvbnN0IFBy
b2Nlc3NTdGF0ZSYpID0gZGVsZXRlOworCisgICAgdm9pZCBhZGRSZXF1ZXN0TWFuYWdlcihVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVx
dWVzdE1hbmFnZXIoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKKyAg
ICBWZWN0b3I8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqPiYgbWFuYWdl
cnMoKSB7IHJldHVybiBtX21hbmFnZXJzOyB9CisKKyAgICBlbnVtIFNhbmRib3hFeHRlbnNpb25z
R3JhbnRlZCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBWaWRlbyA9IDEgPDwgMCwKKyAg
ICAgICAgQXVkaW8gPSAxIDw8IDEKKyAgICB9OworCisgICAgU2FuZGJveEV4dGVuc2lvbnNHcmFu
dGVkIHNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCgpIHsgcmV0dXJuIG1fcGFnZVNhbmRib3hFeHRl
bnNpb25zR3JhbnRlZDsgfQorICAgIHZvaWQgc2V0U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkKHVu
c2lnbmVkIGdyYW50ZWQpIHsgbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkID0gc3RhdGlj
X2Nhc3Q8U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkPihncmFudGVkKTsgfQorCitwcml2YXRlOgor
ICAgIFZlY3RvcjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSo+IG1fbWFu
YWdlcnM7CisgICAgU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkIG1fcGFnZVNhbmRib3hFeHRlbnNp
b25zR3JhbnRlZCB7IFNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6Tm9uZSB9OworfTsKKworc3Rh
dGljIEhhc2hNYXA8V2ViUHJvY2Vzc1Byb3h5Kiwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NTdGF0
ZT4+JiBzdGF0ZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2Vi
UHJvY2Vzc1Byb3h5Kiwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NTdGF0ZT4+PiBtYXA7CisgICAg
cmV0dXJuIG1hcDsKK30KKworc3RhdGljIFByb2Nlc3NTdGF0ZSYgcHJvY2Vzc1N0YXRlKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKK3sKKyAgICBhdXRvJiBzdGF0ZSA9IHN0YXRlTWFwKCkuYWRk
KCZwcm9jZXNzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKHN0YXRlKQorICAg
ICAgICByZXR1cm4gKnN0YXRlOworCisgICAgc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NTdGF0ZT4oKTsKKyAgICByZXR1cm4gKnN0YXRlOworfQorCit2b2lkIFByb2Nlc3NTdGF0ZTo6
YWRkUmVxdWVzdE1hbmFnZXIoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkm
IHByb3h5KQoreworICAgIEFTU0VSVCghbV9tYW5hZ2Vycy5jb250YWlucygmcHJveHkpKTsKKyAg
ICBtX21hbmFnZXJzLmFwcGVuZCgmcHJveHkpOworfQorCit2b2lkIFByb2Nlc3NTdGF0ZTo6cmVt
b3ZlUmVxdWVzdE1hbmFnZXIoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkm
IHByb3h5KQoreworICAgIEFTU0VSVChtX21hbmFnZXJzLmNvbnRhaW5zKCZwcm94eSkpOworICAg
IG1fbWFuYWdlcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJnByb3h5XShhdXRvIG90aGVyKSB7Cisg
ICAgICAgIHJldHVybiBvdGhlciA9PSAmcHJveHk7CisgICAgfSk7Cit9CisKK1VzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyJiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI+IG1hbmFnZXI7
CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6
OmFkZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBwcm94eSkKK3sKKyAgICBwcm9jZXNzU3RhdGUocHJv
eHkucGFnZSgpLnByb2Nlc3MoKSkuYWRkUmVxdWVzdE1hbmFnZXIocHJveHkpOworfQorCit2b2lk
IFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJv
eHkpCit7CisgICAgZW5kZWRDYXB0dXJlU2Vzc2lvbihwcm94eSk7CisKKyAgICBhdXRvJiBzdGF0
ZSA9IHByb2Nlc3NTdGF0ZShwcm94eS5wYWdlKCkucHJvY2VzcygpKTsKKyAgICBzdGF0ZS5yZW1v
dmVSZXF1ZXN0TWFuYWdlcihwcm94eSk7CisgICAgaWYgKHN0YXRlLm1hbmFnZXJzKCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIGF1dG8gaXQgPSBzdGF0ZU1hcCgpLmZpbmQoJnByb3h5LnBhZ2UoKS5w
cm9jZXNzKCkpOworICAgICAgICBzdGF0ZU1hcCgpLnJlbW92ZShpdCk7CisgICAgfQorfQorCit2
b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0oVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHByb3h5LCBib29sIHdpdGhBdWRpbywg
Ym9vbCB3aXRoVmlkZW8pCit7CisgICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFpbnMoJnByb3h5
LnBhZ2UoKS5wcm9jZXNzKCkpKTsKKworICAgIGF1dG8mIHN0YXRlID0gcHJvY2Vzc1N0YXRlKHBy
b3h5LnBhZ2UoKS5wcm9jZXNzKCkpOworICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9IDA7Cisg
ICAgdW5zaWduZWQgcmVxdWlyZWRFeHRlbnNpb25zID0gUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0
ZW5zaW9uc0dyYW50ZWQ6Ok5vbmU7CisKKyAgICBpZiAod2l0aEF1ZGlvKSB7CisgICAgICAgIHJl
cXVpcmVkRXh0ZW5zaW9ucyB8PSBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRl
ZDo6QXVkaW87CisgICAgICAgIGV4dGVuc2lvbkNvdW50Kys7CisgICAgfQorICAgIGlmICh3aXRo
VmlkZW8pIHsKKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zIHw9IFByb2Nlc3NTdGF0ZTo6U2Fu
ZGJveEV4dGVuc2lvbnNHcmFudGVkOjpWaWRlbzsKKyAgICAgICAgZXh0ZW5zaW9uQ291bnQrKzsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBjdXJyZW50RXh0ZW5zaW9ucyA9IHN0YXRlLnNhbmRib3hF
eHRlbnNpb25zR3JhbnRlZCgpOworICAgIGlmICghKHJlcXVpcmVkRXh0ZW5zaW9ucyAmIGN1cnJl
bnRFeHRlbnNpb25zKSkgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBo
YW5kbGVzOworICAgICAgICBoYW5kbGVzLmFsbG9jYXRlKGV4dGVuc2lvbkNvdW50KTsKKworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBpZHM7CisgICAgICAgIGlkcy5yZXNlcnZlQ2FwYWNpdHkoZXh0
ZW5zaW9uQ291bnQpOworCisgICAgICAgIGlmICh3aXRoQXVkaW8gJiYgcmVxdWlyZWRFeHRlbnNp
b25zICYgUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvKSB7Cisg
ICAgICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4
dGVuc2lvbihhdWRpb0V4dGVuc2lvblBhdGgsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKSB7
CisgICAgICAgICAgICAgICAgaWRzLmFwcGVuZChBU0NJSUxpdGVyYWwoYXVkaW9FeHRlbnNpb25Q
YXRoKSk7CisgICAgICAgICAgICAgICAgY3VycmVudEV4dGVuc2lvbnMgfD0gUHJvY2Vzc1N0YXRl
OjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHdpdGhWaWRlbyAmJiByZXF1aXJlZEV4dGVuc2lvbnMgJiBQcm9j
ZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6VmlkZW8pIHsKKyAgICAgICAgICAg
IGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKHZp
ZGVvRXh0ZW5zaW9uUGF0aCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpIHsKKyAgICAgICAg
ICAgICAgICBpZHMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCh2aWRlb0V4dGVuc2lvblBhdGgpKTsKKyAg
ICAgICAgICAgICAgICBjdXJyZW50RXh0ZW5zaW9ucyB8PSBQcm9jZXNzU3RhdGU6OlNhbmRib3hF
eHRlbnNpb25zR3JhbnRlZDo6VmlkZW87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBzdGF0ZS5zZXRTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQoY3VycmVudEV4dGVuc2lvbnMp
OworICAgICAgICBwcm94eS5wYWdlKCkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucyhpZHMsIFdURk1vdmUoaGFuZGxlcykpKSwgcHJveHkucGFnZSgpLnBhZ2VJRCgp
KTsKKyAgICB9Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnN0YXJ0ZWRDYXB0
dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkp
Cit7CisgICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFpbnMoJnByb3h5LnBhZ2UoKS5wcm9jZXNz
KCkpKTsKK30KKwordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6ZW5kZWRDYXB0dXJlU2Vz
c2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFpbnMoJnByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpKTsK
KworICAgIGF1dG8mIHN0YXRlID0gcHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkp
OworICAgIGJvb2wgaGFzQXVkaW9DYXB0dXJlID0gZmFsc2U7CisgICAgYm9vbCBoYXNWaWRlb0Nh
cHR1cmUgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBzdGF0ZS5tYW5hZ2Vycygp
KSB7CisgICAgICAgIGlmIChtYW5hZ2VyLT5wYWdlKCkuaGFzQWN0aXZlQXVkaW9TdHJlYW0oKSkK
KyAgICAgICAgICAgIGhhc0F1ZGlvQ2FwdHVyZSA9IHRydWU7CisgICAgICAgIGlmIChtYW5hZ2Vy
LT5wYWdlKCkuaGFzQWN0aXZlVmlkZW9TdHJlYW0oKSkKKyAgICAgICAgICAgIGhhc1ZpZGVvQ2Fw
dHVyZSA9IHRydWU7CisgICAgfQorCisgICAgaWYgKGhhc0F1ZGlvQ2FwdHVyZSAmJiBoYXNWaWRl
b0NhcHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtczsK
KyAgICB1bnNpZ25lZCBjdXJyZW50RXh0ZW5zaW9ucyA9IHN0YXRlLnNhbmRib3hFeHRlbnNpb25z
R3JhbnRlZCgpOworICAgIGlmICghaGFzQXVkaW9DYXB0dXJlICYmIGN1cnJlbnRFeHRlbnNpb25z
ICYgUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvKSB7CisgICAg
ICAgIHBhcmFtcy5hcHBlbmQoQVNDSUlMaXRlcmFsKGF1ZGlvRXh0ZW5zaW9uUGF0aCkpOworICAg
ICAgICBjdXJyZW50RXh0ZW5zaW9ucyAmPSB+UHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9u
c0dyYW50ZWQ6OkF1ZGlvOworICAgIH0KKyAgICBpZiAoIWhhc1ZpZGVvQ2FwdHVyZSAmJiBjdXJy
ZW50RXh0ZW5zaW9ucyAmIFByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpW
aWRlbykgeworICAgICAgICBwYXJhbXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCh2aWRlb0V4dGVuc2lv
blBhdGgpKTsKKyAgICAgICAgY3VycmVudEV4dGVuc2lvbnMgJj0gflByb2Nlc3NTdGF0ZTo6U2Fu
ZGJveEV4dGVuc2lvbnNHcmFudGVkOjpWaWRlbzsKKyAgICB9CisKKyAgICBpZiAocGFyYW1zLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGUuc2V0U2FuZGJveEV4dGVuc2lv
bnNHcmFudGVkKGN1cnJlbnRFeHRlbnNpb25zKTsKKyAgICBwcm94eS5wYWdlKCkucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKHBhcmFtcyksIHByb3h5LnBhZ2UoKS5wYWdlSUQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKKworY2xhc3MgVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIgeworcHVibGljOgorCisgICAgc3RhdGljIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBzaW5n
bGV0b24oKTsKKworICAgIHZvaWQgYWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsKKyAgICB2b2lk
IHJlbW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CisKKyAgICB2b2lkIHdpbGxDcmVhdGVNZWRp
YVN0cmVhbShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIGJvb2wgd2l0
aEF1ZGlvLCBib29sIHdpdGhWaWRlbyk7CisKKyAgICB2b2lkIHN0YXJ0ZWRDYXB0dXJlU2Vzc2lv
bihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAgIHZvaWQgZW5k
ZWRDYXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTgsNyArMzU4LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cAogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0
aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMp
Ci0gICAgLCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAgICAs
IG1fYWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzKQogICAgICwgbV92aWV3V2Fz
RXZlckluV2luZG93KGZhbHNlKQogI2lmIFBMQVRGT1JNKElPUykKQEAgLTUzNzYsOCArNTM3NSw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGUKICNpZiBFTkFCTEUo
R0VPTE9DQVRJT04pCiAgICAgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5p
bnZhbGlkYXRlUmVxdWVzdHMoKTsKICNlbmRpZgorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVz
dHMoKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IG51bGxwdHI7
CiAjZW5kaWYKIAogICAgIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmlu
dmFsaWRhdGVSZXF1ZXN0cygpOwpAQCAtNTY5MiwxMiArNTY5MiwyMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgcmVxdWVzdC0+ZGVueSgpOwogfQogCitV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5Ojp1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQoreworICAgIGlmIChtX3VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjsKKworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eT4oKnRoaXMpOworICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlz
c2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRh
JiBhdWRpb0NvbnN0cmFpbnRzRGF0YSwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0Rh
dGEmIHZpZGVvQ29uc3RyYWludHNEYXRhKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKIAotICAgIG1f
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yRnJhbWUodXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
SWRlbnRpZmllciwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGF1ZGlvQ29uc3Ry
YWludHNEYXRhLCB2aWRlb0NvbnN0cmFpbnRzRGF0YSk7CisgICAgdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkucmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1c2Vy
TWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgYXVkaW9Db25zdHJhaW50c0RhdGEsIHZpZGVv
Q29uc3RyYWludHNEYXRhKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01NzE0LDcgKzU3MjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzCiAgICAgV2ViRnJhbWVQcm94eSogZnJh
bWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJh
bWUpOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZW51bWVyYXRl
TWVkaWFEZXZpY2VzRm9yRnJhbWUodXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luSWRlbnRpZmllciwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIpOwor
ICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmVudW1lcmF0ZU1lZGlhRGV2
aWNlc0ZvckZyYW1lKHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
bklkZW50aWZpZXIsIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CkBAIC01NzI2LDcgKzU3MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW51bWVyYXRlTWVkaWFE
ZXZpY2VzCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJVc2VyTWVkaWFTdGF0ZSgpCiB7CiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jbGVhckNhY2hlZFN0YXRlKCk7CisgICAgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKCkuY2xlYXJDYWNoZWRTdGF0ZSgpOwogI2VuZGlmCiB9CiAKQEAgLTY0MDksMTUgKzY0
MTgsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hhbgogCiAgICAg
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZE1lZGlhU3RhdGVIYXNB
Y3RpdmVDYXB0dXJlID0gbV9tZWRpYVN0YXRlICYgKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhh
c0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSB8IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0Fj
dGl2ZVZpZGVvQ2FwdHVyZURldmljZSk7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG5ld01lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlID0gc3RhdGUgJiAoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlIHwgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlKTsKLSAgICBpZiAo
IW9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmIG5ld01lZGlhU3RhdGVIYXNBY3RpdmVD
YXB0dXJlKQotICAgICAgICBtX3VpQ2xpZW50LT5kaWRCZWdpbkNhcHR1cmVTZXNzaW9uKCk7Ci0g
ICAgaWYgKG9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmICFuZXdNZWRpYVN0YXRlSGFz
QWN0aXZlQ2FwdHVyZSkKLSAgICAgICAgbV91aUNsaWVudC0+ZGlkRW5kQ2FwdHVyZVNlc3Npb24o
KTsKIAogICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBwbGF5aW5nTWVkaWFNYXNr
ID0gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gfCBNZWRpYVByb2R1Y2VyOjpJc1BsYXlp
bmdWaWRlbzsKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgb2xkU3RhdGUgPSBt
X21lZGlhU3RhdGU7CiAgICAgbV9tZWRpYVN0YXRlID0gc3RhdGU7CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIGlmICghb2xkTWVkaWFTdGF0ZUhhc0FjdGl2ZUNhcHR1cmUgJiYgbmV3
TWVkaWFTdGF0ZUhhc0FjdGl2ZUNhcHR1cmUpIHsKKyAgICAgICAgbV91aUNsaWVudC0+ZGlkQmVn
aW5DYXB0dXJlU2Vzc2lvbigpOworICAgICAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKS5zdGFydGVkQ2FwdHVyZVNlc3Npb24oKTsKKyAgICB9IGVsc2UgaWYgKG9sZE1lZGlh
U3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmICFuZXdNZWRpYVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSkg
eworICAgICAgICBtX3VpQ2xpZW50LT5kaWRFbmRDYXB0dXJlU2Vzc2lvbigpOworICAgICAgICB1
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5lbmRlZENhcHR1cmVTZXNzaW9uKCk7
CisgICAgfQorI2VuZGlmCisKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3Rh
dGU6OklzQXVkaWJsZSk7CiAKICAgICBwbGF5aW5nTWVkaWFNYXNrIHw9IE1lZGlhUHJvZHVjZXI6
Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSB8IE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZp
ZGVvQ2FwdHVyZURldmljZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0OSw2ICsxMDQ5LDggQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc1BsYXlpbmdBdWRpbygpIGNvbnN0IHsgcmV0dXJuICEhKG1fbWVkaWFTdGF0
ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvKTsgfQogICAgIHZvaWQg
aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzLCB1aW50NjRfdCk7CisgICAgYm9vbCBoYXNBY3RpdmVBdWRpb1N0cmVhbSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVkaWFTdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2
ZUF1ZGlvQ2FwdHVyZURldmljZTsgfQorICAgIGJvb2wgaGFzQWN0aXZlVmlkZW9TdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtX21lZGlhU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNB
Y3RpdmVWaWRlb0NhcHR1cmVEZXZpY2U7IH0KICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0
YXRlOyB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMjk1LDYgKzEyOTcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90
YWxCeXRlc05lZWRlZCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKKyAgICBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCk7CiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZy
YW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJiBhdWRpb0Nv
bnN0cmFpbnRzLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSYgdmlkZW9Db25z
dHJhaW50cyk7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHVzZXJNZWRpYURvY3VtZW50
T3JpZ2luSWRlbnRpZmllciwgU3RyaW5nIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVy
KTsKIApAQCAtMTY4OCw3ICsxNjkxLDkgQEAgcHJpdmF0ZToKICAgICBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9u
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAKLSAgICBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKIAogICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWdzIG1fYWN0aXZpdHlTdGF0ZTsKICAgICBib29sIG1fdmlld1dhc0V2ZXJJbldpbmRvdzsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOSBAQAogCQkwNzI5
N0Y5RjFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RjlEMUMx
N0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovOyB9Owog
CQkwNzI5N0ZBMjFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdG
QTAxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmNwcCAqLzsg
fTsKIAkJMDcyOTdGQTMxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5
N0ZBMTFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzRFNzVGRDFE
RjIyMTE1MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkMxREYyMDAyNDAwRDMx
OEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJMDc0RTc1RkUxREYy
MjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzVGQjFERjFGRDEzMDBEMzE4RUMg
LyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKKwkJMDc0RTc2MDIxREY3MDdCRTAw
RDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc2MDAxREY3MDc1RDAwRDMxOEVD
IC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwICovOyB9OwogCQkwNzZFODg0RTFB
MTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAv
KiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwN0E1RUJCQjFDN0JBNDNFMDBCOUNB
NjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRs
ZVJlZi5jcHAgKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFu
ZGxlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMDYxLDYgKzIwNjQsMTAg
QEAKIAkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RkEw
MUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RkExMUMxODZBREIwMDNG
MDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzRFNzVGQjFERjFGRDEzMDBEMzE4RUMgLyogVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0RTc1RkMx
REYyMDAyNDAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0RTc2MDAxREY3MDc1RDAwRDMxOEVDIC8q
IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51Q2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBGQyAv
KiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFDN0JBNDNFMDBCOUNB
NjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU0NzYsNiArNTQ4Myw4IEBACiAJCTRBNDEwRjQxMTlBRjdCMjcwMDJFQkFCNSAvKiBNZWRp
YVN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MDc0RTc2MDAxREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMu
Y3BwICovLAorCQkJCTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zLmggKi8sCiAJCQkJNEE0MTBGNDIxOUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgKi8sCiAJCQkJNEE0MTBGNDMxOUFGN0Iy
NzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovLAogCQkJ
KTsKQEAgLTYxNTYsNiArNjE2NSw4IEBACiAJCUJDMDMyREMzMTBGNDM4MjYwMDU4QzE1QSAvKiBV
SVByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTA3NEU3NUZDMURGMjAwMjQwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAg
Ki8sCisJCQkJMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmggKi8sCiAJCQkJQkMwMzJEQzQxMEY0Mzg3QzAwNThDMTVBIC8qIEFQSSAqLywKIAkJCQkx
QUIxRjc3NjFEMUIzMEE5MDA3QzlCRDEgLyogQXBwbGVQYXkgKi8sCiAJCQkJNTEyRjU4OEQxMkE4
ODM2RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovLApAQCAtODMwMCw2ICs4MzExLDcgQEAK
IAkJCQk1MzIxNTk1NTFEQkFFNzI5MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNEYxOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDOEIzNzQxMjVGQjY5MDAwREU0
NkE0IC8qIFdLR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3NEU3NUZFMURGMjIxMTkw
MEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3MTdBIC8qIFdL
SWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTkzNjMsNiArOTM3NSw3IEBACiAJCQkJ
MEY1RTIwMDMxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyREEwNDlCMzE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODcxMDE2MTgyODQxNUQwMDE4
RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQkwNzRFNzVGRDFERjIyMTE1MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4OTQ5RjAxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0M0M0FC
QTEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNkZCN0QyMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05ODI3LDYgKzk4NDAsNyBAQAogCQkJCTFBMjU2RTM3MThBMUE3ODgwMDZGQjky
MiAvKiBXS05hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDNBNjVEQTFB
N0MzQTFGMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3MEYzNEEyMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDc0RTc2MDIxREY3MDdCRTAwRDMxOEVDIC8qIE1lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlGQUExMTc2RDFD
QjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQzQTY1RTIxQTdDM0E5MzAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvblJlZi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTFCMEVCNTE4QTQyNDk1MDAzODQ4MUEgLyogV0tOYXZpZ2F0aW9uUmVzcG9u
c2UubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6TWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKKyAgICA6IG1faWRzKGlkcykKKyAgICAsIG1faGFuZGxl
cyhXVEZNb3ZlKGhhbmRsZXMpKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG1faWRzLnNpemUoKSA9PSBtX2hhbmRsZXMuc2l6ZSgpKTsKK30KKwordm9pZCBNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9pZHM7CisgICAgbV9oYW5kbGVzLmVuY29kZShlbmNvZGVy
KTsKK30KKworYm9vbCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiByZXN1bHQpCit7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZHMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUo
ZGVjb2RlciwgcmVzdWx0Lm1faGFuZGxlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitzdGQ6OnBhaXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6Om9wZXJhdG9yW10oc2l6ZV90IGkp
Cit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9pZHMuc2l6ZSgpID09
IG1faGFuZGxlcy5zaXplKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGkgPCBtX2lkcy5zaXplKCkpOworICAgIHJldHVybiB7IG1faWRzW2ldLCBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUobV9oYW5kbGVzW2ldKSB9OworfQorCitjb25zdCBzdGQ6OnBhaXI8U3RyaW5n
LCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6
Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0Cit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04obV9pZHMuc2l6ZSgpID09IG1faGFuZGxlcy5zaXplKCkpOworICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2lkcy5zaXplKCkpOworICAgIHJldHVy
biB7IG1faWRzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUobV9oYW5kbGVzW2ldKSB9Owor
fQorCitzaXplX3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6c2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faWRzLnNpemUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
KTsKK3B1YmxpYzoKKyAgICBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKCkKKyAgICB7Cisg
ICAgfQorCisgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBp
ZHMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcyk7CisKKyAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG9wZXJhdG9yW10oc2l6ZV90
IGkpOworICAgIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
KworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29s
IGRlY29kZShJUEM6OkRlY29kZXImLCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJik7CisK
K3ByaXZhdGU6CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZHM7CisgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgbV9oYW5kbGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA5NDYwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNlck0KIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpCiB7CiAg
ICAgZm9yIChhdXRvJiBzYW5kYm94RXh0ZW5zaW9uIDogbV91c2VyTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucykKLSAgICAgICAgc2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7CisgICAgICAg
IHNhbmRib3hFeHRlbnNpb24udmFsdWUtPnJldm9rZSgpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJl
cXVlc3QmIHJlcXVlc3QpCkBAIC0yMDIsMTUgKzIwMiwyMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgcmVxdWVzdC0+c2V0RGV2aWNlSW5mbyhkZXZpY2VM
aXN0LCBtZWRpYURldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgaGFzUGVyc2lzdGVudEFjY2Vzcyk7
CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJN
ZWRpYURldmljZXNTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNv
bnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmIGV4dGVuc2lvbnMpCiB7Ci0gICAgQVNT
RVJUKG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuc2l6ZSgpIDw9IDIpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgeworICAgICAg
ICBhdXRvJiBleHRlbnNpb24gPSBleHRlbnNpb25zW2ldOworICAgICAgICBleHRlbnNpb24uc2Vj
b25kLT5jb25zdW1lKCk7CisgICAgICAgIG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMuYWRkKGV4dGVuc2lvbi5maXJzdCwgZXh0ZW5zaW9uLnNlY29uZC5jb3B5UmVmKCkpOworICAg
IH0KK30KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKSkgewotICAgICAgICAg
ICAgZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAgICAgICBtX3VzZXJNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24ucmVsZWFzZSgpKTsKLSAgICAgICAgfQor
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJldm9rZVVzZXJNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25JRHMp
Cit7CisgICAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb25JRCA6IGV4dGVuc2lvbklEcykgewor
ICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMudGFrZShleHRlbnNpb25JRCk7CisgICAgICAgIGlmIChleHRlbnNpb24pCisgICAgICAgICAg
ICBleHRlbnNpb24tPnJldm9rZSgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lvbiAyMDk0NjApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJh
aW50cy5oPgpAQCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxNZWRpYURl
dmljZXNFbnVtZXJhdGlvbihXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Qm
KTsKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1aW50NjRfdCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiBkZXZpY2VMaXN0LCBjb25zdCBT
dHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgYm9vbCBvcmlnaW5IYXNQZXJzaXN0ZW50
QWNjZXNzKTsKIAotICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lv
bihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOworICAgIHZvaWQgZ3JhbnRV
c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zJik7CisgICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5z
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2VuZFVz
ZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwpAQCAtNjksNyArNzEs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpNZWRp
YURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q+PiBtX2lkVG9NZWRpYURldmljZXNFbnVtZXJhdGlv
blJlcXVlc3RNYXA7CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51
bWVyYXRpb25SZXF1ZXN0PiwgdWludDY0X3Q+IG1fbWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1
ZXN0VG9JRE1hcDsKIAotICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fdXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV91c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczsK
IAogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50PiwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pj4+IG1fYmxvY2tlZFJlcXVlc3RzOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDIwOTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwMCw5ICszNzAwLDE0IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW0KICAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5kaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQs
IGRldmljZXMsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgb3JpZ2luSGFzUGVyc2lzdGVudEFj
Y2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4
dGVuc2lvbihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKK3Zv
aWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiBleHRlbnNpb25zKQogewotICAgIG1fdXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmdyYW50VXNlck1lZGlhRGV2aWNlc1NhbmRib3hF
eHRlbnNpb24oaGFuZGxlcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKK30K
Kwordm9pZCBXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQoreworICAgIG1fdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLnJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zKGV4dGVuc2lvbklEcyk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMDk0NjApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTc4LDcgKzExNzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXNlck1lZGlhQWNjZXNzV2FzRGVu
aWVkKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCByZWFzb24sIFN0cmluZyBpbnZhbGlk
Q29uc3RyYWludCk7CiAKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlv
bih1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZp
Y2U+JiBkZXZpY2VzLCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgYm9v
bCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKTsKLSAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2
aWNlc1NhbmRib3hFeHRlbnNpb24oY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
KTsKKyAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3Qg
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYpOworICAgIHZvaWQgcmV2b2tlVXNlck1lZGlh
RGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgog
CiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVj
dGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDYwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTI5Miw3ICsyOTIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBTdHJp
bmcgYXVkaW9EZXZpY2VVSUQsIFN0cmluZyB2aWRlb0RldmljZVVJRCkKICAgICBVc2VyTWVkaWFB
Y2Nlc3NXYXNEZW5pZWQodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IHJlYXNvbiwgU3Ry
aW5nIGludmFsaWRDb25zdHJhaW50KQogICAgIERpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJh
dGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
IGRldmljZXMsIFN0cmluZyBtZWRpYURldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgYm9vbCBoYXNQ
ZXJzaXN0ZW50QWNjZXNzKQotICAgIEdyYW50VXNlck1lZGlhRGV2aWNlc1NhbmRib3hFeHRlbnNp
b24oV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQorICAgIEdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoV2ViS2l0
OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zIHNhbmRib3hFeHRlbnNpb25zKQorICAgIFJl
dm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+IHNhbmRi
b3hFeHRlbnNpb25JRHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk0
NzgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxNi0xMi0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbTWVkaWFTdHJlYW1dW01hY10gUmV2b2tlIHNhbmRib3ggZXh0ZW5zaW9ucyB3aGVuIGNh
cHR1cmUgZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBBZGQgYSB0ZXN0IHdoaWNoIGxvYWRzIGEgcGFnZSB0aGF0IGNhbGxzIG5hdmln
YXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcywga2lsbHMgdGhlCisgICAgICAgIHBh
Z2UsIGFuZCBsb2FkcyB0aGUgc2FtZSBwYWdlIGFnYWluIHRvIGVuc3VyZSB0aGF0IHRoZSBXSzIg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkKKyAgICAgICAgaXMgcmVzZXQg
YW5kIHJlY3JlYXRlZCB3aGVuIGEgd2ViIHBhZ2UgZXhpdHMgYW5kIGlzIHJlbG9hZGVkLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNw
cDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25DYWxsYmFjayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWw6IEFk
ZGVkLgorCiAyMDE2LTEyLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhIG5ldyBwcm9qZWN0IGZvciByZWNvcmRpbmcgYW5kIHBsYXlpbmcg
YmFjayBlZGl0aW5nIGNvbW1hbmRzIGluIGVkaXRhYmxlIHdlYiBjb250ZW50CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYg
Kzc1LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYktpdDIKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL0Rvd25sb2FkRGVjaWRl
RGVzdGluYXRpb25DcmFzaC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJL
aXQyL0VudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViS2l0Mi9GaW5kLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwOTQ2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAv
KiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KKwkJMDc0OTJCM0IxREY4QjE0QzAwNjMzREUxIC8qIEVudW1lcmF0ZU1l
ZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNw
cCAqLzsgfTsKKwkJMDc0OTJCM0MxREY4Qjg2NjAwNjMzREUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2
aWNlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3NDkyQjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMu
aHRtbCAqLzsgfTsKIAkJMEYxMzlFNzcxQTQyM0E1QjAwRjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzlFNzUx
QTQyM0E1MzAwRjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tICovOyB9OwogCQkwRjEzOUU3ODFBNDIz
QTZCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTcyMUE0MjNBMkIwMEY1OTBGNSAv
KiBQbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tICovOyB9OwogCQkwRjEzOUU3OTFBNDI0NTcwMDBG
NTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTcyMUE0MjNBMkIwMEY1OTBGNSAvKiBQbGF0
Zm9ybVV0aWxpdGllc0NvY29hLm1tICovOyB9OwpAQCAtNTgzLDYgKzU4NSw3IEBACiAJCQlkc3RQ
YXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsK
IAkJCWZpbGVzID0gKAorCQkJCTA3NDkyQjNDMURGOEI4NjYwMDYzM0RFMSAvKiBlbnVtZXJhdGVN
ZWRpYURldmljZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QjI3MEZFRTFEREMy
QzBCMDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNEMyQUIyMjFERDZEOTVFMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8t
d2l0aC1zb3VuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTgzNDlEM0M0MURCOTcy
OEUwMDRBOUY2NSAvKiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCkBAIC03MzQsNiArNzM3LDggQEAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCQkwMEJDMTY4NTE2ODBGRTgxMDA2NUYxRTUgLyogUHVibGljU3VmZml4
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVibGljU3VmZml4
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMENEOUY2MjE1QkUzMTJDMDAyREEy
Q0UgLyogQmFja0ZvcndhcmRMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQmFja0ZvcndhcmRMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzQ5MkIzOTFERjhBREE0MDA2MzNERTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8q
IEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzY2REQxRjFBNUFENTIwMDAyM0UzQkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVuZGluZ0FQSVJlcXVl
c3RVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODMzNDE0ODU3Q0U0
MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIYXNoTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDg1Njkx
NDg1Qzk4QjAwRUEyMDAzIC8qIFNldEZvclNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNldEZvclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2OTksNiArMTcwNCw3IEBACiAJCUJDOTA5NjQxMTI1NTYxNjAwMDA4Mzc1NiAvKiBX
ZWJLaXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
NzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCAqLywK
IAkJCQlBRDU3QUMxRTFEQTc0NjREMDBGRjFCREUgLyogRGlkUmVtb3ZlRnJhbWVGcm9tSGllYXJj
aHlJblBhZ2VDYWNoZV9CdW5kbGUuY3BwICovLAogCQkJCUFENTdBQzFGMURBNzQ2NEQwMEZGMUJE
RSAvKiBEaWRSZW1vdmVGcmFtZUZyb21IaWVhcmNoeUluUGFnZUNhY2hlLmNwcCAqLywKIAkJCQkw
RjEzOUU3NDFBNDIzQTQ2MDBGNTkwRjUgLyogY29jb2EgKi8sCkBAIC0xODc3LDYgKzE4ODMsNyBA
QAogCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3NTYgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzQ5MkIzOTFERjhBREE0MDA2MzNE
RTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgKi8sCiAJCQkJQzA0NUY5NDYxMzg1QzJG
ODAwQzBGM0NEIC8qIDE4LWNoYXJhY3RlcnMuaHRtbCAqLywKIAkJCQkxQzJCODE4NTFDODkyNTIz
MDBBNTUyOUYgLyogQWhlbS50dGYgKi8sCiAJCQkJOTNEM0QxOUIxN0IxQTdCMDAwQzdDNDE1IC8q
IGFsbC1jb250ZW50LWluLW9uZS1pZnJhbWUuaHRtbCAqLywKQEAgLTI1ODcsNiArMjU5NCw3IEBA
CiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VERTFBNDExQTkyMDA0NDdDNEMgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RUIwMUE0MTFBNDQwMDQ0N0M0QyAvKiBVUkxFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKKwkJCQkwNzQ5MkIzQjFERjhCMTRDMDA2MzNERTEgLyogRW51bWVyYXRl
TWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNkEyQzcwMURDQ0ZBOEMwMEMw
RDA4NSAvKiBMb2NhbFN0b3JhZ2VRdWlya1Rlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREZG
N0I2RDFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDNkU2NTQ0MUQ1Q0VGRDQwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRW51bWVyYXRlTWVk
aWFEZXZpY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNSZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGlj
IGJvb2wgbG9hZGVkRmlyc3RUaW1lOworc3RhdGljIGJvb2wgbG9hZGVkU2Vjb25kVGltZTsKKwor
dm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayhXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUmVmIHBlcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKikKK3sKKyAg
ICBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1NldFVzZXJNZWRpYUFjY2Vzc0luZm8ocGVybWlz
c2lvblJlcXVlc3QsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIweDEyMzQ1Njc4OSIp
LCB0cnVlKTsKKyAgICBpZiAoIWxvYWRlZEZpcnN0VGltZSkgeworICAgICAgICBsb2FkZWRGaXJz
dFRpbWUgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9hZGVkU2Vjb25k
VGltZSA9IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgRW51bWVyYXRlRGV2aWNlcykKK3sKKyAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKTsKKworICAgIFdLUmV0
YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAoQWRvcHRXSywgV0tQYWdlR3JvdXBDcmVh
dGVXaXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJFbnVtZXJhdGVEZXZpY2VzIikuZ2V0KCkpKTsK
KyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJl
bmNlcyhwYWdlR3JvdXAuZ2V0KCkpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1Nl
dE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihwcmVmZXJlbmNlcywgZmFsc2Up
OworCisgICAgV0tQYWdlVUlDbGllbnRWNiB1aUNsaWVudDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50
LCAwLCBzaXplb2YodWlDbGllbnQpKTsKKyAgICB1aUNsaWVudC5iYXNlLnZlcnNpb24gPSA2Owor
ICAgIHVpQ2xpZW50LmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbiA9IGNoZWNrVXNl
ck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdlYlZpZXcucGFnZSgp
LCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICBhdXRvIHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRl
VVJMRm9yUmVzb3VyY2UoImVudW1lcmF0ZU1lZGlhRGV2aWNlcyIsICJodG1sIikpOworCisgICAg
Ly8gTG9hZCBhbmQga2lsbCB0aGUgcGFnZS4KKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFn
ZSgpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmbG9hZGVkRmlyc3RUaW1lKTsKKyAgICBX
S1BhZ2VUZXJtaW5hdGUod2ViVmlldy5wYWdlKCkpOworCisgICAgLy8gTG9hZCBpdCBhZ2FpbiB0
byBtYWtlIHN1cmUgdGhlIHVzZXIgbWVkaWEgcHJvY2VzcyBtYW5hZ2VyIGRvZXNuJ3QgYXNzZXJ0
LgorICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisgICAgVXRp
bDo6cnVuKCZsb2FkZWRTZWNvbmRUaW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFdLX0hB
VkVfQ19TUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9lbnVtZXJh
dGVNZWRpYURldmljZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2VudW1lcmF0ZU1lZGlhRGV2aWNlcy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gZW51bWVyYXRlKGRldmljZXMp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coImVudW1lcmF0ZURl
dmljZXMgc3VjY2VlZGVkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHVzZXJNZWRpYUVycm9yKGVycm9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUubG9nKGVycm9yKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
dGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oZW51bWVy
YXRlKQorICAgICAgICAgICAgICAgICAgICAuY2F0Y2godXNlck1lZGlhRXJyb3IpOworICAgICAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="318872"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296433</attachid>
            <date>2016-12-07 16:10:03 -0800</date>
            <delta_ts>2016-12-07 18:26:26 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>revoke_sandbox_extensions_patch_4.txt</filename>
            <type>text/plain</type>
            <size>56527</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDE2LTEyLTA3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV1b
TWFjXSBSZXZva2Ugc2FuZGJveCBleHRlbnNpb25zIHdoZW4gY2FwdHVyZSBlbmRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0NzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgVHJhY2sgbWVkaWEgY2FwdHVy
ZSBieSBwcm9jZXNzIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHJldm9rZSB0aGUgc2FuZGJveCBleHRl
bnNpb25zIGlzc3VlZCB0bworICAgICAgICBhIHdlYiBwcm9jZXNzIHdoZW4gY2FwdHVyZSBzdG9w
cy4gQWxsb2NhdGUgV0syIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBtYW5hZ2VyIGxhemlseSByYXRo
ZXIKKyAgICAgICAgdGhhbiBldmVyeSB0aW1lIGEgcGFnZSBpcyBjcmVhdGVkIGFzIG1vc3QgcGFn
ZXMgd29uJ3QgbmVlZCBvbmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBm
aWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6
IFJlZ2lzdGVyCisgICAgICAgICAgd2l0aCBwcm9jZXNzIG1hbmFnZXIuCisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp+VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCk6
IE1vdmUgc2FuZGJveCAKKyAgICAgICAgICBleHRlbnNpb24gY29kZSB0byB0aGUgcHJvY2VzcyBt
YW5hZ2VyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6c3RvcENhcHR1cmUpOiBOZXcuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpzdGFydGVkQ2FwdHVyZVNlc3Npb24pOiBOZXcs
IHJlcG9ydCBzdGF0ZQorICAgICAgICAgIGNoYW5nZSB0byB0aGUgcHJvY2VzcyBtYW5hZ2VyLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
ZW5kZWRDYXB0dXJlU2Vzc2lvbik6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NTdGF0ZTo6UHJvY2Vzc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRl
OjptYW5hZ2Vycyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6c2FuZGJveEV4dGVu
c2lvbnNHcmFudGVkKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1N0YXRlOjpzZXRTYW5kYm94
RXh0ZW5zaW9uc0dyYW50ZWQpOgorICAgICAgICAoV2ViS2l0OjpzdGF0ZU1hcCk6CisgICAgICAg
IChXZWJLaXQ6OnByb2Nlc3NTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NTdGF0ZTo6
YWRkUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzU3RhdGU6OnJlbW92
ZVJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
OjphZGRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlcjo6c3RhcnRlZENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmVuZGVkQ2FwdHVyZVNlc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oOiBBZGRlZC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6IERvbid0IGFsbG9jYXRlIG1fdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3Rh
dGUpOiBTZXQgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgdG8gbnVsbC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIpOiBBbGxvY2F0ZSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcgorICAg
ICAgICAgIGxhemlseSBhcyBtb3N0IHBhZ2VzIGRvbid0IG5lZWQgaXQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6IENh
bGwgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhclVzZXJNZWRpYVN0YXRlKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2Up
OiBSZXBvcnQgY2FwdHVyZSBzdGF0ZSBjaGFuZ2VzIHRvIHRoZSByZXF1ZXN0CisgICAgICAgICAg
bWFuYWdlciBwcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgZmlsZXMu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9uczo6TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6OmRlY29kZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6Om9wZXJhdG9yW10pOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpzaXplKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaDogQWRk
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6IFNh
bmRib3ggZXh0ZW5zaW9uCisgICAgICAgICAgaXMgbm93IGluIGEgSGFzaE1hcCwgbm90IGEgVmVj
dG9yLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OmdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOiBSZWNvcmQKKyAgICAgICAg
ICBJRHMgd2l0aCBleHRlbnNpb25zIHNvIHRoZXkgY2FuIGJlIHJldm9rZWQgbGF0ZXIuCisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmV2b2tlVXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMpOiBOZXcuCisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VzU2Fu
ZGJveEV4dGVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z3Jh
bnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbik6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNi0xMi0w
NyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGlDbG91
ZCBQYWdlcyBhbmQgS2V5bm90ZSBzaXRlLXNwZWNpZmljIGhhY2tzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjA5NDYwKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcAogICAgIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKICAgICBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKKyAgICBVSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKICAgICBVSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3BwCkBAIC01ODEsNiArNTgyLDcgQEAgc2V0KFdlYktpdDJf
U09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAogCisgICAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogICAgIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjA5NDYwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJBUElVSUNsaWVudC5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC05Miw2ICs5
MywxNyBAQCBGcmFtZUF1dGhvcml6YXRpb25TdGF0ZSYgVXNlck1lZGlhUGVybWlzCiBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiB7
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6
c2luZ2xldG9uKCkuYWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKnRo
aXMpOworI2VuZGlmCit9CisKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
Ojp+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKQoreworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigp
LnJlbW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KCp0aGlzKTsKKyNl
bmRpZgorICAgIGludmFsaWRhdGVSZXF1ZXN0cygpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQpAQCAtMTk3LDI5
ICsyMDksNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAg
ZmFtZVN0YXRlLnNldEhhc1Blcm1pc3Npb25Ub1VzZUNhcHR1cmVEZXZpY2UoYXVkaW9EZXZpY2VV
SUQsIHRydWUpOwogICAgIGZhbWVTdGF0ZS5zZXRIYXNQZXJtaXNzaW9uVG9Vc2VDYXB0dXJlRGV2
aWNlKHZpZGVvRGV2aWNlVUlELCB0cnVlKTsKIAotICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9
IDA7Ci0gICAgdW5zaWduZWQgcmVxdWlyZWRFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbnNH
cmFudGVkOjpOb25lOwotICAgIGlmICghYXVkaW9EZXZpY2VVSUQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHJlcXVpcmVkRXh0ZW5zaW9ucyB8PSBTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlv
OwotICAgICAgICBleHRlbnNpb25Db3VudCsrOwotICAgIH0KLSAgICBpZiAoIXZpZGVvRGV2aWNl
VUlELmlzRW1wdHkoKSkgewotICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMgfD0gU2FuZGJveEV4
dGVuc2lvbnNHcmFudGVkOjpWaWRlbzsKLSAgICAgICAgZXh0ZW5zaW9uQ291bnQrKzsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBjdXJyZW50RXh0ZW5zaW9ucyA9IG1fcGFnZVNhbmRib3hFeHRlbnNp
b25zR3JhbnRlZDsKLSAgICBpZiAoIShyZXF1aXJlZEV4dGVuc2lvbnMgJiBjdXJyZW50RXh0ZW5z
aW9ucykpIHsKLSAgICAgICAgQVNTRVJUKGV4dGVuc2lvbkNvdW50KTsKLSAgICAgICAgbV9wYWdl
U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkID0gcmVxdWlyZWRFeHRlbnNpb25zIHwgY3VycmVudEV4
dGVuc2lvbnM7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZXM7
Ci0gICAgICAgIGhhbmRsZXMuYWxsb2NhdGUoZXh0ZW5zaW9uQ291bnQpOwotICAgICAgICBpZiAo
IXZpZGVvRGV2aWNlVUlELmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQuY2FtZXJh
IiwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSk7Ci0gICAgICAgIGlmICghYXVkaW9EZXZpY2VV
SUQuaXNFbXB0eSgpKQotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIiwgaGFuZGxl
c1stLWV4dGVuc2lvbkNvdW50XSk7Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJveEV4dGVuc2lvbihoYW5k
bGVzKSwgbV9wYWdlLnBhZ2VJRCgpKTsKLSAgICB9CisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbigpLndpbGxDcmVhdGVNZWRpYVN0cmVhbSgqdGhpcywgIWF1ZGlvRGV2aWNl
VUlELmlzRW1wdHkoKSwgIXZpZGVvRGV2aWNlVUlELmlzRW1wdHkoKSk7CiAKICAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50
ZWQodXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCksIG1fcGFnZS5w
YWdlSUQoKSk7CiAjZWxzZQpAQCAtMzQyLDQgKzMzMiwzNCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByCiAjZW5kaWYKIH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c3RvcENhcHR1cmUoKQoreworICAgIGlmICghbV9wYWdl
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyAgICBtX3BhZ2Uuc2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6Q2FwdHVyZURldmlj
ZXNBcmVNdXRlZCk7CisjZW5kaWYKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6c3RhcnRlZENhcHR1cmVTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fcGFn
ZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0ZWRDYXB0dXJl
U2Vzc2lvbigqdGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6ZW5kZWRDYXB0dXJlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3Bh
Z2UuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5lbmRlZENhcHR1cmVT
ZXNzaW9uKCp0aGlzKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAyMDk0NjApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBAQCBwcml2YXRlOgogY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgewogcHVibGljOgogICAgIGV4
cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94
eSYpOworICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSgpOworCisg
ICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAKICAgICB2
b2lkIGludmFsaWRhdGVSZXF1ZXN0cygpOwogCkBAIC02OCw2ICs3MSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyQ2FjaGVkU3RhdGUoKTsKIAorICAgIHZvaWQgc3RhcnRlZENhcHR1cmVT
ZXNzaW9uKCk7CisgICAgdm9pZCBlbmRlZENhcHR1cmVTZXNzaW9uKCk7CisgICAgdm9pZCBzdG9w
Q2FwdHVyZSgpOworCiBwcml2YXRlOgogICAgIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZp
Y2VVSURzKTsKICAgICB2b2lkIGRlbnlSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24s
IGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpOwpAQCAtNzYsMTQgKzgzLDYgQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5Pj4gbV9wZW5kaW5nVXNlck1lZGlhUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Pj4gbV9wZW5kaW5n
RGV2aWNlUmVxdWVzdHM7Ci0KLSAgICBlbnVtIFNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCB7Ci0g
ICAgICAgIE5vbmUgPSAwLAotICAgICAgICBWaWRlbyA9IDEgPDwgMCwKLSAgICAgICAgQXVkaW8g
PSAxIDw8IDEKLSAgICB9OwotICAgIHVuc2lnbmVkIG1fcGFnZVNhbmRib3hFeHRlbnNpb25zR3Jh
bnRlZDsKLQogICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxGcmFtZUF1dGhv
cml6YXRpb25TdGF0ZT4+IG1fZnJhbWVTdGF0ZXM7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFn
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMu
aCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGF1ZGlvRXh0ZW5zaW9uUGF0aCA9ICJjb20uYXBw
bGUud2Via2l0Lm1pY3JvcGhvbmUiOworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHZpZGVvRXh0
ZW5zaW9uUGF0aCA9ICJjb20uYXBwbGUud2Via2l0LmNhbWVyYSI7CisKK2NsYXNzIFByb2Nlc3NT
dGF0ZSB7CitwdWJsaWM6CisgICAgUHJvY2Vzc1N0YXRlKCkgeyB9CisgICAgUHJvY2Vzc1N0YXRl
KGNvbnN0IFByb2Nlc3NTdGF0ZSYpID0gZGVsZXRlOworCisgICAgdm9pZCBhZGRSZXF1ZXN0TWFu
YWdlcihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAgIHZvaWQg
cmVtb3ZlUmVxdWVzdE1hbmFnZXIoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmKTsKKyAgICBWZWN0b3I8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkq
PiYgbWFuYWdlcnMoKSB7IHJldHVybiBtX21hbmFnZXJzOyB9CisKKyAgICBlbnVtIFNhbmRib3hF
eHRlbnNpb25zR3JhbnRlZCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBWaWRlbyA9IDEg
PDwgMCwKKyAgICAgICAgQXVkaW8gPSAxIDw8IDEKKyAgICB9OworCisgICAgU2FuZGJveEV4dGVu
c2lvbnNHcmFudGVkIHNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCgpIHsgcmV0dXJuIG1fcGFnZVNh
bmRib3hFeHRlbnNpb25zR3JhbnRlZDsgfQorICAgIHZvaWQgc2V0U2FuZGJveEV4dGVuc2lvbnNH
cmFudGVkKHVuc2lnbmVkIGdyYW50ZWQpIHsgbV9wYWdlU2FuZGJveEV4dGVuc2lvbnNHcmFudGVk
ID0gc3RhdGljX2Nhc3Q8U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkPihncmFudGVkKTsgfQorCitw
cml2YXRlOgorICAgIFZlY3RvcjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSo+IG1fbWFuYWdlcnM7CisgICAgU2FuZGJveEV4dGVuc2lvbnNHcmFudGVkIG1fcGFnZVNhbmRi
b3hFeHRlbnNpb25zR3JhbnRlZCB7IFNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6Tm9uZSB9Owor
fTsKKworc3RhdGljIEhhc2hNYXA8V2ViUHJvY2Vzc1Byb3h5Kiwgc3RkOjp1bmlxdWVfcHRyPFBy
b2Nlc3NTdGF0ZT4+JiBzdGF0ZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8V2ViUHJvY2Vzc1Byb3h5Kiwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NTdGF0ZT4+PiBt
YXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIFByb2Nlc3NTdGF0ZSYgcHJvY2Vzc1N0
YXRlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3sKKyAgICBhdXRvJiBzdGF0ZSA9IHN0YXRl
TWFwKCkuYWRkKCZwcm9jZXNzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKHN0
YXRlKQorICAgICAgICByZXR1cm4gKnN0YXRlOworCisgICAgc3RhdGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2Nlc3NTdGF0ZT4oKTsKKyAgICByZXR1cm4gKnN0YXRlOworfQorCit2b2lkIFByb2Nl
c3NTdGF0ZTo6YWRkUmVxdWVzdE1hbmFnZXIoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkmIHByb3h5KQoreworICAgIEFTU0VSVCghbV9tYW5hZ2Vycy5jb250YWlucygmcHJv
eHkpKTsKKyAgICBtX21hbmFnZXJzLmFwcGVuZCgmcHJveHkpOworfQorCit2b2lkIFByb2Nlc3NT
dGF0ZTo6cmVtb3ZlUmVxdWVzdE1hbmFnZXIoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkmIHByb3h5KQoreworICAgIEFTU0VSVChtX21hbmFnZXJzLmNvbnRhaW5zKCZwcm94
eSkpOworICAgIG1fbWFuYWdlcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJnByb3h5XShhdXRvIG90
aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciA9PSAmcHJveHk7CisgICAgfSk7Cit9CisKK1Vz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyJiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9u
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI+
IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OmFkZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBwcm94eSkKK3sKKyAgICBwcm9jZXNz
U3RhdGUocHJveHkucGFnZSgpLnByb2Nlc3MoKSkuYWRkUmVxdWVzdE1hbmFnZXIocHJveHkpOwor
fQorCit2b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSYgcHJveHkpCit7CisgICAgZW5kZWRDYXB0dXJlU2Vzc2lvbihwcm94eSk7CisKKyAgICBh
dXRvJiBzdGF0ZSA9IHByb2Nlc3NTdGF0ZShwcm94eS5wYWdlKCkucHJvY2VzcygpKTsKKyAgICBz
dGF0ZS5yZW1vdmVSZXF1ZXN0TWFuYWdlcihwcm94eSk7CisgICAgaWYgKHN0YXRlLm1hbmFnZXJz
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaXQgPSBzdGF0ZU1hcCgpLmZpbmQoJnByb3h5
LnBhZ2UoKS5wcm9jZXNzKCkpOworICAgICAgICBzdGF0ZU1hcCgpLnJlbW92ZShpdCk7CisgICAg
fQorfQorCit2b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJl
YW0oVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIHByb3h5LCBib29sIHdp
dGhBdWRpbywgYm9vbCB3aXRoVmlkZW8pCit7CisgICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFp
bnMoJnByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpKTsKKworICAgIGF1dG8mIHN0YXRlID0gcHJvY2Vz
c1N0YXRlKHByb3h5LnBhZ2UoKS5wcm9jZXNzKCkpOworICAgIHNpemVfdCBleHRlbnNpb25Db3Vu
dCA9IDA7CisgICAgdW5zaWduZWQgcmVxdWlyZWRFeHRlbnNpb25zID0gUHJvY2Vzc1N0YXRlOjpT
YW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6Ok5vbmU7CisKKyAgICBpZiAod2l0aEF1ZGlvKSB7Cisg
ICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucyB8PSBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNp
b25zR3JhbnRlZDo6QXVkaW87CisgICAgICAgIGV4dGVuc2lvbkNvdW50Kys7CisgICAgfQorICAg
IGlmICh3aXRoVmlkZW8pIHsKKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zIHw9IFByb2Nlc3NT
dGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpWaWRlbzsKKyAgICAgICAgZXh0ZW5zaW9u
Q291bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjdXJyZW50RXh0ZW5zaW9ucyA9IHN0YXRl
LnNhbmRib3hFeHRlbnNpb25zR3JhbnRlZCgpOworICAgIGlmICghKHJlcXVpcmVkRXh0ZW5zaW9u
cyAmIGN1cnJlbnRFeHRlbnNpb25zKSkgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSBoYW5kbGVzOworICAgICAgICBoYW5kbGVzLmFsbG9jYXRlKGV4dGVuc2lvbkNvdW50
KTsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZHM7CisgICAgICAgIGlkcy5yZXNlcnZlQ2Fw
YWNpdHkoZXh0ZW5zaW9uQ291bnQpOworCisgICAgICAgIGlmICh3aXRoQXVkaW8gJiYgcmVxdWly
ZWRFeHRlbnNpb25zICYgUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1
ZGlvKSB7CisgICAgICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
R2VuZXJpY0V4dGVuc2lvbihhdWRpb0V4dGVuc2lvblBhdGgsIGhhbmRsZXNbLS1leHRlbnNpb25D
b3VudF0pKSB7CisgICAgICAgICAgICAgICAgaWRzLmFwcGVuZChBU0NJSUxpdGVyYWwoYXVkaW9F
eHRlbnNpb25QYXRoKSk7CisgICAgICAgICAgICAgICAgY3VycmVudEV4dGVuc2lvbnMgfD0gUHJv
Y2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpdGhWaWRlbyAmJiByZXF1aXJlZEV4dGVuc2lv
bnMgJiBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6VmlkZW8pIHsKKyAg
ICAgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0
ZW5zaW9uKHZpZGVvRXh0ZW5zaW9uUGF0aCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpIHsK
KyAgICAgICAgICAgICAgICBpZHMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCh2aWRlb0V4dGVuc2lvblBh
dGgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50RXh0ZW5zaW9ucyB8PSBQcm9jZXNzU3RhdGU6
OlNhbmRib3hFeHRlbnNpb25zR3JhbnRlZDo6VmlkZW87CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBzdGF0ZS5zZXRTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQoY3VycmVudEV4
dGVuc2lvbnMpOworICAgICAgICBwcm94eS5wYWdlKCkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucyhpZHMsIFdURk1vdmUoaGFuZGxlcykpKSwgcHJveHkucGFnZSgp
LnBhZ2VJRCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnN0
YXJ0ZWRDYXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSYgcHJveHkpCit7CisgICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFpbnMoJnByb3h5LnBhZ2Uo
KS5wcm9jZXNzKCkpKTsKK30KKwordm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6ZW5kZWRD
YXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgcHJv
eHkpCit7CisgICAgQVNTRVJUKHN0YXRlTWFwKCkuY29udGFpbnMoJnByb3h5LnBhZ2UoKS5wcm9j
ZXNzKCkpKTsKKworICAgIGF1dG8mIHN0YXRlID0gcHJvY2Vzc1N0YXRlKHByb3h5LnBhZ2UoKS5w
cm9jZXNzKCkpOworICAgIGJvb2wgaGFzQXVkaW9DYXB0dXJlID0gZmFsc2U7CisgICAgYm9vbCBo
YXNWaWRlb0NhcHR1cmUgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBzdGF0ZS5t
YW5hZ2VycygpKSB7CisgICAgICAgIGlmIChtYW5hZ2VyLT5wYWdlKCkuaGFzQWN0aXZlQXVkaW9T
dHJlYW0oKSkKKyAgICAgICAgICAgIGhhc0F1ZGlvQ2FwdHVyZSA9IHRydWU7CisgICAgICAgIGlm
IChtYW5hZ2VyLT5wYWdlKCkuaGFzQWN0aXZlVmlkZW9TdHJlYW0oKSkKKyAgICAgICAgICAgIGhh
c1ZpZGVvQ2FwdHVyZSA9IHRydWU7CisgICAgfQorCisgICAgaWYgKGhhc0F1ZGlvQ2FwdHVyZSAm
JiBoYXNWaWRlb0NhcHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+
IHBhcmFtczsKKyAgICB1bnNpZ25lZCBjdXJyZW50RXh0ZW5zaW9ucyA9IHN0YXRlLnNhbmRib3hF
eHRlbnNpb25zR3JhbnRlZCgpOworICAgIGlmICghaGFzQXVkaW9DYXB0dXJlICYmIGN1cnJlbnRF
eHRlbnNpb25zICYgUHJvY2Vzc1N0YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlv
KSB7CisgICAgICAgIHBhcmFtcy5hcHBlbmQoQVNDSUlMaXRlcmFsKGF1ZGlvRXh0ZW5zaW9uUGF0
aCkpOworICAgICAgICBjdXJyZW50RXh0ZW5zaW9ucyAmPSB+UHJvY2Vzc1N0YXRlOjpTYW5kYm94
RXh0ZW5zaW9uc0dyYW50ZWQ6OkF1ZGlvOworICAgIH0KKyAgICBpZiAoIWhhc1ZpZGVvQ2FwdHVy
ZSAmJiBjdXJyZW50RXh0ZW5zaW9ucyAmIFByb2Nlc3NTdGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNH
cmFudGVkOjpWaWRlbykgeworICAgICAgICBwYXJhbXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCh2aWRl
b0V4dGVuc2lvblBhdGgpKTsKKyAgICAgICAgY3VycmVudEV4dGVuc2lvbnMgJj0gflByb2Nlc3NT
dGF0ZTo6U2FuZGJveEV4dGVuc2lvbnNHcmFudGVkOjpWaWRlbzsKKyAgICB9CisKKyAgICBpZiAo
cGFyYW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGUuc2V0U2FuZGJv
eEV4dGVuc2lvbnNHcmFudGVkKGN1cnJlbnRFeHRlbnNpb25zKTsKKyAgICBwcm94eS5wYWdlKCku
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJldm9rZVVzZXJNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zKHBhcmFtcyksIHByb3h5LnBhZ2UoKS5wYWdlSUQoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKKworY2xhc3MgVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIgeworcHVibGljOgorCisgICAgc3RhdGljIFVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgYWRkVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmKTsK
KyAgICB2b2lkIHJlbW92ZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7CisKKyAgICB2b2lkIHdpbGxD
cmVhdGVNZWRpYVN0cmVhbShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYs
IGJvb2wgd2l0aEF1ZGlvLCBib29sIHdpdGhWaWRlbyk7CisKKyAgICB2b2lkIHN0YXJ0ZWRDYXB0
dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpOworICAg
IHZvaWQgZW5kZWRDYXB0dXJlU2Vzc2lvbihVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ2
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTgsNyArMzU4LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcAogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIoKnRoaXMpCi0gICAgLCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhp
cykKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzKQogICAgICwg
bV92aWV3V2FzRXZlckluV2luZG93KGZhbHNlKQogI2lmIFBMQVRGT1JNKElPUykKQEAgLTUzNzYs
OCArNTM3NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGUKICNp
ZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsKICNlbmRpZgorCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5pbnZhbGlk
YXRlUmVxdWVzdHMoKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9
IG51bGxwdHI7CiAjZW5kaWYKIAogICAgIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmludmFsaWRhdGVSZXF1ZXN0cygpOwpAQCAtNTY5MiwxMiArNTY5MiwyMSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgcmVxdWVzdC0+ZGVueSgp
OwogfQogCitVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVBy
b3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKQoreworICAgIGlmIChtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgcmV0dXJuICptX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKKworICAgIG1fdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludHNEYXRhJiBhdWRpb0NvbnN0cmFpbnRzRGF0YSwgY29uc3QgV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50c0RhdGEmIHZpZGVvQ29uc3RyYWludHNEYXRhKQogewogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsK
IAotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yRnJhbWUodXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luSWRlbnRpZmllciwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGF1
ZGlvQ29uc3RyYWludHNEYXRhLCB2aWRlb0NvbnN0cmFpbnRzRGF0YSk7CisgICAgdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkucmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JG
cmFtZSh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlm
aWVyLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgYXVkaW9Db25zdHJhaW50c0Rh
dGEsIHZpZGVvQ29uc3RyYWludHNEYXRhKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVzZXJN
ZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01NzE0LDcgKzU3MjMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzCiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodXNlck1lZGlhSUQsIGZyYW1lSUQsIHVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50
aWZpZXIpOworICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmVudW1lcmF0
ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVzZXJNZWRpYUlELCBmcmFtZUlELCB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbklkZW50aWZpZXIsIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVzZXJNZWRpYUlEKTsKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CkBAIC01NzI2LDcgKzU3MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW51bWVy
YXRlTWVkaWFEZXZpY2VzCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJVc2VyTWVkaWFTdGF0ZSgp
CiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jbGVhckNhY2hlZFN0YXRlKCk7CisgICAgdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkuY2xlYXJDYWNoZWRTdGF0ZSgpOwogI2VuZGlmCiB9CiAKQEAgLTY0
MDksMTUgKzY0MTgsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ01lZGlhRGlkQ2hh
bgogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG9sZE1lZGlh
U3RhdGVIYXNBY3RpdmVDYXB0dXJlID0gbV9tZWRpYVN0YXRlICYgKFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSB8IFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSk7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5ld01lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlID0gc3Rh
dGUgJiAoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNl
IHwgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlKTsK
LSAgICBpZiAoIW9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmIG5ld01lZGlhU3RhdGVI
YXNBY3RpdmVDYXB0dXJlKQotICAgICAgICBtX3VpQ2xpZW50LT5kaWRCZWdpbkNhcHR1cmVTZXNz
aW9uKCk7Ci0gICAgaWYgKG9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmICFuZXdNZWRp
YVN0YXRlSGFzQWN0aXZlQ2FwdHVyZSkKLSAgICAgICAgbV91aUNsaWVudC0+ZGlkRW5kQ2FwdHVy
ZVNlc3Npb24oKTsKIAogICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBwbGF5aW5n
TWVkaWFNYXNrID0gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gfCBNZWRpYVByb2R1Y2Vy
OjpJc1BsYXlpbmdWaWRlbzsKICAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgb2xk
U3RhdGUgPSBtX21lZGlhU3RhdGU7CiAgICAgbV9tZWRpYVN0YXRlID0gc3RhdGU7CiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghb2xkTWVkaWFTdGF0ZUhhc0FjdGl2ZUNhcHR1
cmUgJiYgbmV3TWVkaWFTdGF0ZUhhc0FjdGl2ZUNhcHR1cmUpIHsKKyAgICAgICAgbV91aUNsaWVu
dC0+ZGlkQmVnaW5DYXB0dXJlU2Vzc2lvbigpOworICAgICAgICB1c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoKS5zdGFydGVkQ2FwdHVyZVNlc3Npb24oKTsKKyAgICB9IGVsc2UgaWYg
KG9sZE1lZGlhU3RhdGVIYXNBY3RpdmVDYXB0dXJlICYmICFuZXdNZWRpYVN0YXRlSGFzQWN0aXZl
Q2FwdHVyZSkgeworICAgICAgICBtX3VpQ2xpZW50LT5kaWRFbmRDYXB0dXJlU2Vzc2lvbigpOwor
ICAgICAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5lbmRlZENhcHR1cmVT
ZXNzaW9uKCk7CisgICAgfQorI2VuZGlmCisKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFj
dGl2aXR5U3RhdGU6OklzQXVkaWJsZSk7CiAKICAgICBwbGF5aW5nTWVkaWFNYXNrIHw9IE1lZGlh
UHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSB8IE1lZGlhUHJvZHVjZXI6Okhh
c0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0OSw2ICsxMDQ5LDggQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1BsYXlpbmdBdWRpbygpIGNvbnN0IHsgcmV0dXJuICEhKG1f
bWVkaWFTdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvKTsgfQog
ICAgIHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TWVkaWFTdGF0ZUZsYWdzLCB1aW50NjRfdCk7CisgICAgYm9vbCBoYXNBY3RpdmVBdWRpb1N0cmVh
bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZTsgfQorICAgIGJvb2wgaGFzQWN0aXZlVmlkZW9T
dHJlYW0oKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpIYXNBY3RpdmVWaWRlb0NhcHR1cmVEZXZpY2U7IH0KICAgICBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYVN0YXRlOyB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMjk1LDYgKzEyOTcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAg
ICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9s
b2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAK
KyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7CiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlz
c2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBTdHJpbmcgdG9wTGV2ZWxEb2N1
bWVudE9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNEYXRh
JiBhdWRpb0NvbnN0cmFpbnRzLCBjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzRGF0YSYg
dmlkZW9Db25zdHJhaW50cyk7CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFt
ZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHVzZXJNZWRp
YURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgU3RyaW5nIHRvcExldmVsRG9jdW1lbnRPcmlnaW5J
ZGVudGlmaWVyKTsKIApAQCAtMTY4OCw3ICsxNjkxLDkgQEAgcHJpdmF0ZToKICAgICBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAKLSAgICBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX3VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CisjZW5kaWYKIAogICAgIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKICAgICBib29sIG1fdmlld1dhc0V2ZXJJbldp
bmRvdzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOSBA
QAogCQkwNzI5N0Y5RjFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
Mjk3RjlEMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5o
ICovOyB9OwogCQkwNzI5N0ZBMjFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyOTdGQTAxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
LmNwcCAqLzsgfTsKIAkJMDcyOTdGQTMxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzI5N0ZBMTFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
NzRFNzVGRDFERjIyMTE1MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkMxREYy
MDAyNDAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJMDc0
RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzVGQjFERjFGRDEz
MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKKwkJMDc0RTc2MDIx
REY3MDdCRTAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc2MDAxREY3MDc1
RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwICovOyB9OwogCQkw
NzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYw
MDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwN0E1RUJCQjFDN0JB
NDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkgLyogV0tG
cmFtZUhhbmRsZVJlZi5jcHAgKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBX
S0ZyYW1lSGFuZGxlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMDYxLDYg
KzIwNjQsMTAgQEAKIAkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3Mjk3RkEwMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1p
c3Npb25DaGVjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RkExMUMx
ODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzRFNzVGQjFERjFGRDEzMDBEMzE4RUMgLyogVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDc0RTc1RkMxREYyMDAyNDAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0RTc2MDAxREY3MDc1RDAw
RDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAv
KiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYw
MDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFDN0JB
NDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU0NzYsNiArNTQ4Myw4IEBACiAJCTRBNDEwRjQxMTlBRjdCMjcwMDJFQkFC
NSAvKiBNZWRpYVN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMDc0RTc2MDAxREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuY3BwICovLAorCQkJCTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zLmggKi8sCiAJCQkJNEE0MTBGNDIxOUFGN0IyNzAwMkVCQUI1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgKi8sCiAJCQkJNEE0MTBG
NDMxOUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
ICovLAogCQkJKTsKQEAgLTYxNTYsNiArNjE2NSw4IEBACiAJCUJDMDMyREMzMTBGNDM4MjYwMDU4
QzE1QSAvKiBVSVByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA3NEU3NUZDMURGMjAwMjQwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFu
YWdlci5jcHAgKi8sCisJCQkJMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmggKi8sCiAJCQkJQkMwMzJEQzQxMEY0Mzg3QzAwNThDMTVBIC8qIEFQSSAq
LywKIAkJCQkxQUIxRjc3NjFEMUIzMEE5MDA3QzlCRDEgLyogQXBwbGVQYXkgKi8sCiAJCQkJNTEy
RjU4OEQxMkE4ODM2RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovLApAQCAtODMwMCw2ICs4
MzExLDcgQEAKIAkJCQk1MzIxNTk1NTFEQkFFNzI5MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25D
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNEYxOEJCRTA0NDAwMEZDRkM5IC8qIFdL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDOEIzNzQxMjVG
QjY5MDAwREU0NkE0IC8qIFdLR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3NEU3NUZF
MURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdL
SGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3
MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTkzNjMsNiArOTM3NSw3
IEBACiAJCQkJMEY1RTIwMDMxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREEwNDlCMzE4MENDQ0QzMDBBQUZBOUUgLyog
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODcxMDE2MTgy
ODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gaW4gU291cmNl
cyAqLywKKwkJCQkwNzRFNzVGRDFERjIyMTE1MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4OTQ5RjAxODIwNDRGNjAwRTg5OEFBIC8q
IFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0M0M0FCQTEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNkZCN0QyMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC05ODI3LDYgKzk4NDAsNyBAQAogCQkJCTFBMjU2RTM3MThBMUE3
ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQky
RDNBNjVEQTFBN0MzQTFGMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTM3MEYzNEEyMTgyOUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25E
YXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc0RTc2MDIxREY3MDdCRTAwRDMxOEVDIC8qIE1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlG
QUExMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQzQTY1RTIxQTdDM0E5MzAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvblJlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTFCMEVCNTE4QTQyNDk1MDAzODQ4MUEgLyogV0tOYXZpZ2F0
aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiBpZHMsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykKKyAgICA6IG1faWRzKGlkcykKKyAgICAs
IG1faGFuZGxlcyhXVEZNb3ZlKGhhbmRsZXMpKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKG1faWRzLnNpemUoKSA9PSBtX2hhbmRsZXMuc2l6ZSgpKTsKK30KKwordm9p
ZCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9pZHM7CisgICAgbV9oYW5kbGVzLmVuY29k
ZShlbmNvZGVyKTsKK30KKworYm9vbCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiBy
ZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZHMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0Lm1faGFuZGxlcykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6OnBhaXI8U3RyaW5nLCBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4+IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM6Om9wZXJhdG9yW10o
c2l6ZV90IGkpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9pZHMu
c2l6ZSgpID09IG1faGFuZGxlcy5zaXplKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGkgPCBtX2lkcy5zaXplKCkpOworICAgIHJldHVybiB7IG1faWRzW2ldLCBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUobV9oYW5kbGVzW2ldKSB9OworfQorCitjb25zdCBzdGQ6OnBh
aXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnM6Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0Cit7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04obV9pZHMuc2l6ZSgpID09IG1faGFuZGxlcy5zaXplKCkpOwor
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2lkcy5zaXplKCkpOwor
ICAgIHJldHVybiB7IG1faWRzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUobV9oYW5kbGVz
W2ldKSB9OworfQorCitzaXplX3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRzLnNpemUoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9N
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zKTsKK3B1YmxpYzoKKyAgICBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKCkK
KyAgICB7CisgICAgfQorCisgICAgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8
U3RyaW5nPiBpZHMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcyk7CisK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG9wZXJhdG9y
W10oc2l6ZV90IGkpOworICAgIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPj4gb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Q7CisgICAgc2l6ZV90IHNpemUo
KSBjb25zdDsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0
YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zJik7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFN0cmluZz4gbV9pZHM7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgbV9oYW5kbGVzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA5
NDYwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6VXNlck0KIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cigpCiB7CiAgICAgZm9yIChhdXRvJiBzYW5kYm94RXh0ZW5zaW9uIDogbV91c2VyTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucykKLSAgICAgICAgc2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7
CisgICAgICAgIHNhbmRib3hFeHRlbnNpb24udmFsdWUtPnJldm9rZSgpOwogfQogCiB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFSZXF1ZXN0KFVz
ZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0yMDIsMTUgKzIwMiwyMSBAQCB2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgcmVxdWVzdC0+c2V0RGV2aWNlSW5m
byhkZXZpY2VMaXN0LCBtZWRpYURldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgaGFzUGVyc2lzdGVu
dEFjY2Vzcyk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpn
cmFudFVzZXJNZWRpYURldmljZXNTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykKK3ZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpncmFudFVzZXJNZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zKGNvbnN0IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMmIGV4dGVuc2lvbnMpCiB7
Ci0gICAgQVNTRVJUKG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuc2l6ZSgpIDw9
IDIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykg
eworICAgICAgICBhdXRvJiBleHRlbnNpb24gPSBleHRlbnNpb25zW2ldOworICAgICAgICBleHRl
bnNpb24uc2Vjb25kLT5jb25zdW1lKCk7CisgICAgICAgIG1fdXNlck1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbi5maXJzdCwgZXh0ZW5zaW9uLnNlY29uZC5jb3B5UmVm
KCkpOworICAgIH0KK30KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKSkgewot
ICAgICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0gICAgICAgICAgICBtX3VzZXJNZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24ucmVsZWFzZSgpKTsKLSAg
ICAgICAgfQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJldm9rZVVz
ZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRl
bnNpb25JRHMpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBleHRlbnNpb25JRCA6IGV4dGVuc2lv
bklEcykgeworICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMudGFrZShleHRlbnNpb25JRCk7CisgICAgICAgIGlmIChleHRlbnNpb24pCisg
ICAgICAgICAgICBleHRlbnNpb24tPnJldm9rZSgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCShyZXZpc2lvbiAyMDk0
NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFDb25zdHJhaW50cy5oPgpAQCAtNTEsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5j
ZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlv
blJlcXVlc3QmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1
aW50NjRfdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiBkZXZpY2VMaXN0
LCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgYm9vbCBvcmlnaW5IYXNQ
ZXJzaXN0ZW50QWNjZXNzKTsKIAotICAgIHZvaWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VzU2FuZGJv
eEV4dGVuc2lvbihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOworICAgIHZv
aWQgZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zJik7CisgICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgc2VuZFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwpAQCAt
NjksNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJD
b3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q+PiBtX2lkVG9NZWRpYURldmljZXNF
bnVtZXJhdGlvblJlcXVlc3RNYXA7CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6TWVkaWFE
ZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0PiwgdWludDY0X3Q+IG1fbWVkaWFEZXZpY2VzRW51bWVy
YXRpb25SZXF1ZXN0VG9JRE1hcDsKIAotICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4+IG1fdXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV91c2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9uczsKIAogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50PiwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pj4+IG1fYmxvY2tlZFJlcXVlc3RzOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDIwOTQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwMCw5ICszNzAwLDE0IEBAIHZvaWQg
V2ViUGFnZTo6ZGlkQ29tcGxldGVNZWRpYURldmljZUVudW0KICAgICBtX3VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5kaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNl
ck1lZGlhSUQsIGRldmljZXMsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgb3JpZ2luSGFzUGVy
c2lzdGVudEFjY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2Vz
U2FuZGJveEV4dGVuc2lvbihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFu
ZGxlcykKK3ZvaWQgV2ViUGFnZTo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyhjb25zdCBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zJiBleHRlbnNpb25zKQogewotICAg
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmdyYW50VXNlck1lZGlhRGV2aWNl
c1NhbmRib3hFeHRlbnNpb24oaGFuZGxlcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuZ3JhbnRVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhleHRlbnNp
b25zKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQoreworICAgIG1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLnJldm9rZVVzZXJNZWRpYURldmljZVNhbmRi
b3hFeHRlbnNpb25zKGV4dGVuc2lvbklEcyk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMDk0NjApCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTc4LDcgKzExNzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXNlck1lZGlhQWNj
ZXNzV2FzRGVuaWVkKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCByZWFzb24sIFN0cmlu
ZyBpbnZhbGlkQ29uc3RyYWludCk7CiAKICAgICB2b2lkIGRpZENvbXBsZXRlTWVkaWFEZXZpY2VF
bnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U+JiBkZXZpY2VzLCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNo
U2FsdCwgYm9vbCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKTsKLSAgICB2b2lkIGdyYW50VXNl
ck1lZGlhRGV2aWNlc1NhbmRib3hFeHRlbnNpb24oY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkmKTsKKyAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMoY29uc3QgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYpOworICAgIHZvaWQgcmV2b2tl
VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDYwKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTI5Miw3ICsyOTIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKHVpbnQ2NF90IHVzZXJNZWRp
YUlELCBTdHJpbmcgYXVkaW9EZXZpY2VVSUQsIFN0cmluZyB2aWRlb0RldmljZVVJRCkKICAgICBV
c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IHJl
YXNvbiwgU3RyaW5nIGludmFsaWRDb25zdHJhaW50KQogICAgIERpZENvbXBsZXRlTWVkaWFEZXZp
Y2VFbnVtZXJhdGlvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2U+IGRldmljZXMsIFN0cmluZyBtZWRpYURldmljZUlkZW50aWZpZXJIYXNoU2FsdCwg
Ym9vbCBoYXNQZXJzaXN0ZW50QWNjZXNzKQotICAgIEdyYW50VXNlck1lZGlhRGV2aWNlc1NhbmRi
b3hFeHRlbnNpb24oV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQorICAgIEdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lv
bnMoV2ViS2l0OjpNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zIHNhbmRib3hFeHRlbnNpb25z
KQorICAgIFJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTdHJp
bmc+IHNhbmRib3hFeHRlbnNpb25JRHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDk0NzgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNi0xMi0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dW01hY10gUmV2b2tlIHNhbmRib3ggZXh0ZW5zaW9u
cyB3aGVuIGNhcHR1cmUgZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgor
ICAgICAgICAKKyAgICAgICAgQWRkIGEgdGVzdCB3aGljaCBsb2FkcyBhIHBhZ2UgdGhhdCBjYWxs
cyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMsIGtpbGxzIHRoZQorICAg
ICAgICBwYWdlLCBhbmQgbG9hZHMgdGhlIHNhbWUgcGFnZSBhZ2FpbiB0byBlbnN1cmUgdGhhdCB0
aGUgV0syIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5CisgICAgICAgIGlz
IHJlc2V0IGFuZCByZWNyZWF0ZWQgd2hlbiBhIHdlYiBwYWdlIGV4aXRzIGFuZCBpcyByZWxvYWRl
ZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VudW1lcmF0ZU1lZGlhRGV2
aWNlcy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2VudW1lcmF0ZU1lZGlhRGV2aWNlcy5o
dG1sOiBBZGRlZC4KKwogMjAxNi0xMi0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXcgcHJvamVjdCBmb3IgcmVjb3JkaW5nIGFuZCBw
bGF5aW5nIGJhY2sgZWRpdGluZyBjb21tYW5kcyBpbiBlZGl0YWJsZSB3ZWIgY29udGVudApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAyMDk0NjApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw2ICs3NSw3IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJLaXQyCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5v
Q2FjaGUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9Eb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV2ViS2l0Mi9FbnVtZXJhdGVNZWRpYURldmljZXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi9GYWlsZWRMb2FkLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvRmluZC5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDk0NjApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
OCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTA3NDkyQjNCMURGOEIxNEMwMDYzM0RFMSAvKiBFbnVt
ZXJhdGVNZWRpYURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8qIEVudW1lcmF0ZU1lZGlhRGV2
aWNlcy5jcHAgKi87IH07CisJCTA3NDkyQjNDMURGOEI4NjYwMDYzM0RFMSAvKiBlbnVtZXJhdGVN
ZWRpYURldmljZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzQ5MkIzOTFERjhBREE0MDA2MzNERTEgLyogZW51bWVyYXRlTWVkaWFE
ZXZpY2VzLmh0bWwgKi87IH07CiAJCTBGMTM5RTc3MUE0MjNBNUIwMEY1OTBGNSAvKiBXZWFrT2Jq
Q1B0ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MTM5RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSAqLzsgfTsKIAkJMEYxMzlF
NzgxQTQyM0E2QjAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBG
NTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYxMzlFNzkxQTQy
NDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUg
LyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKQEAgLTU4Myw2ICs1ODUsNyBAQAog
CQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3Bl
YyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkwNzQ5MkIzQzFERjhCODY2MDA2MzNERTEgLyogZW51
bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIyNzBG
RUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8qIGVub3Jtb3Vz
LXZpZGVvLXdpdGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5RDND
NDFEQjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLApAQCAtNzM0LDYgKzczNyw4IEBACiAvKiBCZWdpbiBQQlhGaWxl
UmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDBCQzE2ODUxNjgwRkU4MTAwNjVGMUU1IC8qIFB1Ymxp
Y1N1ZmZpeC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFB1Ymxp
Y1N1ZmZpeC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBDRDlGNjIxNUJFMzEy
QzAwMkRBMkNFIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc0OTJCMzkxREY4QURBNDAwNjMzREUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2aWNl
cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZW51bWVyYXRlTWVkaWFEZXZpY2Vz
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NDkyQjNBMURGOEFFMkQwMDYz
M0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2NkREMUYxQTVBRDUyMDAwMjNFM0JCIC8qIFBlbmRpbmdBUElSZXF1
ZXN0VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlbmRpbmdB
UElSZXF1ZXN0VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzMzQx
NDg1N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSGFzaE1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBC
Q0Q4NTY5MTQ4NUM5OEIwMEVBMjAwMyAvKiBTZXRGb3JTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRGb3JTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjk5LDYgKzE3MDQsNyBAQAogCQlCQzkwOTY0MTEyNTU2MTYwMDAwODM3
NTYgLyogV2ViS2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5j
cHAgKi8sCiAJCQkJQUQ1N0FDMUUxREE3NDY0RDAwRkYxQkRFIC8qIERpZFJlbW92ZUZyYW1lRnJv
bUhpZWFyY2h5SW5QYWdlQ2FjaGVfQnVuZGxlLmNwcCAqLywKIAkJCQlBRDU3QUMxRjFEQTc0NjRE
MDBGRjFCREUgLyogRGlkUmVtb3ZlRnJhbWVGcm9tSGllYXJjaHlJblBhZ2VDYWNoZS5jcHAgKi8s
CiAJCQkJMEYxMzlFNzQxQTQyM0E0NjAwRjU5MEY1IC8qIGNvY29hICovLApAQCAtMTg3Nyw2ICsx
ODgzLDcgQEAKIAkJQkM5MDk3N0IxMjU1NzFBRTAwMDgzNzU2IC8qIFJlc291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc0OTJCMzkxREY4QURB
NDAwNjMzREUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sICovLAogCQkJCUMwNDVGOTQ2
MTM4NUMyRjgwMEMwRjNDRCAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgKi8sCiAJCQkJMUMyQjgxODUx
Qzg5MjUyMzAwQTU1MjlGIC8qIEFoZW0udHRmICovLAogCQkJCTkzRDNEMTlCMTdCMUE3QjAwMEM3
QzQxNSAvKiBhbGwtY29udGVudC1pbi1vbmUtaWZyYW1lLmh0bWwgKi8sCkBAIC0yNTg3LDYgKzI1
OTQsNyBAQAogCQkJCTdDQ0U3RUQzMUE0MTFBN0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNo
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREUxQTQxMUE5MjAwNDQ3QzRDIC8qIFVSTC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMDFBNDExQTQ0MDA0NDdDNEMgLyogVVJMRXh0
cmFzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc0OTJCM0IxREY4QjE0QzAwNjMzREUxIC8qIEVu
dW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTZBMkM3MDFEQ0NG
QThDMDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkRGRjdCNkQxREE0ODdBRjAwODE0NjE0IC8qIFNuYXBzaG90U3RvcmUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1QzZFNjU0NDFENUNFRkQ0MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VudW1l
cmF0ZU1lZGlhRGV2aWNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0VudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VudW1lcmF0ZU1lZGlhRGV2aWNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1
ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVy
ZW5jZXNSZWZQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8V2ViS2l0L1dLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K3N0YXRpYyBib29sIGxvYWRlZEZpcnN0VGltZTsKK3N0YXRpYyBib29sIGxvYWRlZFNlY29uZFRp
bWU7CisKK3ZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2soV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiBwZXJtaXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCop
Cit7CisgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tTZXRVc2VyTWVkaWFBY2Nlc3NJbmZv
KHBlcm1pc3Npb25SZXF1ZXN0LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiMHgxMjM0
NTY3ODkiKSwgdHJ1ZSk7CisgICAgaWYgKCFsb2FkZWRGaXJzdFRpbWUpIHsKKyAgICAgICAgbG9h
ZGVkRmlyc3RUaW1lID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxvYWRl
ZFNlY29uZFRpbWUgPSB0cnVlOworfQorCitURVNUKFdlYktpdDIsIEVudW1lcmF0ZURldmljZXMp
Cit7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGUoKSk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdy
b3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiRW51bWVyYXRlRGV2aWNlcyIpLmdl
dCgpKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0
UHJlZmVyZW5jZXMocGFnZUdyb3VwLmdldCgpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVy
ZW5jZXNTZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24ocHJlZmVyZW5jZXMs
IGZhbHNlKTsKKworICAgIFdLUGFnZVVJQ2xpZW50VjYgdWlDbGllbnQ7CisgICAgbWVtc2V0KCZ1
aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CisgICAgdWlDbGllbnQuYmFzZS52ZXJzaW9u
ID0gNjsKKyAgICB1aUNsaWVudC5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4gPSBj
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjazsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCh3ZWJWaWV3
LnBhZ2UoKSwgJnVpQ2xpZW50LmJhc2UpOworCisgICAgYXV0byB1cmwgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZVVSTEZvclJlc291cmNlKCJlbnVtZXJhdGVNZWRpYURldmljZXMiLCAiaHRtbCIpKTsK
KworICAgIC8vIExvYWQgYW5kIGtpbGwgdGhlIHBhZ2UuCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmxvYWRlZEZpcnN0VGltZSk7
CisgICAgV0tQYWdlVGVybWluYXRlKHdlYlZpZXcucGFnZSgpKTsKKworICAgIC8vIExvYWQgaXQg
YWdhaW4gdG8gbWFrZSBzdXJlIHRoZSB1c2VyIG1lZGlhIHByb2Nlc3MgbWFuYWdlciBkb2Vzbid0
IGFzc2VydC4KKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOwor
ICAgIFV0aWw6OnJ1bigmbG9hZGVkU2Vjb25kVGltZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAv
LyBXS19IQVZFX0NfU1BJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
ZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL2VudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sCShub25leGlzdGVu
dCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9lbnVtZXJhdGVNZWRpYURl
dmljZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGVudW1lcmF0ZShk
ZXZpY2VzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJlbnVt
ZXJhdGVEZXZpY2VzIHN1Y2NlZWRlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiB1c2VyTWVkaWFFcnJvcihlcnJvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmxvZyhlcnJvcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCisgICAgICAgICAgICAgICAgICAgIC50aGVu
KGVudW1lcmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgLmNhdGNoKHVzZXJNZWRpYUVycm9yKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>