<?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>184142</bug_id>
          
          <creation_ts>2018-03-29 11:56:32 -0700</creation_ts>
          <short_desc>Process swapping on navigation needs to handle server redirects</short_desc>
          <delta_ts>2018-06-08 13:26:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=186441</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410336</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-29 11:56:32 -0700</bug_when>
    <thetext>Process swapping on navigation needs to handle server redirects

&lt;rdar://problem/38690465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410811</commentid>
    <comment_count>1</comment_count>
      <attachid>336912</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-30 22:18:08 -0700</bug_when>
    <thetext>Created attachment 336912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410867</commentid>
    <comment_count>2</comment_count>
      <attachid>336927</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-31 11:40:18 -0700</bug_when>
    <thetext>Created attachment 336927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411117</commentid>
    <comment_count>3</comment_count>
      <attachid>336927</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-02 10:16:23 -0700</bug_when>
    <thetext>Comment on attachment 336927
Patch

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

&gt; Source/WebKit/ChangeLog:14
&gt; +        3 - A WKWebView is showing content from a.com, we start a load to a.com, that that redirects to b.com.

Will future work will make it so a redirect from a to b then back to a will reuse the same process?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2397
&gt; +        m_mainFrameSetHandler = [this, protectedThis = makeRef(*this), navigation = makeRef(navigation), request = ResourceRequest { navigation.currentRequest() }]() mutable {

I think the explicit call to the constructor might be unnecessary.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3212
&gt; +    if (m_mainFrameSetHandler) {

m_mainFrameCreationHandler?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3855
&gt; +    Ref&lt;WebFramePolicyListenerProxy&gt; listener = frame-&gt;setUpPolicyListenerProxy(listenerID, PolicyListenerType::NavigationAction);

auto?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:162
&gt; +        [(id&lt;WKURLSchemeTaskPrivate&gt;)task _didPerformRedirection:redirectResponse.get() newRequest:request.get()];

Wow, this SPI seems really useful!  I&apos;m glad we have it.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:568
&gt; +    RetainPtr&lt;PSONScheme&gt; handler1 = adoptNS([[PSONScheme alloc] init]);

You have inconsistent use of auto in your tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411125</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-02 10:30:12 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        3 - A WKWebView is showing content from a.com, we start a load to a.com, that that redirects to b.com.
&gt; 
&gt; Will future work will make it so a redirect from a to b then back to a will
&gt; reuse the same process?

Ideally, future work will enable us to do full loading in NetworkProcess without going through WebProcess, including navigations. That would handle this point automatically, although we might want to get to it before having the full loading stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411126</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-02 10:32:32 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 336927 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336927&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        3 - A WKWebView is showing content from a.com, we start a load to a.com, that that redirects to b.com.
&gt; 
&gt; Will future work will make it so a redirect from a to b then back to a will
&gt; reuse the same process?

Maybe. 
Not necessarily worth it though - At the a.com to b.com redirect we have to fire up a second process, but then reverting back to the a.com process is more work...
CPU/Battery tradeoff...
I&apos;ll file a bug tracking the idea, definitely not convinced it&apos;s a slam dunk.

&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2397
&gt; &gt; +        m_mainFrameSetHandler = [this, protectedThis = makeRef(*this), navigation = makeRef(navigation), request = ResourceRequest { navigation.currentRequest() }]() mutable {
&gt; 
&gt; I think the explicit call to the constructor might be unnecessary.

Yah it was in some places, maybe not here, will 2x check.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3212
&gt; &gt; +    if (m_mainFrameSetHandler) {
&gt; 
&gt; m_mainFrameCreationHandler?
&gt; 

Sure.


&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3855
&gt; &gt; +    Ref&lt;WebFramePolicyListenerProxy&gt; listener = frame-&gt;setUpPolicyListenerProxy(listenerID, PolicyListenerType::NavigationAction);
&gt; 
&gt; auto?

Sure.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:162
&gt; &gt; +        [(id&lt;WKURLSchemeTaskPrivate&gt;)task _didPerformRedirection:redirectResponse.get() newRequest:request.get()];
&gt; 
&gt; Wow, this SPI seems really useful!  I&apos;m glad we have it.

Nice! I&apos;ll CC you on the bugs I file for how it does weird things... :)

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:568
&gt; &gt; +    RetainPtr&lt;PSONScheme&gt; handler1 = adoptNS([[PSONScheme alloc] init]);
&gt; 
&gt; You have inconsistent use of auto in your tests.

Tests tests shmests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411127</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-02 10:32:46 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; &gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; &gt; +        3 - A WKWebView is showing content from a.com, we start a load to a.com, that that redirects to b.com.
&gt; &gt; 
&gt; &gt; Will future work will make it so a redirect from a to b then back to a will
&gt; &gt; reuse the same process?
&gt; 
&gt; Ideally, future work will enable us to do full loading in NetworkProcess
&gt; without going through WebProcess, including navigations. That would handle
&gt; this point automatically, although we might want to get to it before having
&gt; the full loading stuff.

^^^^ 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411129</commentid>
    <comment_count>7</comment_count>
      <attachid>336997</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-02 10:35:41 -0700</bug_when>
    <thetext>Created attachment 336997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411150</commentid>
    <comment_count>8</comment_count>
      <attachid>337002</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-02 11:05:10 -0700</bug_when>
    <thetext>Created attachment 337002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411215</commentid>
    <comment_count>9</comment_count>
      <attachid>337002</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 13:05:53 -0700</bug_when>
    <thetext>Comment on attachment 337002
Patch

Clearing flags on attachment: 337002

Committed r230174: &lt;https://trac.webkit.org/changeset/230174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411216</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 13:05:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411269</commentid>
    <comment_count>11</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-02 15:14:45 -0700</bug_when>
    <thetext>iOS and macOS Debug WK2 tests are exiting early due to crashes after this change.

ASSERTION FAILED: navigation-&gt;originalRequest().url() == originalRequest.url()
/Volumes/Data/slave/highsierra-debug/build/Source/WebKit/UIProcess/WebPageProxy.cpp(3845) : void WebKit::WebPageProxy::decidePolicyForNavigationAction(uint64_t, const WebCore::SecurityOriginData &amp;, uint64_t, WebKit::NavigationActionData &amp;&amp;, const WebKit::FrameInfoData &amp;, uint64_t, const WebCore::ResourceRequest &amp;, WebCore::ResourceRequest &amp;&amp;, uint64_t, const WebKit::UserData &amp;)

See:https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r230176%20(2692)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411293</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-02 16:09:23 -0700</bug_when>
    <thetext>Reverted r230174 for reason:

Caused LayoutTests to exit early with assertion failures.

Committed r230191: &lt;https://trac.webkit.org/changeset/230191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411306</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-02 16:38:30 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #11)
&gt; iOS and macOS Debug WK2 tests are exiting early due to crashes after this
&gt; change.

Annnnnnnnnnnd we don&apos;t have EWS for either of them.

Still.

To this day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411317</commentid>
    <comment_count>14</comment_count>
      <attachid>337046</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-02 17:24:45 -0700</bug_when>
    <thetext>Created attachment 337046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411330</commentid>
    <comment_count>15</comment_count>
      <attachid>337046</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 18:03:51 -0700</bug_when>
    <thetext>Comment on attachment 337046
Patch

Clearing flags on attachment: 337046

Committed r230195: &lt;https://trac.webkit.org/changeset/230195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411331</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 18:03:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336912</attachid>
            <date>2018-03-30 22:18:08 -0700</date>
            <delta_ts>2018-03-31 11:40:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37746</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZGVjNjdhNDQ5ZDYuLmI5ODM3N2YyYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY3IEBACisyMDE4LTAzLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcm9jZXNzIHN3YXBwaW5nIG9uIG5hdmlnYXRpb24gbmVlZHMgdG8gaGFuZGxlIHNl
cnZlciByZWRpcmVjdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgc2FtZSBydWxlcyB3ZSBhcHBseSB0byBwcm9jZXNzIHN3YXBwaW5nIGZvciBi
YXNpYyBuYXZpZ2F0aW9ucyBuZWVkIHRvIGFwcGx5CisgICAgICAgIHRvIHNlcnZlciByZWRpcmVj
dHMgYXMgd2VsbC4KKworICAgICAgICBUaGVyZSdzIHRocmVlIGludGVyZXN0aW5nIGNhc2VzIHdl
IG5lZWQgdG8gc3VwcG9ydCB0aGF0IGFyZSBjb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHM6CisgICAg
ICAgIDEgLSBUaGUgaW5pdGlhbCBsb2FkIGluIGEgV0tXZWJWaWV3IHJlZGlyZWN0cyBjcm9zcy1v
cmlnaW4uCisgICAgICAgIDIgLSBBIFdLV2ViVmlldyBpcyBzaG93aW5nIGNvbnRlbnQgZnJvbSBh
LmNvbSwgd2Ugc3RhcnQgYSBsb2FkIHRvIGIuY29tLCBhbmQgdGhhdCByZWRpcmVjdHMgdG8gYy5j
b20KKyAgICAgICAgMyAtIEEgV0tXZWJWaWV3IGlzIHNob3dpbmcgY29udGVudCBmcm9tIGEuY29t
LCB3ZSBzdGFydCBhIGxvYWQgdG8gYS5jb20sIHRoYXQgdGhhdCByZWRpcmVjdHMgdG8gYi5jb20u
CisKKyAgICAgICAgU3VwcG9ydGluZyBhbGwgMyBvZiB0aGVzZSBicm91Z2h0IHRoZWlyIG93biBs
aXR0bGUgY2hhbGxlbmdlcy4KKworICAgICAgICBCeSB0ZWFjaGluZyBOYXZpZ2F0aW9uIG9iamVj
dHMgbW9yZSBhYm91dCByZWRpcmVjdHMgSSB3YXMgYWJsZSB0byBzdXBwb3J0IGFsbCAzIGNhc2Vz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAg
KEFQSTo6TmF2aWdhdGlvbjo6TmF2aWdhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246
OnNldEN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6YXBwZW5kUmVk
aXJlY3Rpb25VUkwpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpsb2dnaW5nU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bG9nZ2luZ1VSTCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb246Om9yaWdpbmFsUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChBUEk6Ok5h
dmlnYXRpb246OmN1cnJlbnRSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bjo6Y3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChBUEk6
Ok5hdmlnYXRpb246OnNldEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCk6CisgICAgICAgIChBUEk6
Ok5hdmlnYXRpb246OmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCBjb25zdCk6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb246OnJlcXVlc3QgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlv
biBfcmVxdWVzdF0pOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzKTogSWYgdGhpcyBjb250aW51ZWQgbmF2aWdhdGlvbiBpcyBjdXJyZW50bHkgaW4gYSBzZXJ2
ZXIKKyAgICAgICAgICByZWRpcmVjdCwgc2F2ZSBvZmYgYSBsYW1iZGEgdG8gc3ludGhlc2l6ZSBh
ICJkaWQgcmVjZWl2ZSBzZXJ2ZXIgcmVkaXJlY3QiIGNhbGxiYWNrIG9uY2UgdGhlIG5ldyBXZWJQ
cm9jZXNzIGlzIHJ1bm5pbmcuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3Jl
YXRlTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogUG9zc2libHkgaWdub3JlIHRoaXMgbm90aWZpY2F0aW9u
IGlmIGl0IGlzIHJlYWxseSBhCisgICAgICAgICAgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IHRoYXQg
aXMganVzdCBzdGFydGluZyBiYWNrIHVwIGluIGEgbmV3IFdlYlByb2Nlc3MuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1p
dExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6IERvIG5vdCBjbGVhciBwYWdlTG9hZFN0YXRl
IGlmIHRoZSBwcm9jZXNzIGlzIGV4aXR0aW5nIGZvcgorICAgICAgICAgIGEgbmF2aWdhdGlvbiBz
d2FwLCBhcyB3ZSB3aWxsIG5lZWQgdG8gcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZiB3aGVuIHRo
ZSBsb2FkIGNvbnRpbnVlcyBpbiBhIG5ldyBXZWJQcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKTogSWYgYSBw
cm9jZXNzIGhhcyBuZXZlciBjb21taXR0ZWQgYW55IHByb3Zpc2lvbmFsIGxvYWQsIGl0IGNhbiBh
bHdheXMKKyAgICAgICAgICBiZSB1c2VkIHRvIGNvbnRpbnVlIGEgbmF2aWdhdGlvbi4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRD
b21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
Omhhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgY29uc3QpOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCiAy
MDE4LTAzLTI2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhbmQgYWRvcHQgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5ERVJfU0VSVkVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCmluZGV4IGJlYTMz
M2U5ZjQ0Li5iOTU3NTNjNjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcApAQCAtNDEsMTMgKzQxLDE2IEBAIE5hdmlnYXRpb246Ok5hdmlnYXRp
b24oV2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSkKIAogTmF2aWdhdGlvbjo6TmF2aWdhdGlvbihX
ZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogICAgIDogbV9uYXZpZ2F0aW9uSUQoc3RhdGUuZ2VuZXJhdGVOYXZpZ2F0aW9uSUQoKSkK
LSAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9vcmlnaW5hbFJlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAsIG1fY3VycmVudFJlcXVlc3QobV9vcmlnaW5hbFJl
cXVlc3QpCiB7Ci0gICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChtX3JlcXVlc3QudXJsKCkpOwor
ICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobV9vcmlnaW5hbFJlcXVlc3QudXJsKCkpOwogfQog
CiBOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRGcmFtZUxv
YWRUeXBlKQogICAgIDogbV9uYXZpZ2F0aW9uSUQoc3RhdGUuZ2VuZXJhdGVOYXZpZ2F0aW9uSUQo
KSkKKyAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KGl0ZW0udXJsKCkpCisgICAgLCBtX2N1cnJlbnRS
ZXF1ZXN0KG1fb3JpZ2luYWxSZXF1ZXN0KQogICAgICwgbV9iYWNrRm9yd2FyZExpc3RJdGVtKCZp
dGVtKQogICAgICwgbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoYmFja0ZvcndhcmRGcmFtZUxv
YWRUeXBlKQogewpAQCAtNTcsMTYgKzYwLDIyIEBAIE5hdmlnYXRpb246On5OYXZpZ2F0aW9uKCkK
IHsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIp
Cit7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisgICAgbV9jdXJy
ZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7Cit9CisKK3Zv
aWQgTmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3Qo
KSAhPSB1cmwpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQodXJsKTsKIH0KIAogI2lm
ICFMT0dfRElTQUJMRUQKLVdURjo6U3RyaW5nIE5hdmlnYXRpb246OmxvZ2dpbmdVUkwoKSBjb25z
dAorV1RGOjpTdHJpbmcgTmF2aWdhdGlvbjo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA/IG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+dXJs
KCkgOiBtX3JlcXVlc3QudXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1v
c3QgcmVjZW50IFVSTDogIiwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBCYWNr
L2ZvcndhcmQgbGlzdCBpdGVtIFVSTDogJyIsIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA/IG1fYmFj
a0ZvcndhcmRMaXN0SXRlbS0+dXJsKCkgOiBTdHJpbmcgeyB9LCBTdHJpbmc6OmZvcm1hdCgiJyAo
JXApIiwgbV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggZjFmODk1NzA4ZDQu
LjQ5NDcxODg3MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTYyLDcgKzYzLDE0
IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmF2aWdhdGlvbklEOyB9CiAKLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KKyAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luYWxSZXF1ZXN0OyB9CisgICAgdm9pZCBzZXRDdXJyZW50UmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRSZXF1ZXN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllcj4gY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBzZXRDdXJy
ZW50UmVxdWVzdElzUmVkaXJlY3QoYm9vbCBpc1JlZGlyZWN0KSB7IG1faXNSZWRpcmVjdCA9IGlz
UmVkaXJlY3Q7IH0KKyAgICBib29sIGN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNSZWRpcmVjdDsgfQorCiAgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiBiYWNrRm9yd2FyZExpc3RJdGVtKCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVt
LmdldCgpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBiYWNr
Rm9yd2FyZEZyYW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkRnJhbWVM
b2FkVHlwZTsgfQogCkBAIC03Niw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEZv
cmNlRG93bmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZvcmNlRG93bmxvYWQ7IH0KIAog
I2lmICFMT0dfRElTQUJMRUQKLSAgICBXVEY6OlN0cmluZyBsb2dnaW5nVVJMKCkgY29uc3Q7Cisg
ICAgV1RGOjpTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC04NSwxMCArOTMsMTMgQEAgcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uKFdlYktpdDo6V2Vi
TmF2aWdhdGlvblN0YXRlJiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29y
ZTo6RnJhbWVMb2FkVHlwZSk7CiAKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKLSAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
bV9jdXJyZW50UmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyPiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OlVSTD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVk
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zaG91bGRGb3JjZURvd25sb2FkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNSZWRpcmVjdCB7IGZhbHNlIH07CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1t
CmluZGV4IGVkNjY2MzI3YjllLi40MmZiODU4NTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCkBAIC00Myw3ICs0Myw3IEBACiAK
IC0gKE5TVVJMUmVxdWVzdCAqKV9yZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5y
ZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAg
IHJldHVybiBfbmF2aWdhdGlvbi0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDE4YTEwZTc1ZGIzLi44NWZiNWE1ZTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMzUxLDkgKzIzNTEsOSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFt
ZVByb3h5JiBmcgogICAgICAgICBBU1NFUlQoYWN0aXZlUG9saWN5TGlzdGVuZXItPmxpc3RlbmVy
SUQoKSA9PSBsaXN0ZW5lcklEKTsKIAogICAgICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFjdGlv
bjo6VXNlICYmIG5hdmlnYXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9jZXNz
ID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24tPnJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHByb3Bvc2VkUHJv
Y2VzcyA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlz
LCAqbmF2aWdhdGlvbik7CiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0cigpICE9
ICZwcm9jZXNzKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3aXRjaGluZyB0
byBuZXcgcHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiB0byB1cmwgJyVzJyAoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSAlcCkiLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbi0+bG9nZ2luZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIG5hdmlnYXRpb24tPmJhY2tGb3J3
YXJkTGlzdEl0ZW0oKSk7CisgICAgICAgICAgICAgICAgTE9HKExvYWRpbmcsICJTd2l0Y2hpbmcg
ZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAi
ICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbi0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAg
ICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdXNwZW5kOwogICAgICAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIHByb3Bvc2VkUHJvY2VzcyA9
IFdURk1vdmUocHJvcG9zZWRQcm9jZXNzKV0oKSBtdXRhYmxlIHsKQEAgLTIzNjgsOCArMjM2OCw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
biBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZyCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51
ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiB7Ci0gICAgTE9HKExvYWRpbmcsICJDb250aW51
aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgdG8gVVJMICVzIGluIGEgbmV3IHdlYiBwcm9jZXNz
IiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nVVJMKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAg
QVNTRVJUKG1fcHJvY2Vzcy5wdHIoKSAhPSBwcm9jZXNzLnB0cigpKTsKICAgICBhdHRhY2hUb1By
b2Nlc3NGb3JOYXZpZ2F0aW9uKFdURk1vdmUocHJvY2VzcykpOwogCiAgICAgaWYgKGF1dG8qIGl0
ZW0gPSBuYXZpZ2F0aW9uLmJhY2tGb3J3YXJkTGlzdEl0ZW0oKSkgewpAQCAtMjM4NSw3ICsyMzg2
LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3Mo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdv
cmsgb3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRl
LCBldGMKLSAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5hdmlnYXRpb24sIFJlc291cmNl
UmVxdWVzdCB7IG5hdmlnYXRpb24ucmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRyLCBOYXZp
Z2F0aW9uUG9saWN5Q2hlY2s6OkJ5cGFzcyk7CisgICAgQVNTRVJUKCFuYXZpZ2F0aW9uLmN1cnJl
bnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5h
dmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVy
bmFsU2NoZW1lcywgbnVsbHB0ciwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworCisg
ICAgLy8gTm9ybWFsbHksIG5vdGlmaWNhdGlvbiBvZiBhIHNlcnZlciByZWRpcmVjdCBjb21lcyBm
cm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgLy8gSWYgd2UgYXJlIHByb2Nlc3Mgc3dh
cHBpbmcgaW4gcmVzcG9uc2UgdG8gYSBzZXJ2ZXIgcmVkaXJlY3QgdGhlbiB0aGF0IG5vdGlmaWNh
dGlvbiB3aWxsIG5vdCBjb21lIGZyb20gdGhlIG5ldyBXZWJDb250ZW50IHByb2Nlc3MuCisgICAg
Ly8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgdGhlIFVJUHJvY2VzcyBzeW50aGVzaXplIHRoZSByZWRp
cmVjdCBub3RpZmljYXRpb24gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCisgICAgaWYgKG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX21h
aW5GcmFtZSk7CisgICAgICAgIG1fbWFpbkZyYW1lU2V0SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24p
LCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgp
IH1dKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBBU1NFUlQobV9tYWluRnJhbWUpOworICAgICAg
ICAgICAgbV9tYWluRnJhbWUtPmZyYW1lTG9hZFN0YXRlKCkuZGlkU3RhcnRQcm92aXNpb25hbExv
YWQocmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgeyB9KTsKKyAgICAgICAgfTsK
KyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNl
ckFnZW50KQpAQCAtMzE4OSw2ICszMjAzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVh
dGVNYWluRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8g
dGhlIHByb2Nlc3Mgd2lkZSBtYXAuCiAgICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJ
RCwgbV9tYWluRnJhbWUuZ2V0KCkpOworCisgICAgaWYgKG1fbWFpbkZyYW1lU2V0SGFuZGxlcikg
eworICAgICAgICBtX21haW5GcmFtZVNldEhhbmRsZXIoKTsKKyAgICAgICAgbV9tYWluRnJhbWVT
ZXRIYW5kbGVyID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
cmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzI2NSwxMCArMzI4NCw2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IobV9wYWdlQ2xpZW50KTsKIAotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKLQotICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElS
ZXF1ZXN0VVJMKHRyYW5zYWN0aW9uKTsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAg
ICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwpAQCAtMzI3OCw2ICszMjkzLDIwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRp
b25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9ICZuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9u
KG5hdmlnYXRpb25JRCk7CiAKKyAgICAvLyBJZiB0aGlzIHNlZW1pbmdseSBuZXcgbG9hZCBpcyBh
Y3R1YWxseSBjb250aW51aW5nIGEgc2VydmVyIHJlZGlyZWN0IGZvciBhIHByZXZpb3VzIG5hdmln
YXRpb24gaW4gYSBuZXcgcHJvY2VzcywKKyAgICAvLyB0aGVuIHdlIGlnbm9yZSB0aGlzIG5vdGlm
aWNhdGlvbi4KKyAgICBpZiAobmF2aWdhdGlvbiAmJiBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVz
dElzUmVkaXJlY3QoKSkgeworICAgICAgICBhdXRvIG5hdmlnYXRpb25Qcm9jZXNzSWRlbnRpZmll
ciA9IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICAg
ICAgaWYgKG5hdmlnYXRpb25Qcm9jZXNzSWRlbnRpZmllciAmJiAqbmF2aWdhdGlvblByb2Nlc3NJ
ZGVudGlmaWVyICE9IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2
aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Bh
Z2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKKworICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBl
bmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uKTsKKwogICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkgewogICAgICAgICBpZiAobV9wYWdlTG9hZFN0YXJ0KQogICAgICAgICAgICAgcmVw
b3J0UGFnZUxvYWRSZXN1bHQoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNh
bmNlbGxhdGlvbiB9KTsKQEAgLTMyOTgsMjcgKzMzMjcsMjkgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmEKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIExPRyhMb2FkaW5nLCAiV2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVy
bCAlcyIsIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNs
aWVudCk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7Ci0gICAgTUVTU0FHRV9DSEVDS19V
UkwodXJsKTsKKyAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3Qg
emVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0
aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmln
YXRpb247CiAgICAgaWYgKG5hdmlnYXRpb25JRCkgewogICAgICAgICBuYXZpZ2F0aW9uID0gJm5h
dmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKLSAgICAgICAgbmF2aWdh
dGlvbi0+YXBwZW5kUmVkaXJlY3Rpb25VUkwodXJsKTsKKyAgICAgICAgbmF2aWdhdGlvbi0+YXBw
ZW5kUmVkaXJlY3Rpb25VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgfQogCiAgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgaWYgKGZyYW1l
LT5pc01haW5GcmFtZSgpKQotICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHRyYW5zYWN0aW9uLCB1cmwpOworICAgICAgICBt
X3BhZ2VMb2FkU3RhdGUuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KHRyYW5zYWN0aW9uLCByZXF1ZXN0LnVybCgpKTsKIAotICAgIGZyYW1lLT5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkpOwogCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KSB7CkBAIC0zNDM5LDYgKzM0NzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmln
YXRpb24gPSAmbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCisg
ICAgbV9wcm9jZXNzLT5kaWRDb21taXRQcm92aXNpb25hbExvYWQoKTsKKwogI2lmIFBMQVRGT1JN
KElPUykKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgbV9oYXNSZWNl
aXZlZExheWVyVHJlZVRyYW5zYWN0aW9uQWZ0ZXJEaWRDb21taXRMb2FkID0gZmFsc2U7CkBAIC0z
Nzg3LDcgKzM4MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNl
dCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJh
bWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSAtIFRhcmdldCB1cmwgJXMiLCBvcmlnaW5hbFJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBV
UkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApA
QCAtMzgwMiwyMSArMzgzNSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdp
bmFsUmVxdWVzdC51cmwoKSk7CiAgICAgCi0gICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklEIHsg
MCB9OworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQg
PyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpIDog
bV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCkpOworCisgICAgQVNTRVJUKG5hdmlnYXRpb24tPm9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpID09IG9yaWdpbmFsUmVxdWVzdC51cmwoKSk7CisKKyAgICB1aW50NjRfdCBuZXdO
YXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKKyAgICBuYXZpZ2F0aW9u
LT5zZXRXYXNVc2VySW5pdGlhdGVkKCEhbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVU
b2tlbklkZW50aWZpZXIpOworICAgIG5hdmlnYXRpb24tPnNldFNob3VsZEZvcmNlRG93bmxvYWQo
IW5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpKTsKKyAgICBu
YXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG1f
cHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIG5hdmlnYXRpb24tPnNldEN1
cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGlyZWN0KTsK
KwogICAgIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklELCBQb2xpY3lMaXN0ZW5lclR5cGU6
Ok5hdmlnYXRpb25BY3Rpb24pOwotICAgIGlmICghbmF2aWdhdGlvbklEKSB7Ci0gICAgICAgIGF1
dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmln
YXRpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKLSAgICAgICAgbmV3TmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgICAgIG5hdmlnYXRpb24tPnNldFdh
c1VzZXJJbml0aWF0ZWQoISFuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRl
bnRpZmllcik7Ci0gICAgICAgIG5hdmlnYXRpb24tPnNldFNob3VsZEZvcmNlRG93bmxvYWQoIW5h
dmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpKTsKLSAgICAgICAg
bGlzdGVuZXItPnNldE5hdmlnYXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uKSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgYXV0byYgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCk7Ci0gICAgICAgIG5ld05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25J
RDsKLSAgICAgICAgbmF2aWdhdGlvbi5zZXRXYXNVc2VySW5pdGlhdGVkKCEhbmF2aWdhdGlvbkFj
dGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBuYXZpZ2F0aW9u
LnNldFNob3VsZEZvcmNlRG93bmxvYWQoIW5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0
cmlidXRlLmlzTnVsbCgpKTsKLSAgICAgICAgbGlzdGVuZXItPnNldE5hdmlnYXRpb24obmF2aWdh
dGlvbik7Ci0gICAgfQorICAgIGxpc3RlbmVyLT5zZXROYXZpZ2F0aW9uKFdURk1vdmUobmF2aWdh
dGlvbikpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS0+
ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKQpAQCAtNTgw
NCw5ICs1ODM0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNz
RXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAgICAgbV90b3VjaEV2ZW50
UXVldWUuY2xlYXIoKTsKICNlbmRpZgogCi0gICAgUGFnZUxvYWRTdGF0ZTo6VHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKLSAgICBtX3BhZ2VM
b2FkU3RhdGUucmVzZXQodHJhbnNhY3Rpb24pOworICAgIGlmICh0ZXJtaW5hdGlvblJlYXNvbiAh
PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKSB7CisgICAgICAgIFBh
Z2VMb2FkU3RhdGU6OlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRy
YW5zYWN0aW9uKCk7CisgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5yZXNldCh0cmFuc2FjdGlvbik7
CisgICAgfQogCisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8zODY3NjYwND4gSW4gY2Fz
ZSBvZiBwcm9jZXNzIHN3YXBzLCB0aGUgb2xkIHByb2Nlc3Mgc2hvdWxkIGdyYWNlZnVsbHkgc3Vz
cGVuZCBpbnN0ZWFkIG9mIHRlcm1pbmF0aW5nLgogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Rlcm1p
bmF0ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAw
NGU1ODg5YjEzOC4uOGZjNjVjMGNiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xMzM5LDcgKzEzMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRl
U3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJE
YXRhJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNv
cmU6OlVSTCYmLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5KTsKICAgICB2b2lkIGRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYpOwpAQCAtMTc3Niw2ICsxNzc2LDggQEAg
cHJpdmF0ZToKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwog
CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOworICAgIEZ1bmN0aW9uPHZv
aWQgKCk+IG1fbWFpbkZyYW1lU2V0SGFuZGxlcjsKKwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5
PiBtX2ZvY3VzZWRGcmFtZTsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mcmFtZVNldExh
cmdlc3RGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDBjMzkwODM5ZmRjLi5hOTJjZDM3NWU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTE2LDcg
KzExNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIEZyYW1lIGxvYWQg
bWVzc2FnZXMKICAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6
VVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogICAgIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgdXJsLCBkb3VibGUgZGVsYXkpCiAgICAgRGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJM
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3Jl
OjpVUkwgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IDBlZTJhOTFiZDEzLi41OTQ5ODc1MjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTk2NSwxMyArMTk2NSwxNyBAQCBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZy
b21QYWdlSUQodQogfQogI2VuZGlmCiAKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFVSTCYg
dGFyZ2V0VVJMKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NG
b3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uKQogewogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5wcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIHBhZ2UucHJvY2VzcygpOwogCisgICAgaWYgKCFwYWdlLnBy
b2Nlc3MoKS5oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkpCisgICAgICAgIHJldHVy
biBwYWdlLnByb2Nlc3MoKTsKKwogICAgIGF1dG8gdXJsID0gVVJMIHsgUGFyc2VkVVJMU3RyaW5n
LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OwotICAgIGlmIChwcm90b2NvbEhvc3RBbmRQ
b3J0QXJlRXF1YWwodXJsLCB0YXJnZXRVUkwpIHx8IHVybC5pc0JsYW5rVVJMKCkpCisKKyAgICBp
ZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgbmF2aWdhdGlvbi5jdXJyZW50UmVx
dWVzdCgpLnVybCgpKSB8fCB1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKIAogICAgIHJldHVybiBjcmVhdGVOZXdXZWJQcm9j
ZXNzKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDg5NWZjMzM2OTgwLi40MDJlYTcyMzQwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIERv
d25sb2FkQ2xpZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKK2NsYXNzIE5hdmln
YXRpb247CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIApAQCAtNDQ1LDcgKzQ0Niw3IEBA
IHB1YmxpYzoKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGJhY2tncm91bmRXZWJQcm9j
ZXNzVG9rZW4oKSBjb25zdCB7IHJldHVybiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKG1fYmFj
a2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAjZW5kaWYKIAotICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZp
Z2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiYpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCmluZGV4IDNiYWQyZWVlNGEyLi44MGFiOGE2YjU5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIwNSw2ICsyMDUsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAKKyAg
ICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCgpIHsgbV9oYXNDb21taXR0ZWRBbnlQcm92
aXNpb25hbExvYWRzID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9u
YWxMb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2Fk
czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCk7
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSYp
OwpAQCAtMzI5LDYgKzMzMiw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNoRGVsaXZlcnlDb21wbGV0
aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPj4gbV9s
b2NhbFBvcnRBY3Rpdml0eUNvbXBsZXRpb25IYW5kbGVyczsKKworICAgIGJvb2wgbV9oYXNDb21t
aXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYWYzODY2OGVjYjku
LmFkZTAxMWQ2ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKQEAgLTMwNiwxMSArMzA3LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkK
ICAgICBXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJE
b2N1bWVudExvYWRlciY+KCptX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcigpKTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwog
CisgICAgTE9HKExvYWRpbmcsICJXZWJQcm9jZXNzICVpIC0gZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQgdG8gcmVxdWVzdCB1cmwgJXMiLCBnZXRwaWQo
KSwgZG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAv
LyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRv
Y3VtZW50TG9hZGVyLnVybCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRM
b2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKSwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwoKQpAQCAtODE2LDYgKzgxOSw4IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBMT0coTG9hZGlu
ZywgIldlYlByb2Nlc3MgJWkgLSBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24gdG8gcmVxdWVzdCB1cmwgJXMiLCBnZXRwaWQoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKwogICAgIG1faXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biA9IHRydWU7CiAgICAgaWYgKG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHdlYlBh
Z2UtPmRpZFN0YXJ0TmF2aWdhdGlvblBvbGljeUNoZWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWE3YTE2YzZiODEuLjY5NDhkZTRiNzdi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTgtMDMtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFByb2Nlc3Mgc3dhcHBpbmcgb24gbmF2aWdhdGlvbiBuZWVkcyB0byBoYW5k
bGUgc2VydmVyIHJlZGlyZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVs
ZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjpdKToKKyAgICAgICAg
KC1bUFNPTlNjaGVtZSBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6dG9VUkxTdHJpbmc6XSk6Cisg
ICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisKIDIw
MTgtMDMtMjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2FybiBhZ2FpbnN0IGNvb2tpZSBhY2Nlc3MgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB1c2lu
ZyBQcm9jZXNzUHJpdmlsZWdlIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tCmluZGV4IGYyMjJjYmUxODE3Li5hMmVhMGU1MjE4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZUhhbmRsZXIuaD4KQEAg
LTQyLDYgKzQzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5o
PgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAg
LTU0LDYgKzU2LDkgQEAgc3RhdGljIGludCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzOwogCiBz
dGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWNlaXZlZE1lc3NhZ2VzID0gYWRvcHRO
UyhbQFtdIG11dGFibGVDb3B5XSk7CiBzdGF0aWMgYm9vbCByZWNlaXZlZE1lc3NhZ2U7CitzdGF0
aWMgYm9vbCBzZXJ2ZXJSZWRpcmVjdGVkOworc3RhdGljIEhhc2hTZXQ8cGlkX3Q+IHNlZW5QSURz
OworCiBAaW50ZXJmYWNlIFBTT05NZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyPgogQGVuZAogCkBAIC03MiwyMSArNzcsMzEgQEAgc3RhdGljIGJvb2wgcmVj
ZWl2ZWRNZXNzYWdlOwogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogeworICAgIHNlZW5Q
SURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKICAgICBkb25lID0gdHJ1
ZTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rp
b24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRl
Y2lzaW9uSGFuZGxlcgogewogICAgICsrbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxsczsKKyAgICBz
ZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiAgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKIH0KIAorLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIHNl
ZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBzZXJ2ZXJS
ZWRpcmVjdGVkID0gdHJ1ZTsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNlIFBTT05TY2hlbWUgOiBO
U09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CiAgICAgY29uc3QgY2hhciogX2J5dGVzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IF9yZWRpcmVjdHM7CiB9CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXM7CistICh2b2lkKWFkZFJlZGlyZWN0
RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VVUkxTdHJpbmcgdG9VUkxTdHJpbmc6KE5T
U3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmc7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBQ
U09OU2NoZW1lCkBAIC05OCw5ICsxMTMsMjUgQEAgc3RhdGljIGJvb2wgcmVjZWl2ZWRNZXNzYWdl
OwogICAgIHJldHVybiBzZWxmOwogfQogCistICh2b2lkKWFkZFJlZGlyZWN0RnJvbVVSTFN0cmlu
ZzooTlNTdHJpbmcgKilzb3VyY2VVUkxTdHJpbmcgdG9VUkxTdHJpbmc6KE5TU3RyaW5nICopZGVz
dGluYXRpb25VUkxTdHJpbmcKK3sKKyAgICBfcmVkaXJlY3RzLnNldChzb3VyY2VVUkxTdHJpbmcs
IGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKK30KKwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzawog
ewotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAi
dGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0p
OworICAgIE5TVVJMICpmaW5hbFVSTCA9IHRhc2sucmVxdWVzdC5VUkw7CisgICAgYXV0byB0YXJn
ZXQgPSBfcmVkaXJlY3RzLmdldCh0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAg
ICBpZiAoIXRhcmdldC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byByZWRpcmVjdFJlc3BvbnNl
ID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6bmlsIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CisKKyAgICAgICAgZmluYWxVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNT
dHJpbmcgKil0YXJnZXRdOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxS
ZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTF0pOworCisgICAgICAgIFsoaWQ8V0tV
UkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOnJlZGlyZWN0
UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6ZmluYWxVUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVj
dGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAgW3Rhc2sgZGlk
UmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKIAogICAgIGlmIChfYnl0ZXMpIHsKQEAg
LTI1Myw0ICsyODQsMTM2IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2spCiAgICAgRVhQRUNUX0ZB
TFNFKHBpZDEgPT0gcGlkMyk7CiB9CiAKK1RFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0
RnJvbU5ld1dlYlZpZXcpCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9
IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24g
c2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAgIFJldGFpblB0cjxQU09OU2No
ZW1lPiBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBb
aGFuZGxlciBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMS5odG1s
IiB0b1VSTFN0cmluZzpAInBzb25yZWRpcmVjdGVkOi8vaG9zdC9tYWluMS5odG1sIl07CisgICAg
W3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJwc29uIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwiXV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnNlcnZlclJlZGlyZWN0ZWQpOworICAgIHNlcnZlclJlZGlyZWN0ZWQgPSBmYWxzZTsKKworICAg
IHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAg
c2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgRVhQ
RUNUX0ZBTFNFKHNlcnZlclJlZGlyZWN0ZWQpOworICAgIEVYUEVDVF9FUSgyLCBudW1iZXJPZkRl
Y2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7Cit9
CisKK1RFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0KQoreworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsK
KyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFuZGxlcjEgPSBhZG9wdE5TKFtbUFNPTlNjaGVt
ZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVyMSBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6
QCJwc29uOi8vaG9zdC9tYWluMS5odG1sIiB0b1VSTFN0cmluZzpAInBzb25yZWRpcmVjdGVkOi8v
aG9zdC9tYWluMS5odG1sIl07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicHNvbiJdOworICAgIFJldGFp
blB0cjxQU09OU2NoZW1lPiBoYW5kbGVyMiA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFu
ZGxlcjIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAib3JpZ2luYWxsb2FkIl07CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIm9yaWdpbmFsbG9hZDovL2hv
c3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgYXV0byBwaWRBZnRlckZpcnN0TG9hZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRp
Zmllcl07CisKKyAgICBFWFBFQ1RfRVEoMSwgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7Cisg
ICAgRVhQRUNUX0VRKDF1LCBzZWVuUElEcy5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKCpzZWVu
UElEcy5iZWdpbigpID09IHBpZEFmdGVyRmlyc3RMb2FkKTsKKworICAgIHJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hv
c3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2VydmVyUmVkaXJlY3RlZCk7CisgICAgc2Vy
dmVyUmVkaXJlY3RlZCA9IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uoc2VydmVyUmVkaXJlY3RlZCk7
CisgICAgRVhQRUNUX0VRKDMsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworICAgIEVYUEVD
VF9FUSgydSwgc2VlblBJRHMuc2l6ZSgpKTsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgU2VydmVy
UmVkaXJlY3QyKQoreworICAgIC8vIFRoaXMgdGVzdHMgYSBsb2FkIHRoYXQgKnN0YXJ0cyBvdXQq
IHRvIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcHJldmlvdXMgbG9hZCwgYnV0IHRoZW4gcmVkaXJl
Y3RzIHRvIGEgbmV3IG9yaWdpbi4KKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlv
biBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWluUHRyPFBTT05T
Y2hlbWU+IGhhbmRsZXIxID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbaGFuZGxlcjEgYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjIu
aHRtbCIgdG9VUkxTdHJpbmc6QCJwc29ucmVkaXJlY3RlZDovL2hvc3QvbWFpbjEuaHRtbCJdOwor
ICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdl
dCgpIGZvclVSTFNjaGVtZTpAInBzb24iXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFu
ZGxlcjIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIyLmdldCgpIGZvclVSTFNj
aGVtZTpAInBzb25yZWRpcmVjdGVkIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlkQWZ0ZXJGaXJzdExv
YWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgRVhQRUNUX0ZBTFNF
KHNlcnZlclJlZGlyZWN0ZWQpOworICAgIEVYUEVDVF9FUSgxLCBudW1iZXJPZkRlY2lkZVBvbGlj
eUNhbGxzKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CisgICAgRVhQRUNU
X1RSVUUoKnNlZW5QSURzLmJlZ2luKCkgPT0gcGlkQWZ0ZXJGaXJzdExvYWQpOworCisgICAgcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJwc29uOi8vaG9zdC9tYWluMi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2ZXJSZWRpcmVjdGVk
KTsKKyAgICBzZXJ2ZXJSZWRpcmVjdGVkID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dl
YlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJS
ZWRpcmVjdGVkKTsKKyAgICBFWFBFQ1RfRVEoMywgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7
CisgICAgRVhQRUNUX0VRKDJ1LCBzZWVuUElEcy5zaXplKCkpOworfQorCiAjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336927</attachid>
            <date>2018-03-31 11:40:18 -0700</date>
            <delta_ts>2018-04-02 10:35:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37107</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNjVkMmVmNzk2NTcuLmE5N2IwNDZiMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY3IEBACisyMDE4LTAzLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcm9jZXNzIHN3YXBwaW5nIG9uIG5hdmlnYXRpb24gbmVlZHMgdG8gaGFuZGxlIHNl
cnZlciByZWRpcmVjdHMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY5MDQ2NT4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2FtZSBydWxlcyB3ZSBh
cHBseSB0byBwcm9jZXNzIHN3YXBwaW5nIGZvciBiYXNpYyBuYXZpZ2F0aW9ucyBuZWVkIHRvIGFw
cGx5CisgICAgICAgIHRvIHNlcnZlciByZWRpcmVjdHMgYXMgd2VsbC4KKworICAgICAgICBUaGVy
ZSdzIHRocmVlIGludGVyZXN0aW5nIGNhc2VzIHdlIG5lZWQgdG8gc3VwcG9ydCB0aGF0IGFyZSBj
b3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHM6CisgICAgICAgIDEgLSBUaGUgaW5pdGlhbCBsb2FkIGlu
IGEgV0tXZWJWaWV3IHJlZGlyZWN0cyBjcm9zcy1vcmlnaW4uCisgICAgICAgIDIgLSBBIFdLV2Vi
VmlldyBpcyBzaG93aW5nIGNvbnRlbnQgZnJvbSBhLmNvbSwgd2Ugc3RhcnQgYSBsb2FkIHRvIGIu
Y29tLCBhbmQgdGhhdCByZWRpcmVjdHMgdG8gYy5jb20KKyAgICAgICAgMyAtIEEgV0tXZWJWaWV3
IGlzIHNob3dpbmcgY29udGVudCBmcm9tIGEuY29tLCB3ZSBzdGFydCBhIGxvYWQgdG8gYS5jb20s
IHRoYXQgdGhhdCByZWRpcmVjdHMgdG8gYi5jb20uCisKKyAgICAgICAgU3VwcG9ydGluZyBhbGwg
MyBvZiB0aGVzZSBicm91Z2h0IHRoZWlyIG93biBsaXR0bGUgY2hhbGxlbmdlcy4KKworICAgICAg
ICBCeSB0ZWFjaGluZyBOYXZpZ2F0aW9uIG9iamVjdHMgbW9yZSBhYm91dCByZWRpcmVjdHMgSSB3
YXMgYWJsZSB0byBzdXBwb3J0IGFsbCAzIGNhc2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6TmF2aWdhdGlv
bik6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnNldEN1cnJlbnRSZXF1ZXN0KToKKyAgICAg
ICAgKEFQSTo6TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdh
dGlvbjo6bG9nZ2luZ1VSTCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246Om9yaWdpbmFsUmVx
dWVzdCBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmN1cnJlbnRSZXF1ZXN0IGNv
bnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6Y3VycmVudFJlcXVlc3RQcm9jZXNzSWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnNldEN1cnJlbnRSZXF1
ZXN0SXNSZWRpcmVjdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmN1cnJlbnRSZXF1ZXN0
SXNSZWRpcmVjdCBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnJlcXVlc3QgY29u
c3QpOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbiBfcmVxdWVzdF0pOgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKTogSWYgdGhpcyBjb250aW51ZWQgbmF2
aWdhdGlvbiBpcyBjdXJyZW50bHkgaW4gYSBzZXJ2ZXIKKyAgICAgICAgICByZWRpcmVjdCwgc2F2
ZSBvZmYgYSBsYW1iZGEgdG8gc3ludGhlc2l6ZSBhICJkaWQgcmVjZWl2ZSBzZXJ2ZXIgcmVkaXJl
Y3QiIGNhbGxiYWNrIG9uY2UgdGhlIG5ldyBXZWJQcm9jZXNzIGlzIHJ1bm5pbmcuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogUG9z
c2libHkgaWdub3JlIHRoaXMgbm90aWZpY2F0aW9uIGlmIGl0IGlzIHJlYWxseSBhCisgICAgICAg
ICAgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IHRoYXQgaXMganVzdCBzdGFydGluZyBiYWNrIHVwIGlu
IGEgbmV3IFdlYlByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRl
ZCk6IERvIG5vdCBjbGVhciBwYWdlTG9hZFN0YXRlIGlmIHRoZSBwcm9jZXNzIGlzIGV4aXR0aW5n
IGZvcgorICAgICAgICAgIGEgbmF2aWdhdGlvbiBzd2FwLCBhcyB3ZSB3aWxsIG5lZWQgdG8gcGlj
ayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZiB3aGVuIHRoZSBsb2FkIGNvbnRpbnVlcyBpbiBhIG5ldyBX
ZWJQcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKTogSWYgYSBwcm9jZXNzIGhhcyBuZXZlciBjb21taXR0ZWQg
YW55IHByb3Zpc2lvbmFsIGxvYWQsIGl0IGNhbiBhbHdheXMKKyAgICAgICAgICBiZSB1c2VkIHRv
IGNvbnRpbnVlIGEgbmF2aWdhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRQcm92aXNpb25hbExvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omhhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFs
TG9hZHMgY29uc3QpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCiAyMDE4LTAzLTMwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyOTgyOCk6IEZhY2Vib29r
IGxvZ2luIHBvcHVwIGlzIGJsYW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5jcHAKaW5kZXggYmVhMzMzZTlmNDQuLmI5NTc1M2M2NzUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC00MSwxMyArNDEs
MTYgQEAgTmF2aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlKQog
CiBOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0
ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQotICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVz
dCkpCisgICAgLCBtX29yaWdpbmFsUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9j
dXJyZW50UmVxdWVzdChtX29yaWdpbmFsUmVxdWVzdCkKIHsKLSAgICBtX3JlZGlyZWN0Q2hhaW4u
YXBwZW5kKG1fcmVxdWVzdC51cmwoKSk7CisgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChtX29y
aWdpbmFsUmVxdWVzdC51cmwoKSk7CiB9CiAKIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2
aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVM
b2FkVHlwZSBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCiAgICAgOiBtX25hdmlnYXRpb25JRChz
dGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQorICAgICwgbV9vcmlnaW5hbFJlcXVlc3QoaXRl
bS51cmwoKSkKKyAgICAsIG1fY3VycmVudFJlcXVlc3QobV9vcmlnaW5hbFJlcXVlc3QpCiAgICAg
LCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0oJml0ZW0pCiAgICAgLCBtX2JhY2tGb3J3YXJkRnJhbWVM
b2FkVHlwZShiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCiB7CkBAIC01NywxNiArNjAsMjIgQEAg
TmF2aWdhdGlvbjo6fk5hdmlnYXRpb24oKQogewogfQogCi12b2lkIE5hdmlnYXRpb246OmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBOYXZpZ2F0aW9u
OjpzZXRDdXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBw
cm9jZXNzSWRlbnRpZmllcjsKK30KKwordm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlv
blVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHko
KSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAgbV9yZWRpcmVjdENo
YWluLmFwcGVuZCh1cmwpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotV1RGOjpTdHJpbmcgTmF2
aWdhdGlvbjo6bG9nZ2luZ1VSTCgpIGNvbnN0CitXVEY6OlN0cmluZyBOYXZpZ2F0aW9uOjpsb2dn
aW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtID8g
bV9iYWNrRm9yd2FyZExpc3RJdGVtLT51cmwoKSA6IG1fcmVxdWVzdC51cmwoKS5zdHJpbmcoKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiTW9zdCByZWNlbnQgVVJMOiAiLCBtX2N1cnJlbnRSZXF1
ZXN0LnVybCgpLnN0cmluZygpLCAiIEJhY2svZm9yd2FyZCBsaXN0IGl0ZW0gVVJMOiAnIiwgbV9i
YWNrRm9yd2FyZExpc3RJdGVtID8gbV9iYWNrRm9yd2FyZExpc3RJdGVtLT51cmwoKSA6IFN0cmlu
ZyB7IH0sIFN0cmluZzo6Zm9ybWF0KCInICglcCkiLCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0
KCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb24uaAppbmRleCAwN2M0OGVlNDc4MS4uOTQ3ZmIzY2ZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIApAQCAtNjIsNyArNjMsMTQgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgbmF2
aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KIAotICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWVzdDsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFJlcXVlc3Q7IH0KKyAgICB2b2lkIHNldEN1
cnJlbnRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcik7CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50
UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFJlcXVlc3Q7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBjdXJyZW50UmVxdWVzdFByb2Nlc3NJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlm
aWVyOyB9CisKKyAgICB2b2lkIHNldEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChib29sIGlzUmVk
aXJlY3QpIHsgbV9pc1JlZGlyZWN0ID0gaXNSZWRpcmVjdDsgfQorICAgIGJvb2wgY3VycmVudFJl
cXVlc3RJc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZGlyZWN0OyB9CisKICAgICBX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3YXJkTGlzdEl0ZW0oKSB7IHJl
dHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCk7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lTG9hZFR5cGU+IGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOyB9CiAKQEAgLTgyLDcgKzkwLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50
NjRfdD4+JiBvcGVuZXIoKSBjb25zdCB7IHJldHVybiBtX29wZW5lcjsgfQogCiAjaWYgIUxPR19E
SVNBQkxFRAotICAgIFdURjo6U3RyaW5nIGxvZ2dpbmdVUkwoKSBjb25zdDsKKyAgICBXVEY6OlN0
cmluZyBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTkxLDEw
ICs5OSwxMyBAQCBwcml2YXRlOgogICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9u
U3RhdGUmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFtZUxv
YWRUeXBlKTsKIAogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwotICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1f
b3JpZ2luYWxSZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1f
Y3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6VVJM
PiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07
CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93bmxvYWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c1JlZGlyZWN0IHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0+IG1fYmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lTG9hZFR5cGU+IG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KaW5kZXggZWQ2
NjYzMjdiOWUuLjQyZmI4NTg1NmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KQEAgLTQzLDcgKzQzLDcgQEAKIAogLSAoTlNVUkxS
ZXF1ZXN0ICopX3JlcXVlc3QKIHsKLSAgICByZXR1cm4gX25hdmlnYXRpb24tPnJlcXVlc3QoKS5u
c1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJuIF9u
YXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RV
cGRhdGVIVFRQQm9keSk7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MWJjNTM3YjQ4NjguLmFjZjIzYzdlMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTIzNTIsOCArMjM1Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZy
CiAKICAgICAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuYXZpZ2F0aW9u
KSB7CiAgICAgICAgICAgICBhdXRvIHByb3Bvc2VkUHJvY2VzcyA9IHByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgYWN0aW9uKTsK
KwogICAgICAgICAgICAgaWYgKHByb3Bvc2VkUHJvY2Vzcy5wdHIoKSAhPSAmcHJvY2VzcygpKSB7
Ci0gICAgICAgICAgICAgICAgTE9HKExvYWRpbmcsICJTd2l0Y2hpbmcgdG8gbmV3IHByb2Nlc3Mg
Zm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgdG8gdXJsICclcycgKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0gJXApIiwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxvZ2dp
bmdVUkwoKS51dGY4KCkuZGF0YSgpLCBuYXZpZ2F0aW9uLT5iYWNrRm9yd2FyZExpc3RJdGVtKCkp
OworICAgICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAl
aSB0byBuZXcgcHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIiwgcHJvY2Vz
c0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBu
YXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIHByb3Bvc2VkUHJvY2VzcyA9IFdURk1v
dmUocHJvcG9zZWRQcm9jZXNzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocHJv
cG9zZWRQcm9jZXNzKSk7CkBAIC0yMzY3LDggKzIzNjgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5
JiBmcgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzKQogewotICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2
NCAiIHRvIFVSTCAlcyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1VSTCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhM
b2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcg
d2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkg
IT0gcHJvY2Vzcy5wdHIoKSk7CiAgICAgYXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihXVEZN
b3ZlKHByb2Nlc3MpKTsKIAogICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi5iYWNrRm9y
d2FyZExpc3RJdGVtKCkpIHsKQEAgLTIzODQsNyArMjM4NiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgUgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9u
ZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCi0gICAgbG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLnJl
cXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRB
bGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBh
c3MpOworICAgIEFTU0VSVCghbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7
CisgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVl
c3QgeyBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjazo6QnlwYXNzKTsKKworICAgIC8vIE5vcm1hbGx5LCBub3RpZmlj
YXRpb24gb2YgYSBzZXJ2ZXIgcmVkaXJlY3QgY29tZXMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzLgorICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBwaW5nIGluIHJlc3BvbnNlIHRvIGEg
c2VydmVyIHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRpb24gd2lsbCBub3QgY29tZSBmcm9t
IHRoZSBuZXcgV2ViQ29udGVudCBwcm9jZXNzLgorICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZl
IHRoZSBVSVByb2Nlc3Mgc3ludGhlc2l6ZSB0aGUgcmVkaXJlY3Qgbm90aWZpY2F0aW9uIGF0IHRo
ZSBhcHByb3ByaWF0ZSB0aW1lLgorICAgIGlmIChuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNS
ZWRpcmVjdCgpKSB7CisgICAgICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOworICAgICAgICBtX21h
aW5GcmFtZVNldEhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVx
dWVzdCB7IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9XSgpIG11dGFibGUgeworICAgICAg
ICAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lLT5mcmFt
ZUxvYWRTdGF0ZSgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkpOworICAg
ICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIFdU
Rk1vdmUocmVxdWVzdCksIHsgfSk7CisgICAgICAgIH07CisgICAgfQogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKQEAgLTMxOTMsNiArMzIw
OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpCiAKICAgICAvLyBBZGQgdGhlIGZyYW1lIHRvIHRoZSBwcm9jZXNzIHdpZGUgbWFwLgog
ICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIG1fbWFpbkZyYW1lLmdldCgpKTsK
KworICAgIGlmIChtX21haW5GcmFtZVNldEhhbmRsZXIpIHsKKyAgICAgICAgbV9tYWluRnJhbWVT
ZXRIYW5kbGVyKCk7CisgICAgICAgIG1fbWFpbkZyYW1lU2V0SGFuZGxlciA9IG51bGxwdHI7Cisg
ICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3Qg
ZnJhbWVJRCkKQEAgLTMyNjksMTAgKzMyODksNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYQog
ewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKLSAg
ICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7Ci0KLSAg
ICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbik7
Ci0KICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJs
KTsKQEAgLTMyODIsNiArMzI5OCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYQogICAgIGlm
IChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRp
b24gPSAmbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCisgICAg
Ly8gSWYgdGhpcyBzZWVtaW5nbHkgbmV3IGxvYWQgaXMgYWN0dWFsbHkgY29udGludWluZyBhIHNl
cnZlciByZWRpcmVjdCBmb3IgYSBwcmV2aW91cyBuYXZpZ2F0aW9uIGluIGEgbmV3IHByb2Nlc3Ms
CisgICAgLy8gdGhlbiB3ZSBpZ25vcmUgdGhpcyBub3RpZmljYXRpb24uCisgICAgaWYgKG5hdmln
YXRpb24gJiYgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCkpIHsKKyAgICAg
ICAgYXV0byBuYXZpZ2F0aW9uUHJvY2Vzc0lkZW50aWZpZXIgPSBuYXZpZ2F0aW9uLT5jdXJyZW50
UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgICAgIGlmIChuYXZpZ2F0aW9uUHJvY2Vz
c0lkZW50aWZpZXIgJiYgKm5hdmlnYXRpb25Qcm9jZXNzSWRlbnRpZmllciAhPSBtX3Byb2Nlc3Mt
PmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwg
dXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9u
KCk7CisKKyAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFu
c2FjdGlvbik7CisKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYg
KG1fcGFnZUxvYWRTdGFydCkKICAgICAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KFJlc291
cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CkBAIC0zMzAy
LDI3ICszMzMyLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hCiAgICAgICAgIG1fbG9hZGVy
Q2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKKyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1
NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0
aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CisgICAgTUVTU0FHRV9D
SEVDS19VUkwocmVxdWVzdC51cmwoKSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1lc3Nh
Z2UgY2hlY2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3Vy
cmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4K
ICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOwogICAgIGlmIChuYXZpZ2F0
aW9uSUQpIHsKICAgICAgICAgbmF2aWdhdGlvbiA9ICZuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCk7Ci0gICAgICAgIG5hdmlnYXRpb24tPmFwcGVuZFJlZGlyZWN0aW9u
VVJMKHVybCk7CisgICAgICAgIG5hdmlnYXRpb24tPmFwcGVuZFJlZGlyZWN0aW9uVVJMKHJlcXVl
c3QudXJsKCkpOwogICAgIH0KIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAg
ICAgbV9wYWdlTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZCh0cmFuc2FjdGlvbiwgdXJsKTsKKyAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh0cmFuc2FjdGlvbiwgcmVxdWVzdC51
cmwoKSk7CiAKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkKHVybCk7CisgICAgZnJhbWUtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZChyZXF1ZXN0LnVybCgpKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRD
aGFuZ2VzKCk7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewpAQCAtMzQ0Myw2ICszNDc1
LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25TdGF0
ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAorICAgIG1fcHJvY2Vzcy0+ZGlkQ29tbWl0
UHJvdmlzaW9uYWxMb2FkKCk7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKGZyYW1lLT5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1faGFzUmVjZWl2ZWRMYXllclRyZWVUcmFuc2FjdGlv
bkFmdGVyRGlkQ29tbWl0TG9hZCA9IGZhbHNlOwpAQCAtMzc5MSw3ICszODI1LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9v
bCB2YWx1ZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0g
ICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgLSBUYXJnZXQgdXJsICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBV
UkwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTM4MDYsMTUgKzM4NDAsMTkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVy
bCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChvcmlnaW5hbFJlcXVlc3QudXJsKCkpOwogICAg
IAotICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCB7IDAgfTsKLSAgICBSZWY8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkobGlzdGVuZXJJRCwgUG9saWN5TGlzdGVuZXJUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uKTsK
ICAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbWFr
ZVJlZihtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpKSA6IG1fbmF2
aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpKTsKIAotICAgIG5ld05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRp
b25JRCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKSA9
PSBvcmlnaW5hbFJlcXVlc3QudXJsKCkpOworCisgICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CiAgICAgbmF2aWdhdGlvbi0+c2V0V2FzVXNl
ckluaXRpYXRlZCghIW5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlm
aWVyKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRTaG91bGRGb3JjZURvd25sb2FkKCFuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZS5pc051bGwoKSk7CisgICAgbmF2aWdhdGlvbi0+
c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtX3Byb2Nlc3MtPmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVz
dElzUmVkaXJlY3QobmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRpcmVjdCk7CiAgICAgbmF2aWdh
dGlvbi0+c2V0SXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKG5hdmlnYXRpb25BY3Rp
b25EYXRhLmlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbik7CiAgICAgbmF2aWdhdGlv
bi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rpb25EYXRhLm9wZW5lcik7CisKKyAgICBSZWY8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyUHJveHkobGlzdGVuZXJJRCwgUG9saWN5TGlzdGVuZXJUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uKTsKICAgICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbihXVEZNb3ZlKG5hdmlnYXRpb24pKTsK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTU4MDMsOSArNTg0MSwxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24gdGVybWluYQogICAgIG1fdG91Y2hFdmVudFF1ZXVlLmNsZWFyKCk7CiAj
ZW5kaWYKIAotICAgIFBhZ2VMb2FkU3RhdGU6OlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uID0gbV9w
YWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7Ci0gICAgbV9wYWdlTG9hZFN0YXRlLnJlc2V0KHRy
YW5zYWN0aW9uKTsKKyAgICBpZiAodGVybWluYXRpb25SZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkgeworICAgICAgICBQYWdlTG9hZFN0YXRlOjpUcmFu
c2FjdGlvbiB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAg
ICAgICBtX3BhZ2VMb2FkU3RhdGUucmVzZXQodHJhbnNhY3Rpb24pOworICAgIH0KIAorICAgIC8v
IEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMzg2NzY2MDQ+IEluIGNhc2Ugb2YgcHJvY2VzcyBzd2Fw
cywgdGhlIG9sZCBwcm9jZXNzIHNob3VsZCBncmFjZWZ1bGx5IHN1c3BlbmQgaW5zdGVhZCBvZiB0
ZXJtaW5hdGluZy4KICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NUZXJtaW5hdGVkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTZhZTkyYmJkMGIuLmIxNDEz
YjY1NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTMzOSw3
ICsxMzM5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQpOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdl
YkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgY29uc3Qg
VXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlVSTCYmKTsKQEAgLTE3NzcsNiArMTc3Nyw4IEBAIHByaXZhdGU6CiAgICAgUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKIAogICAgIFJlZlB0cjxXZWJG
cmFtZVByb3h5PiBtX21haW5GcmFtZTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fbWFpbkZyYW1l
U2V0SGFuZGxlcjsKKwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZvY3VzZWRGcmFtZTsK
ICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mcmFtZVNldExhcmdlc3RGcmFtZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDBjMzkwODM5ZmRjLi5hOTJjZDM3NWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTE2LDcgKzExNiw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIEZyYW1lIGxvYWQgbWVzc2FnZXMKICAgICBEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlVVJM
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
KyAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgdXJsLCBk
b3VibGUgZGVsYXkpCiAgICAgRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwgdXJsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGM4YmVkMDAyZDY2Li40
MDE2OGFkNDlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMTk4NSw2ICsxOTg1LDkgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bv
b2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY28KICAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBwYWdlLnByb2Nlc3MoKTsKIAorICAgIGlmICghcGFnZS5wcm9jZXNzKCkuaGFzQ29tbWl0
dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKQorICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7
CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgcHJvY2VzcyBzd2FwIHdoZW4gYSB3
aW5kb3cgaGFzIGFuIG9wZW5lci4KICAgICBpZiAobmF2aWdhdGlvbi5vcGVuZXIoKSkKICAgICAg
ICAgcmV0dXJuIHBhZ2UucHJvY2VzcygpOwpAQCAtMTk5NCw5ICsxOTk3LDkgQEAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY28KICAgICAgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFnZS53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0KIAotICAgIGF1dG8gdGFyZ2V0VVJMID0gbmF2aWdh
dGlvbi5yZXF1ZXN0KCkudXJsKCk7CisgICAgYXV0byB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB1cmwgPSBVUkwgeyBQYXJzZWRVUkxTdHJp
bmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8IHVybC5pc0JsYW5rVVJMKCkgfHwgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwg
dGFyZ2V0VVJMKSkKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCB1
cmwuaXNCbGFua1VSTCgpIHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIHRhcmdl
dFVSTCkpCiAgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKIAogICAgIGFjdGlvbiA9IFBv
bGljeUFjdGlvbjo6U3VzcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCmluZGV4IDg1ODM4YWE2YTY1Li5mODI0Zjg1MzYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIERvd25sb2FkQ2xp
ZW50OwogY2xhc3MgSFRUUENvb2tpZVN0b3JlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7
CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKK2NsYXNzIE5hdmlnYXRpb247CiBj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCAzYmFkMmVlZTRhMi4uODBhYjhhNmI1OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMDUsNiArMjA1LDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwogCisg
ICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbExvYWQoKSB7IG1faGFzQ29tbWl0dGVkQW55UHJv
dmlzaW9uYWxMb2FkcyA9IHRydWU7IH0KKyAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zpc2lv
bmFsTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9h
ZHM7IH0KKwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgp
OwogICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKQEAgLTMyOSw2ICszMzIsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyPiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0czsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKCk+PiBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxl
dGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4+IG1f
bG9jYWxQb3J0QWN0aXZpdHlDb21wbGV0aW9uSGFuZGxlcnM7CisKKyAgICBib29sIG1faGFzQ29t
bWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGNjMTZlMDFkZGNi
Li5mY2JkZDc1N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCkBAIC0zMDYsMTEgKzMwNywxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2Vi
RG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsK
IAorICAgIExPRyhMb2FkaW5nLCAiV2ViUHJvY2VzcyAlaSAtIGRpc3BhdGNoRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkIHRvIHJlcXVlc3QgdXJsICVzIiwgZ2V0cGlk
KCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAg
Ly8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBk
b2N1bWVudExvYWRlci51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50
TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXF1ZXN0KCksIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkKQEAgLTgxOCw2ICs4MjEsOCBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgTmF2aWdhdAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTE9HKExvYWRp
bmcsICJXZWJQcm9jZXNzICVpIC0gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uIHRvIHJlcXVlc3QgdXJsICVzIiwgZ2V0cGlkKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisKICAgICBtX2lzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24gPSB0cnVlOwogICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICB3ZWJQ
YWdlLT5kaWRTdGFydE5hdmlnYXRpb25Qb2xpY3lDaGVjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEyMjVkOTc0MmFlLi40ODQyZWE2OWQ3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE4LTAzLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBQcm9jZXNzIHN3YXBwaW5nIG9uIG5hdmlnYXRpb24gbmVlZHMgdG8gaGFu
ZGxlIHNlcnZlciByZWRpcmVjdHMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY5MDQ2NT4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxNDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAg
ICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0p
OgorICAgICAgICAoLVtQU09OTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1BTT05O
YXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgYWRkUmVkaXJlY3RG
cm9tVVJMU3RyaW5nOnRvVVJMU3RyaW5nOl0pOgorICAgICAgICAoLVtQU09OU2NoZW1lIHdlYlZp
ZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorCiAyMDE4LTAzLTMwICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENvcHlpbmcgYSBsaXN0IGZyb20gTWljcm9zb2Z0
IFdvcmQgdG8gVGlueU1DRSBmYWlscyB3aGVuIG1zby1saXN0IGlzIHRoZSBmaXJzdCBwcm9wZXJ0
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggMTczNGM3OTU3MTcuLjcxYThh
YzNhNmE1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTI4LDYgKzI4LDcg
QEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS05h
dmlnYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KQEAgLTQ0LDYgKzQ1LDcgQEAKICNpbXBvcnQgPFdl
YktpdC9fV0tXZWJzaXRlUG9saWNpZXMuaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9y
dCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CkBAIC01Nyw2ICs1OSw4IEBAIHN0YXRpYyBpbnQgbnVtYmVyT2ZEZWNpZGVQ
b2xpY3lDYWxsczsKIAogc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcmVjZWl2ZWRN
ZXNzYWdlcyA9IGFkb3B0TlMoW0BbXSBtdXRhYmxlQ29weV0pOwogc3RhdGljIGJvb2wgcmVjZWl2
ZWRNZXNzYWdlOworc3RhdGljIGJvb2wgc2VydmVyUmVkaXJlY3RlZDsKK3N0YXRpYyBIYXNoU2V0
PHBpZF90PiBzZWVuUElEczsKIEBpbnRlcmZhY2UgUFNPTk1lc3NhZ2VIYW5kbGVyIDogTlNPYmpl
Y3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5kCiAKQEAgLTc1LDE1ICs3OSwyMyBAQCBz
dGF0aWMgYm9vbCByZWNlaXZlZE1lc3NhZ2U7CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9u
CiB7CisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwog
ICAgIGRvbmUgPSB0cnVlOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICop
bmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgKytudW1iZXJPZkRlY2lkZVBvbGlj
eUNhbGxzOworICAgIHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJd
KTsKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOwog
fQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCit7CisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0p
OworICAgIHNlcnZlclJlZGlyZWN0ZWQgPSB0cnVlOworfQorCiBAZW5kCiAKIHN0YXRpYyBSZXRh
aW5QdHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKQEAgLTExNyw4ICsxMjksMTAgQEAgc3Rh
dGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogCiBAaW50ZXJmYWNlIFBT
T05TY2hlbWUgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CiAgICAgY29uc3QgY2hh
ciogX2J5dGVzOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IF9yZWRpcmVjdHM7CiB9CiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXM7CistICh2b2lk
KWFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VVUkxTdHJpbmcgdG9V
UkxTdHJpbmc6KE5TU3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmc7CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBQU09OU2NoZW1lCkBAIC0xMzAsOSArMTQ0LDI1IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAo
dm9pZClhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopc291cmNlVVJMU3RyaW5n
IHRvVVJMU3RyaW5nOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uVVJMU3RyaW5nCit7CisgICAgX3Jl
ZGlyZWN0cy5zZXQoc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZyk7Cit9CisK
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6
KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKIHsKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25z
ZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOjEgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICBOU1VSTCAqZmluYWxVUkwgPSB0YXNr
LnJlcXVlc3QuVVJMOworICAgIGF1dG8gdGFyZ2V0ID0gX3JlZGlyZWN0cy5nZXQodGFzay5yZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgaWYgKCF0YXJnZXQuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm5pbCBleHBlY3RlZENv
bnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworCisgICAgICAgIGZpbmFsVVJM
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdGFyZ2V0XTsKKyAgICAgICAgYXV0
byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6Zmlu
YWxVUkxdKTsKKworICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2Rp
ZFBlcmZvcm1SZWRpcmVjdGlvbjpyZWRpcmVjdFJlc3BvbnNlLmdldCgpIG5ld1JlcXVlc3Q6cmVx
dWVzdC5nZXQoKV07CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOmZpbmFsVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0pOwogICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQo
KV07CiAKICAgICBpZiAoX2J5dGVzKSB7CkBAIC00NDQsNCArNDc0LDEzNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBTYW1lT3JpZ2luV2luZG93T3Blbk5vT3BlbmVyKQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQogCitURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdEZyb21OZXdXZWJWaWV3
KQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29s
OnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFuZGxlciA9
IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW2hhbmRsZXIgYWRkUmVk
aXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjEuaHRtbCIgdG9VUkxTdHJpbmc6
QCJwc29ucmVkaXJlY3RlZDovL2hvc3QvbWFpbjEuaHRtbCJdOworICAgIFt3ZWJWaWV3Q29uZmln
dXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAi
cHNvbiJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndl
YlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJwc29uOi8vaG9zdC9tYWluMS5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2ZXJSZWRpcmVj
dGVkKTsKKyAgICBzZXJ2ZXJSZWRpcmVjdGVkID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQo
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChb
d2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIEVYUEVDVF9GQUxTRShzZXJ2
ZXJSZWRpcmVjdGVkKTsKKyAgICBFWFBFQ1RfRVEoMiwgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxs
cyk7CisgICAgRVhQRUNUX0VRKDF1LCBzZWVuUElEcy5zaXplKCkpOworfQorCitURVNUKFByb2Nl
c3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdCkKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWluUHRy
PFBTT05TY2hlbWU+IGhhbmRsZXIxID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRd
KTsKKyAgICBbaGFuZGxlcjEgYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL2hvc3Qv
bWFpbjEuaHRtbCIgdG9VUkxTdHJpbmc6QCJwc29ucmVkaXJlY3RlZDovL2hvc3QvbWFpbjEuaHRt
bCJdOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRs
ZXIxLmdldCgpIGZvclVSTFNjaGVtZTpAInBzb24iXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVt
ZT4gaGFuZGxlcjIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIyLmdldCgpIGZv
clVSTFNjaGVtZTpAIm9yaWdpbmFsbG9hZCJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJvcmlnaW5hbGxvYWQ6Ly9ob3N0L21haW4xLmh0bWwi
XV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlk
QWZ0ZXJGaXJzdExvYWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAg
RVhQRUNUX0VRKDEsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworICAgIEVYUEVDVF9FUSgx
dSwgc2VlblBJRHMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSgqc2VlblBJRHMuYmVnaW4oKSA9
PSBwaWRBZnRlckZpcnN0TG9hZCk7CisKKyAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwi
XV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnNlcnZlclJlZGlyZWN0ZWQpOworICAgIHNlcnZlclJlZGlyZWN0ZWQg
PSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9
IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmll
cl0pOworCisgICAgRVhQRUNUX0ZBTFNFKHNlcnZlclJlZGlyZWN0ZWQpOworICAgIEVYUEVDVF9F
USgzLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBFQ1RfRVEoMnUsIHNlZW5Q
SURzLnNpemUoKSk7Cit9CisKK1RFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0MikKK3sK
KyAgICAvLyBUaGlzIHRlc3RzIGEgbG9hZCB0aGF0ICpzdGFydHMgb3V0KiB0byB0aGUgc2FtZSBv
cmlnaW4gYXMgdGhlIHByZXZpb3VzIGxvYWQsIGJ1dCB0aGVuIHJlZGlyZWN0cyB0byBhIG5ldyBv
cmlnaW4uCisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bv
b2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5kbGVy
MSA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW2hhbmRsZXIxIGFk
ZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly9ob3N0L21haW4yLmh0bWwiIHRvVVJMU3Ry
aW5nOkAicHNvbnJlZGlyZWN0ZWQ6Ly9ob3N0L21haW4xLmh0bWwiXTsKKyAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyMS5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJwc29uIl07CisgICAgUmV0YWluUHRyPFBTT05TY2hlbWU+IGhhbmRsZXIyID0gYWRvcHRO
UyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyMi5nZXQoKSBmb3JVUkxTY2hlbWU6QCJwc29ucmVk
aXJlY3RlZCJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMS5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIHBpZEFmdGVyRmlyc3RMb2FkID0gW3dlYlZpZXcg
X3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJSZWRpcmVj
dGVkKTsKKyAgICBFWFBFQ1RfRVEoMSwgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7CisgICAg
RVhQRUNUX0VRKDF1LCBzZWVuUElEcy5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKCpzZWVuUElE
cy5iZWdpbigpID09IHBpZEFmdGVyRmlyc3RMb2FkKTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3Qv
bWFpbjIuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2VydmVyUmVkaXJlY3RlZCk7CisgICAgc2VydmVy
UmVkaXJlY3RlZCA9IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl0pOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBkb25lID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uoc2VydmVyUmVkaXJlY3RlZCk7Cisg
ICAgRVhQRUNUX0VRKDMsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworICAgIEVYUEVDVF9F
USgydSwgc2VlblBJRHMuc2l6ZSgpKTsKK30KKworCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336997</attachid>
            <date>2018-04-02 10:35:41 -0700</date>
            <delta_ts>2018-04-02 11:05:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184142-20180402103541.patch</filename>
            <type>text/plain</type>
            <size>37852</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTlkN2JjZTY0ZDBhODI0
ZmNjMjAyMTYwOTU0YTZmZmFmYzI5MmEuLjczMTZmZjM1NTJkYzY1ODk3ZTRiOGM5NzBlNzQwZTY0
YWY5MzhlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDQtMDIgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb2Nlc3Mgc3dhcHBpbmcgb24g
bmF2aWdhdGlvbiBuZWVkcyB0byBoYW5kbGUgc2VydmVyIHJlZGlyZWN0cy4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM4NjkwNDY1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgVGhlIHNhbWUgcnVsZXMgd2UgYXBwbHkgdG8gcHJvY2VzcyBzd2FwcGluZyBm
b3IgYmFzaWMgbmF2aWdhdGlvbnMgbmVlZCB0byBhcHBseQorICAgICAgICB0byBzZXJ2ZXIgcmVk
aXJlY3RzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlcmUncyB0aHJlZSBpbnRlcmVzdGluZyBjYXNl
cyB3ZSBuZWVkIHRvIHN1cHBvcnQgdGhhdCBhcmUgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzOgor
ICAgICAgICAxIC0gVGhlIGluaXRpYWwgbG9hZCBpbiBhIFdLV2ViVmlldyByZWRpcmVjdHMgY3Jv
c3Mtb3JpZ2luLgorICAgICAgICAyIC0gQSBXS1dlYlZpZXcgaXMgc2hvd2luZyBjb250ZW50IGZy
b20gYS5jb20sIHdlIHN0YXJ0IGEgbG9hZCB0byBiLmNvbSwgYW5kIHRoYXQgcmVkaXJlY3RzIHRv
IGMuY29tCisgICAgICAgIDMgLSBBIFdLV2ViVmlldyBpcyBzaG93aW5nIGNvbnRlbnQgZnJvbSBh
LmNvbSwgd2Ugc3RhcnQgYSBsb2FkIHRvIGEuY29tLCB0aGF0IHRoYXQgcmVkaXJlY3RzIHRvIGIu
Y29tLgorCisgICAgICAgIFN1cHBvcnRpbmcgYWxsIDMgb2YgdGhlc2UgYnJvdWdodCB0aGVpciBv
d24gbGl0dGxlIGNoYWxsZW5nZXMuCisKKyAgICAgICAgQnkgdGVhY2hpbmcgTmF2aWdhdGlvbiBv
YmplY3RzIG1vcmUgYWJvdXQgcmVkaXJlY3RzIEkgd2FzIGFibGUgdG8gc3VwcG9ydCBhbGwgMyBj
YXNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb246Ok5hdmlnYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0
aW9uOjpzZXRDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bG9nZ2luZ1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmxvZ2dpbmdVUkwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpvcmlnaW5hbFJlcXVlc3QgY29uc3QpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uOjpjdXJyZW50UmVxdWVzdCBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb246OmN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpzZXRDdXJyZW50UmVxdWVzdElzUmVkaXJlY3QpOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpjdXJyZW50UmVxdWVzdElzUmVkaXJlY3QgY29uc3QpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpyZXF1ZXN0IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmln
YXRpb24gX3JlcXVlc3RdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2Vzcyk6IElmIHRoaXMgY29udGludWVkIG5hdmlnYXRpb24gaXMgY3VycmVudGx5IGluIGEg
c2VydmVyCisgICAgICAgICAgcmVkaXJlY3QsIHNhdmUgb2ZmIGEgbGFtYmRhIHRvIHN5bnRoZXNp
emUgYSAiZGlkIHJlY2VpdmUgc2VydmVyIHJlZGlyZWN0IiBjYWxsYmFjayBvbmNlIHRoZSBuZXcg
V2ViUHJvY2VzcyBpcyBydW5uaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IFBvc3NpYmx5IGlnbm9yZSB0aGlzIG5vdGlmaWNh
dGlvbiBpZiBpdCBpcyByZWFsbHkgYQorICAgICAgICAgIGNyb3NzLW9yaWdpbiByZWRpcmVjdCB0
aGF0IGlzIGp1c3Qgc3RhcnRpbmcgYmFjayB1cCBpbiBhIG5ldyBXZWJQcm9jZXNzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOiBEbyBub3QgY2xlYXIgcGFnZUxvYWRT
dGF0ZSBpZiB0aGUgcHJvY2VzcyBpcyBleGl0dGluZyBmb3IKKyAgICAgICAgICBhIG5hdmlnYXRp
b24gc3dhcCwgYXMgd2Ugd2lsbCBuZWVkIHRvIHBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYgd2hl
biB0aGUgbG9hZCBjb250aW51ZXMgaW4gYSBuZXcgV2ViUHJvY2Vzcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbik6IElm
IGEgcHJvY2VzcyBoYXMgbmV2ZXIgY29tbWl0dGVkIGFueSBwcm92aXNpb25hbCBsb2FkLCBpdCBj
YW4gYWx3YXlzCisgICAgICAgICAgYmUgdXNlZCB0byBjb250aW51ZSBhIG5hdmlnYXRpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIGNvbnN0KToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KwogMjAxOC0wNC0wMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gRHJhZ0FuZERyb3BIYW5kbGVyLmNwcCBzaG91bGQgaW5jbHVkZSBH
VW5pcXVlUHRyR3RrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcAppbmRleCBiZWEzMzNlOWY0NGJjMWRhOWQ4MmE5NGIxNTEzOGY1MWUyNmYxZjM5Li5i
OTU3NTNjNjc1MGRmMTlmMjcwOWViMmNmODlhZjRmOTNjODUyYWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC00MSwxMyArNDEsMTYgQEAg
TmF2aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlKQogCiBOYXZp
Z2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5nZW5l
cmF0ZU5hdmlnYXRpb25JRCgpKQotICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCisg
ICAgLCBtX29yaWdpbmFsUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9jdXJyZW50
UmVxdWVzdChtX29yaWdpbmFsUmVxdWVzdCkKIHsKLSAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5k
KG1fcmVxdWVzdC51cmwoKSk7CisgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChtX29yaWdpbmFs
UmVxdWVzdC51cmwoKSk7CiB9CiAKIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlv
blN0YXRlJiBzdGF0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlw
ZSBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5n
ZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQorICAgICwgbV9vcmlnaW5hbFJlcXVlc3QoaXRlbS51cmwo
KSkKKyAgICAsIG1fY3VycmVudFJlcXVlc3QobV9vcmlnaW5hbFJlcXVlc3QpCiAgICAgLCBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW0oJml0ZW0pCiAgICAgLCBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlw
ZShiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCiB7CkBAIC01NywxNiArNjAsMjIgQEAgTmF2aWdh
dGlvbjo6fk5hdmlnYXRpb24oKQogewogfQogCi12b2lkIE5hdmlnYXRpb246OmFwcGVuZFJlZGly
ZWN0aW9uVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBOYXZpZ2F0aW9uOjpzZXRD
dXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNz
SWRlbnRpZmllcjsKK30KKwordm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBt
X3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFw
cGVuZCh1cmwpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotV1RGOjpTdHJpbmcgTmF2aWdhdGlv
bjo6bG9nZ2luZ1VSTCgpIGNvbnN0CitXVEY6OlN0cmluZyBOYXZpZ2F0aW9uOjpsb2dnaW5nU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtID8gbV9iYWNr
Rm9yd2FyZExpc3RJdGVtLT51cmwoKSA6IG1fcmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKKyAgICBy
ZXR1cm4gbWFrZVN0cmluZygiTW9zdCByZWNlbnQgVVJMOiAiLCBtX2N1cnJlbnRSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCAiIEJhY2svZm9yd2FyZCBsaXN0IGl0ZW0gVVJMOiAnIiwgbV9iYWNrRm9y
d2FyZExpc3RJdGVtID8gbV9iYWNrRm9yd2FyZExpc3RJdGVtLT51cmwoKSA6IFN0cmluZyB7IH0s
IFN0cmluZzo6Zm9ybWF0KCInICglcCkiLCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCkpKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24u
aAppbmRleCAwN2M0OGVlNDc4MTI5YTZhYjQ3ZjRkYWM5Njc0YWM3M2M4OWNlMThiLi45NDdmYjNj
ZmRlNjMyYmI0N2ExOGQyZDJjZDAzZDAyNDE3MjliMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKQEAgLTYyLDcgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9CiAKLSAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7
IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1ZXN0OyB9CisgICAgdm9pZCBzZXRDdXJyZW50
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0OyB9CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsg
fQorCisgICAgdm9pZCBzZXRDdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoYm9vbCBpc1JlZGlyZWN0
KSB7IG1faXNSZWRpcmVjdCA9IGlzUmVkaXJlY3Q7IH0KKyAgICBib29sIGN1cnJlbnRSZXF1ZXN0
SXNSZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWRpcmVjdDsgfQorCiAgICAgV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBiYWNrRm9yd2FyZExpc3RJdGVtKCkgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsgfQogCkBAIC04Miw3ICs5MCw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
PiYgb3BlbmVyKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuZXI7IH0KIAogI2lmICFMT0dfRElTQUJM
RUQKLSAgICBXVEY6OlN0cmluZyBsb2dnaW5nVVJMKCkgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcg
bG9nZ2luZ1N0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC05MSwxMCArOTks
MTMgQEAgcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRl
JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6RnJhbWVMb2FkVHlw
ZSk7CiAKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKLSAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBtX2N1cnJl
bnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gbV9y
ZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9zaG91bGRGb3JjZURvd25sb2FkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSZWRp
cmVjdCB7IGZhbHNlIH07CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUxvYWRUeXBlPiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCmluZGV4IGVkNjY2MzI3
YjllMDc3MTJlNzRlNzBlMzI3Y2NkMDY1YTM5MjQ3YWIuLjQyZmI4NTg1NmViZGE3MzVmODYyNjFj
NWViOWEwZmFjMjI1ODEzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbi5tbQpAQCAtNDMsNyArNDMsNyBAQCAtICh2b2lkKWRlYWxsb2MK
IAogLSAoTlNVUkxSZXF1ZXN0ICopX3JlcXVlc3QKIHsKLSAgICByZXR1cm4gX25hdmlnYXRpb24t
PnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7Cisg
ICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMWJjNTM3YjQ4NjhmNjIxYTgxNjBmNTkwNWQ4ZTgxMWEzODJkZWIxNC4uYjk0
YzU0ZTUxMjBhMGVlM2M0YzQ0NjRhYTU1NzcyNWVmZGI3Y2UwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMzUyLDggKzIzNTIsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJG
cmFtZVByb3h5JiBmcgogCiAgICAgICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpVc2Ug
JiYgbmF2aWdhdGlvbikgewogICAgICAgICAgICAgYXV0byBwcm9wb3NlZFByb2Nlc3MgPSBwcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRp
b24sIGFjdGlvbik7CisKICAgICAgICAgICAgIGlmIChwcm9wb3NlZFByb2Nlc3MucHRyKCkgIT0g
JnByb2Nlc3MoKSkgewotICAgICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiU3dpdGNoaW5nIHRv
IG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiIHRvIHVybCAnJXMnIChXZWJC
YWNrRm9yd2FyZExpc3RJdGVtICVwKSIsIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZp
Z2F0aW9uLT5sb2dnaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgbmF2aWdhdGlvbi0+YmFja0Zvcndh
cmRMaXN0SXRlbSgpKTsKKyAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3aXRjaGluZyBm
cm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIg
JyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBu
YXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFBy
b2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgp
LCBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcykpOwpAQCAtMjM2Nyw4ICsyMzY4LDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
V2ViRnJhbWVQcm94eSYgZnIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcykKIHsKLSAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdh
dGlvbiAlIiBQUkl1NjQgIiB0byBVUkwgJXMgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0
aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdVUkwoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAn
JXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBBU1NFUlQobV9w
cm9jZXNzLnB0cigpICE9IHByb2Nlc3MucHRyKCkpOwogICAgIGF0dGFjaFRvUHJvY2Vzc0Zvck5h
dmlnYXRpb24oV1RGTW92ZShwcm9jZXNzKSk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmln
YXRpb24uYmFja0ZvcndhcmRMaXN0SXRlbSgpKSB7CkBAIC0yMzg0LDcgKzIzODYsMjAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFIKICAgICB9CiAKICAgICAvLyBGSVhNRTogV29yayBvdXQgdGlt
aW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwotICAg
IGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24obmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsg
bmF2aWdhdGlvbi5yZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIE5hdmlnYXRpb25Qb2xp
Y3lDaGVjazo6QnlwYXNzKTsKKyAgICBBU1NFUlQoIW5hdmlnYXRpb24uY3VycmVudFJlcXVlc3Qo
KS5pc0VtcHR5KCkpOworICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24obmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVz
LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OkJ5cGFzcyk7CisKKyAgICAvLyBOb3Jt
YWxseSwgbm90aWZpY2F0aW9uIG9mIGEgc2VydmVyIHJlZGlyZWN0IGNvbWVzIGZyb20gdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAvLyBJZiB3ZSBhcmUgcHJvY2VzcyBzd2FwcGluZyBpbiBy
ZXNwb25zZSB0byBhIHNlcnZlciByZWRpcmVjdCB0aGVuIHRoYXQgbm90aWZpY2F0aW9uIHdpbGwg
bm90IGNvbWUgZnJvbSB0aGUgbmV3IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAvLyBJbiB0aGlz
IGNhc2Ugd2UgaGF2ZSB0aGUgVUlQcm9jZXNzIHN5bnRoZXNpemUgdGhlIHJlZGlyZWN0IG5vdGlm
aWNhdGlvbiBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKyAgICBpZiAobmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdElzUmVkaXJlY3QoKSkgeworICAgICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsK
KyAgICAgICAgbV9tYWluRnJhbWVDcmVhdGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgcmVx
dWVzdCA9ICBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBBU1NFUlQobV9tYWluRnJhbWUpOworICAgICAgICAgICAgbV9tYWluRnJhbWUtPmZyYW1l
TG9hZFN0YXRlKCkuZGlkU3RhcnRQcm92aXNpb25hbExvYWQocmVxdWVzdC51cmwoKSk7CisgICAg
ICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgV1RG
TW92ZShyZXF1ZXN0KSwgeyB9KTsKKyAgICAgICAgfTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQpAQCAtMzE5Myw2ICszMjA4
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCiAg
ICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgbV9tYWluRnJhbWUuZ2V0KCkpOwor
CisgICAgaWYgKG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVyKSB7CisgICAgICAgIG1fbWFpbkZy
YW1lQ3JlYXRpb25IYW5kbGVyKCk7CisgICAgICAgIG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVy
ID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJm
cmFtZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzI2OSwxMCArMzI4OSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIAotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNh
Y3Rpb24oKTsKLQotICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJM
KHRyYW5zYWN0aW9uKTsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdF
X0NIRUNLX1VSTCh1cmwpOwpAQCAtMzI4Miw2ICszMjk4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAg
ICAgICAgbmF2aWdhdGlvbiA9ICZuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCk7CiAKKyAgICAvLyBJZiB0aGlzIHNlZW1pbmdseSBuZXcgbG9hZCBpcyBhY3R1YWxseSBj
b250aW51aW5nIGEgc2VydmVyIHJlZGlyZWN0IGZvciBhIHByZXZpb3VzIG5hdmlnYXRpb24gaW4g
YSBuZXcgcHJvY2VzcywKKyAgICAvLyB0aGVuIHdlIGlnbm9yZSB0aGlzIG5vdGlmaWNhdGlvbi4K
KyAgICBpZiAobmF2aWdhdGlvbiAmJiBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdElzUmVkaXJl
Y3QoKSkgeworICAgICAgICBhdXRvIG5hdmlnYXRpb25Qcm9jZXNzSWRlbnRpZmllciA9IG5hdmln
YXRpb24tPmN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKG5h
dmlnYXRpb25Qcm9jZXNzSWRlbnRpZmllciAmJiAqbmF2aWdhdGlvblByb2Nlc3NJZGVudGlmaWVy
ICE9IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklE
ICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKKworICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElS
ZXF1ZXN0VVJMKHRyYW5zYWN0aW9uKTsKKwogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBpZiAobV9wYWdlTG9hZFN0YXJ0KQogICAgICAgICAgICAgcmVwb3J0UGFnZUxv
YWRSZXN1bHQoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlv
biB9KTsKQEAgLTMzMDIsMjcgKzMzMzIsMjkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAg
ICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRo
aXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBm
cmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZy
YW1lSUQsIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAK
ICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsK
KyAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKIAogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJl
LCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRo
ZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247CiAg
ICAgaWYgKG5hdmlnYXRpb25JRCkgewogICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25T
dGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKLSAgICAgICAgbmF2aWdhdGlvbi0+YXBw
ZW5kUmVkaXJlY3Rpb25VUkwodXJsKTsKKyAgICAgICAgbmF2aWdhdGlvbi0+YXBwZW5kUmVkaXJl
Y3Rpb25VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgfQogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKHRyYW5zYWN0aW9uLCB1cmwpOworICAgICAgICBtX3BhZ2VMb2Fk
U3RhdGUuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHRyYW5zYWN0
aW9uLCByZXF1ZXN0LnVybCgpKTsKIAotICAgIGZyYW1lLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkpOwogCiAgICAgbV9wYWdlTG9h
ZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkBA
IC0zNDQzLDYgKzM0NzUsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIGlmIChmcmFt
ZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSAm
bmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCisgICAgbV9wcm9j
ZXNzLT5kaWRDb21taXRQcm92aXNpb25hbExvYWQoKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgbV9oYXNSZWNlaXZlZExheWVy
VHJlZVRyYW5zYWN0aW9uQWZ0ZXJEaWRDb21taXRMb2FkID0gZmFsc2U7CkBAIC0zNzkxLDcgKzM4
MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRf
dCBmcmFtZUlELCBib29sIHZhbHVlKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSAtIFRhcmdldCB1cmwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1
cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtMzgwNiwx
NSArMzg0MCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdpbmFsUmVxdWVz
dC51cmwoKSk7CiAgICAgCi0gICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklEIHsgMCB9OwotICAg
IFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklELCBQb2xpY3lMaXN0ZW5lclR5cGU6Ok5hdmln
YXRpb25BY3Rpb24pOwogICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZp
Z2F0aW9uSUQgPyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCkpIDogbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwogCi0gICAgbmV3TmF2aWdhdGlvbklEID0gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb24tPm9yaWdpbmFsUmVx
dWVzdCgpLnVybCgpID09IG9yaWdpbmFsUmVxdWVzdC51cmwoKSk7CisKKyAgICB1aW50NjRfdCBu
ZXdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKICAgICBuYXZpZ2F0
aW9uLT5zZXRXYXNVc2VySW5pdGlhdGVkKCEhbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1
cmVUb2tlbklkZW50aWZpZXIpOwogICAgIG5hdmlnYXRpb24tPnNldFNob3VsZEZvcmNlRG93bmxv
YWQoIW5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpKTsKKyAg
ICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCks
IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIG5hdmlnYXRpb24tPnNl
dEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGlyZWN0
KTsKICAgICBuYXZpZ2F0aW9uLT5zZXRJc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24o
bmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKTsK
ICAgICBuYXZpZ2F0aW9uLT5zZXRPcGVuZXIobmF2aWdhdGlvbkFjdGlvbkRhdGEub3BlbmVyKTsK
KworICAgIGF1dG8gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxp
c3RlbmVySUQsIFBvbGljeUxpc3RlbmVyVHlwZTo6TmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbGlz
dGVuZXItPnNldE5hdmlnYXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uKSk7CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCkBAIC01ODAzLDkgKzU4NDEsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHRlcm1pbmEKICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5jbGVhcigpOwogI2VuZGlmCiAKLSAgICBQ
YWdlTG9hZFN0YXRlOjpUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50
cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5yZXNldCh0cmFuc2FjdGlvbik7Cisg
ICAgaWYgKHRlcm1pbmF0aW9uUmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2
aWdhdGlvblN3YXApIHsKKyAgICAgICAgUGFnZUxvYWRTdGF0ZTo6VHJhbnNhY3Rpb24gdHJhbnNh
Y3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKKyAgICAgICAgbV9wYWdlTG9h
ZFN0YXRlLnJlc2V0KHRyYW5zYWN0aW9uKTsKKyAgICB9CiAKKyAgICAvLyBGSVhNRTogPHJkYXI6
Ly9wcm9ibGVtLzM4Njc2NjA0PiBJbiBjYXNlIG9mIHByb2Nlc3Mgc3dhcHMsIHRoZSBvbGQgcHJv
Y2VzcyBzaG91bGQgZ3JhY2VmdWxseSBzdXNwZW5kIGluc3RlYWQgb2YgdGVybWluYXRpbmcuCiAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzVGVybWluYXRlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE2YWU5MmJiZDBiZWI5NGFlMDdlZDM3MGUxYzMwOTZj
YWI3NmUwMmUuLmNjMGMwZjllYTA0MDc0NWI5MzE4NDEyZWM5NjFjNjdhNWJjYjcxZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzM5LDcgKzEzMzksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAK
ICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6VVJMJiYg
dW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmLCBjb25zdCBVc2VyRGF0YSYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwg
ZG91YmxlIGRlbGF5KTsKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJM
JiYpOwpAQCAtMTc3Nyw2ICsxNzc3LDggQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1f
bWFpbkZyYW1lOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9tYWluRnJhbWVDcmVhdGlvbkhhbmRs
ZXI7CisKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mb2N1c2VkRnJhbWU7CiAgICAgUmVm
UHRyPFdlYkZyYW1lUHJveHk+IG1fZnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwYzM5MDgz
OWZkY2FiYjk5YmFiNTEwZTc3ZmRiOWQ4NTdiMDA4NmViLi5hOTJjZDM3NWU3ZDA2YjJiOTVjYTcy
NDNmYWUyNzkxNDhhYzA0NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMTYsNyArMTE2LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKIAogICAgICMgRnJhbWUgbG9hZCBtZXNzYWdlcwogICAgIERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVVUkwsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBk
ZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYzhiZWQwMDJkNjY3YTllZDhlOGJj
NDFkYTFkZTMwYTkyNGNkNzU1OS4uNDAxNjhhZDQ5ZDYyNTQ4YTJlY2ZhOTQ2Njc5YTc0NmM3Nzdj
OTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
MTk4NSw2ICsxOTg1LDkgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY28KICAgICBpZiAoIW1fY29u
ZmlndXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBw
YWdlLnByb2Nlc3MoKTsKIAorICAgIGlmICghcGFnZS5wcm9jZXNzKCkuaGFzQ29tbWl0dGVkQW55
UHJvdmlzaW9uYWxMb2FkcygpKQorICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CisKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgcHJvY2VzcyBzd2FwIHdoZW4gYSB3aW5kb3cg
aGFzIGFuIG9wZW5lci4KICAgICBpZiAobmF2aWdhdGlvbi5vcGVuZXIoKSkKICAgICAgICAgcmV0
dXJuIHBhZ2UucHJvY2VzcygpOwpAQCAtMTk5NCw5ICsxOTk3LDkgQEAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnZSwgY28KICAgICAgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFnZS53ZWJzaXRl
RGF0YVN0b3JlKCkpOwogICAgIH0KIAotICAgIGF1dG8gdGFyZ2V0VVJMID0gbmF2aWdhdGlvbi5y
ZXF1ZXN0KCkudXJsKCk7CisgICAgYXV0byB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB1cmwgPSBVUkwgeyBQYXJzZWRVUkxTdHJpbmcsIHBh
Z2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVy
bC5pc0JsYW5rVVJMKCkgfHwgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgdGFyZ2V0
VVJMKSkKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCB1cmwuaXNC
bGFua1VSTCgpIHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIHRhcmdldFVSTCkp
CiAgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKIAogICAgIGFjdGlvbiA9IFBvbGljeUFj
dGlvbjo6U3VzcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmlu
ZGV4IDg1ODM4YWE2YTY1MzhkODRmMjU3NTliNWUyNjVkMWFkNjU5M2M1MTcuLmY4MjRmODUzNjNk
NDEyYTJkMTIxZTBiZGQyMzQ0NmIzNjE3MDJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBEb3dubG9hZENsaWVudDsK
IGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50OwogY2xh
c3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CitjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3Mg
UGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKaW5kZXggM2JhZDJlZWU0YTJiNWY4NmE1ZGU0OTM4ZDVjM2M1ZWVjYTNmZmU3OS4u
ODBhYjhhNmI1OTY1N2UyZjg3ZWU3MTc2MjhkMDAwNTY3MTUxOTc0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIwNSw2ICsyMDUsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7CiAKKyAgICB2
b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCgpIHsgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNp
b25hbExvYWRzID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxM
b2FkcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2Fkczsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCk7CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwpA
QCAtMzI5LDYgKzMzMiw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNoRGVsaXZlcnlDb21wbGV0aW9u
SGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPj4gbV9sb2Nh
bFBvcnRBY3Rpdml0eUNvbXBsZXRpb25IYW5kbGVyczsKKworICAgIGJvb2wgbV9oYXNDb21taXR0
ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggY2MxNmUwMWRkY2I3ZWVm
NzljOGM5ODY3MDFjN2E0ZjBjNmE0YWFmYy4uZmNiZGQ3NTdiMjFjNWYyNWNhMTllNTk5Yzk0Nzc0
NjgyNzA4N2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCkBAIC0zMDYsMTEgKzMwNywxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpCiAg
ICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9j
dW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAor
ICAgIExPRyhMb2FkaW5nLCAiV2ViUHJvY2VzcyAlaSAtIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkIHRvIHJlcXVlc3QgdXJsICVzIiwgZ2V0cGlkKCks
IGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8g
Tm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1
bWVudExvYWRlci51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9h
ZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXF1ZXN0KCksIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEu
Z2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkKQEAgLTgxOCw2ICs4MjEsOCBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTE9HKExvYWRpbmcs
ICJXZWJQcm9jZXNzICVpIC0gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
IHRvIHJlcXVlc3QgdXJsICVzIiwgZ2V0cGlkKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisKICAgICBtX2lzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24g
PSB0cnVlOwogICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICB3ZWJQYWdl
LT5kaWRTdGFydE5hdmlnYXRpb25Qb2xpY3lDaGVjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ4ZTNlMDg1ODY4YThmOGMyODYzNWVjMDA1
NmVjYjMzNTc5ZGUyZTUuLjY1ZGRkZmZmN2E3OWU4ZTU2YjQxNTUxNzFiNjk2MWE5ODllZWEzMWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOC0wNC0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9uIG5lZWRzIHRvIGhhbmRs
ZSBzZXJ2ZXIgcmVkaXJlY3RzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2OTA0NjU+IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAg
ICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0p
OgorICAgICAgICAoLVtQU09OTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1BTT05O
YXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgYWRkUmVkaXJlY3RG
cm9tVVJMU3RyaW5nOnRvVVJMU3RyaW5nOl0pOgorICAgICAgICAoLVtQU09OU2NoZW1lIHdlYlZp
ZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorCiAyMDE4LTA0LTAyICBBbGVqYW5kcm8gRy4gQ2Fz
dHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIHBvcnQgZGVw
ZW5kZW5jaWVzIGZpeCBhZnRlciByMjMwMTUyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0KaW5kZXggMTczNGM3OTU3MTdlNzJiMmIwZWI1OTdkZDJkN2RjZDgyN2FjMWI4NS4uNzFhOGFj
M2E2YTU1NDFmYjgwZDgxMWE4ZDVlYzJmMDQ4YzA2M2VmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CkBA
IC00NCw2ICs0NSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZVBvbGljaWVzLmg+CiAj
aW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3
dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNTcsNiArNTksOCBA
QCBzdGF0aWMgaW50IG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHM7CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHJlY2VpdmVkTWVzc2FnZXMgPSBhZG9wdE5TKFtAW10gbXV0YWJs
ZUNvcHldKTsKIHN0YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZTsKK3N0YXRpYyBib29sIHNlcnZl
clJlZGlyZWN0ZWQ7CitzdGF0aWMgSGFzaFNldDxwaWRfdD4gc2VlblBJRHM7CiBAaW50ZXJmYWNl
IFBTT05NZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgog
QGVuZAogCkBAIC03NSwxNSArNzksMjMgQEAgQGltcGxlbWVudGF0aW9uIFBTT05OYXZpZ2F0aW9u
RGVsZWdhdGUKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlz
aE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKKyAgICBzZWVuUElEcy5h
ZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiAgICAgZG9uZSA9IHRydWU7CiB9
CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lv
bkhhbmRsZXIKIHsKICAgICArK251bWJlck9mRGVjaWRlUG9saWN5Q2FsbHM7CisgICAgc2VlblBJ
RHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwogICAgIGRlY2lzaW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiB9CiAKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBzZWVuUElE
cy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgc2VydmVyUmVkaXJl
Y3RlZCA9IHRydWU7Cit9CisKIEBlbmQKIAogc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNy
ZWF0ZWRXZWJWaWV3OwpAQCAtMTE3LDggKzEyOSwxMCBAQCBAZW5kCiAKIEBpbnRlcmZhY2UgUFNP
TlNjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKICAgICBjb25zdCBjaGFy
KiBfYnl0ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX3JlZGlyZWN0czsKIH0KIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKKy0gKHZvaWQp
YWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VS
TFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZzsKIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFBTT05TY2hlbWUKQEAgLTEzMCw5ICsxNDQsMjUgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNoYXIqKWJ5dGVzCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
Ky0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0
cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZworeworICAg
IF9yZWRpcmVjdHMuc2V0KHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOwor
fQorCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVU
YXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCiB7Ci0gICAgUmV0YWluUHRyPE5TVVJMUmVz
cG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgTlNVUkwgKmZpbmFsVVJMID0g
dGFzay5yZXF1ZXN0LlVSTDsKKyAgICBhdXRvIHRhcmdldCA9IF9yZWRpcmVjdHMuZ2V0KHRhc2su
cmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgIGlmICghdGFyZ2V0LmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvIHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKworICAgICAgICBmaW5h
bFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXRhcmdldF07CisgICAgICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OmZpbmFsVVJMXSk7CisKKyAgICAgICAgWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0YXNr
IF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246cmVkaXJlY3RSZXNwb25zZS5nZXQoKSBuZXdSZXF1ZXN0
OnJlcXVlc3QuZ2V0KCldOworICAgIH0KKworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpmaW5h
bFVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2Uu
Z2V0KCldOwogCiAgICAgaWYgKF9ieXRlcykgewpAQCAtNDQ0LDQgKzQ3NCwxMzcgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgU2FtZU9yaWdpbldpbmRvd09wZW5Ob09wZW5lcikKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKIAorVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3RGcm9tTmV3V2Vi
VmlldykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNz
UG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWluUHRyPFBTT05TY2hlbWU+IGhhbmRs
ZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVyIGFk
ZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwiIHRvVVJMU3Ry
aW5nOkAicHNvbnJlZGlyZWN0ZWQ6Ly9ob3N0L21haW4xLmh0bWwiXTsKKyAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAInBzb24iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2VydmVyUmVk
aXJlY3RlZCk7CisgICAgc2VydmVyUmVkaXJlY3RlZCA9IGZhbHNlOworCisgICAgc2VlblBJRHMu
YWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5h
ZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uo
c2VydmVyUmVkaXJlY3RlZCk7CisgICAgRVhQRUNUX0VRKDIsIG51bWJlck9mRGVjaWRlUG9saWN5
Q2FsbHMpOworICAgIEVYUEVDVF9FUSgxdSwgc2VlblBJRHMuc2l6ZSgpKTsKK30KKworVEVTVChQ
cm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QpCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAgIFJldGFp
blB0cjxQU09OU2NoZW1lPiBoYW5kbGVyMSA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBp
bml0XSk7CisgICAgW2hhbmRsZXIxIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly9o
b3N0L21haW4xLmh0bWwiIHRvVVJMU3RyaW5nOkAicHNvbnJlZGlyZWN0ZWQ6Ly9ob3N0L21haW4x
Lmh0bWwiXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpo
YW5kbGVyMS5nZXQoKSBmb3JVUkxTY2hlbWU6QCJwc29uIl07CisgICAgUmV0YWluUHRyPFBTT05T
Y2hlbWU+IGhhbmRsZXIyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyMi5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJvcmlnaW5hbGxvYWQiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAib3JpZ2luYWxsb2FkOi8vaG9zdC9tYWluMS5o
dG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRv
IHBpZEFmdGVyRmlyc3RMb2FkID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKwor
ICAgIEVYUEVDVF9FUSgxLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoKnNlZW5QSURzLmJlZ2lu
KCkgPT0gcGlkQWZ0ZXJGaXJzdExvYWQpOworCisgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMS5o
dG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2ZXJSZWRpcmVjdGVkKTsKKyAgICBzZXJ2ZXJSZWRpcmVj
dGVkID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVu
dGlmaWVyXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdKTsKKworICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJSZWRpcmVjdGVkKTsKKyAgICBFWFBF
Q1RfRVEoMywgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7CisgICAgRVhQRUNUX0VRKDJ1LCBz
ZWVuUElEcy5zaXplKCkpOworfQorCitURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdDIp
Cit7CisgICAgLy8gVGhpcyB0ZXN0cyBhIGxvYWQgdGhhdCAqc3RhcnRzIG91dCogdG8gdGhlIHNh
bWUgb3JpZ2luIGFzIHRoZSBwcmV2aW91cyBsb2FkLCBidXQgdGhlbiByZWRpcmVjdHMgdG8gYSBu
ZXcgb3JpZ2luLgorICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7Cisg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nl
c3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFu
ZGxlcjEgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVy
MSBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMi5odG1sIiB0b1VS
TFN0cmluZzpAInBzb25yZWRpcmVjdGVkOi8vaG9zdC9tYWluMS5odG1sIl07CisgICAgW3dlYlZp
ZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAicHNvbiJdOworICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5kbGVyMiA9IGFk
b3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicHNv
bnJlZGlyZWN0ZWQiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlckZpcnN0TG9hZCA9IFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBFWFBFQ1RfRkFMU0Uoc2VydmVyUmVk
aXJlY3RlZCk7CisgICAgRVhQRUNUX0VRKDEsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOwor
ICAgIEVYUEVDVF9FUSgxdSwgc2VlblBJRHMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSgqc2Vl
blBJRHMuYmVnaW4oKSA9PSBwaWRBZnRlckZpcnN0TG9hZCk7CisKKyAgICByZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly9o
b3N0L21haW4yLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNlcnZlclJlZGlyZWN0ZWQpOworICAgIHNl
cnZlclJlZGlyZWN0ZWQgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgRVhQRUNUX0ZBTFNFKHNlcnZlclJlZGlyZWN0ZWQp
OworICAgIEVYUEVDVF9FUSgzLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBF
Q1RfRVEoMnUsIHNlZW5QSURzLnNpemUoKSk7Cit9CisKKwogI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337002</attachid>
            <date>2018-04-02 11:05:10 -0700</date>
            <delta_ts>2018-04-02 17:24:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184142-20180402110510.patch</filename>
            <type>text/plain</type>
            <size>37861</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTlkN2JjZTY0ZDBhODI0
ZmNjMjAyMTYwOTU0YTZmZmFmYzI5MmEuLjczMTZmZjM1NTJkYzY1ODk3ZTRiOGM5NzBlNzQwZTY0
YWY5MzhlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDQtMDIgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb2Nlc3Mgc3dhcHBpbmcgb24g
bmF2aWdhdGlvbiBuZWVkcyB0byBoYW5kbGUgc2VydmVyIHJlZGlyZWN0cy4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM4NjkwNDY1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgVGhlIHNhbWUgcnVsZXMgd2UgYXBwbHkgdG8gcHJvY2VzcyBzd2FwcGluZyBm
b3IgYmFzaWMgbmF2aWdhdGlvbnMgbmVlZCB0byBhcHBseQorICAgICAgICB0byBzZXJ2ZXIgcmVk
aXJlY3RzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlcmUncyB0aHJlZSBpbnRlcmVzdGluZyBjYXNl
cyB3ZSBuZWVkIHRvIHN1cHBvcnQgdGhhdCBhcmUgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzOgor
ICAgICAgICAxIC0gVGhlIGluaXRpYWwgbG9hZCBpbiBhIFdLV2ViVmlldyByZWRpcmVjdHMgY3Jv
c3Mtb3JpZ2luLgorICAgICAgICAyIC0gQSBXS1dlYlZpZXcgaXMgc2hvd2luZyBjb250ZW50IGZy
b20gYS5jb20sIHdlIHN0YXJ0IGEgbG9hZCB0byBiLmNvbSwgYW5kIHRoYXQgcmVkaXJlY3RzIHRv
IGMuY29tCisgICAgICAgIDMgLSBBIFdLV2ViVmlldyBpcyBzaG93aW5nIGNvbnRlbnQgZnJvbSBh
LmNvbSwgd2Ugc3RhcnQgYSBsb2FkIHRvIGEuY29tLCB0aGF0IHRoYXQgcmVkaXJlY3RzIHRvIGIu
Y29tLgorCisgICAgICAgIFN1cHBvcnRpbmcgYWxsIDMgb2YgdGhlc2UgYnJvdWdodCB0aGVpciBv
d24gbGl0dGxlIGNoYWxsZW5nZXMuCisKKyAgICAgICAgQnkgdGVhY2hpbmcgTmF2aWdhdGlvbiBv
YmplY3RzIG1vcmUgYWJvdXQgcmVkaXJlY3RzIEkgd2FzIGFibGUgdG8gc3VwcG9ydCBhbGwgMyBj
YXNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb246Ok5hdmlnYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0
aW9uOjpzZXRDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bG9nZ2luZ1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmxvZ2dpbmdVUkwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpvcmlnaW5hbFJlcXVlc3QgY29uc3QpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uOjpjdXJyZW50UmVxdWVzdCBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb246OmN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpzZXRDdXJyZW50UmVxdWVzdElzUmVkaXJlY3QpOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpjdXJyZW50UmVxdWVzdElzUmVkaXJlY3QgY29uc3QpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpyZXF1ZXN0IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmln
YXRpb24gX3JlcXVlc3RdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2Vzcyk6IElmIHRoaXMgY29udGludWVkIG5hdmlnYXRpb24gaXMgY3VycmVudGx5IGluIGEg
c2VydmVyCisgICAgICAgICAgcmVkaXJlY3QsIHNhdmUgb2ZmIGEgbGFtYmRhIHRvIHN5bnRoZXNp
emUgYSAiZGlkIHJlY2VpdmUgc2VydmVyIHJlZGlyZWN0IiBjYWxsYmFjayBvbmNlIHRoZSBuZXcg
V2ViUHJvY2VzcyBpcyBydW5uaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IFBvc3NpYmx5IGlnbm9yZSB0aGlzIG5vdGlmaWNh
dGlvbiBpZiBpdCBpcyByZWFsbHkgYQorICAgICAgICAgIGNyb3NzLW9yaWdpbiByZWRpcmVjdCB0
aGF0IGlzIGp1c3Qgc3RhcnRpbmcgYmFjayB1cCBpbiBhIG5ldyBXZWJQcm9jZXNzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOiBEbyBub3QgY2xlYXIgcGFnZUxvYWRT
dGF0ZSBpZiB0aGUgcHJvY2VzcyBpcyBleGl0dGluZyBmb3IKKyAgICAgICAgICBhIG5hdmlnYXRp
b24gc3dhcCwgYXMgd2Ugd2lsbCBuZWVkIHRvIHBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYgd2hl
biB0aGUgbG9hZCBjb250aW51ZXMgaW4gYSBuZXcgV2ViUHJvY2Vzcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbik6IElm
IGEgcHJvY2VzcyBoYXMgbmV2ZXIgY29tbWl0dGVkIGFueSBwcm92aXNpb25hbCBsb2FkLCBpdCBj
YW4gYWx3YXlzCisgICAgICAgICAgYmUgdXNlZCB0byBjb250aW51ZSBhIG5hdmlnYXRpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIGNvbnN0KToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KwogMjAxOC0wNC0wMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gRHJhZ0FuZERyb3BIYW5kbGVyLmNwcCBzaG91bGQgaW5jbHVkZSBH
VW5pcXVlUHRyR3RrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcAppbmRleCBiZWEzMzNlOWY0NGJjMWRhOWQ4MmE5NGIxNTEzOGY1MWUyNmYxZjM5Li5i
OTU3NTNjNjc1MGRmMTlmMjcwOWViMmNmODlhZjRmOTNjODUyYWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC00MSwxMyArNDEsMTYgQEAg
TmF2aWdhdGlvbjo6TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlKQogCiBOYXZp
Z2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5nZW5l
cmF0ZU5hdmlnYXRpb25JRCgpKQotICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCisg
ICAgLCBtX29yaWdpbmFsUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9jdXJyZW50
UmVxdWVzdChtX29yaWdpbmFsUmVxdWVzdCkKIHsKLSAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5k
KG1fcmVxdWVzdC51cmwoKSk7CisgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChtX29yaWdpbmFs
UmVxdWVzdC51cmwoKSk7CiB9CiAKIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlv
blN0YXRlJiBzdGF0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlw
ZSBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCiAgICAgOiBtX25hdmlnYXRpb25JRChzdGF0ZS5n
ZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQorICAgICwgbV9vcmlnaW5hbFJlcXVlc3QoaXRlbS51cmwo
KSkKKyAgICAsIG1fY3VycmVudFJlcXVlc3QobV9vcmlnaW5hbFJlcXVlc3QpCiAgICAgLCBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW0oJml0ZW0pCiAgICAgLCBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlw
ZShiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUpCiB7CkBAIC01NywxNiArNjAsMjIgQEAgTmF2aWdh
dGlvbjo6fk5hdmlnYXRpb24oKQogewogfQogCi12b2lkIE5hdmlnYXRpb246OmFwcGVuZFJlZGly
ZWN0aW9uVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBOYXZpZ2F0aW9uOjpzZXRD
dXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNz
SWRlbnRpZmllcjsKK30KKwordm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBt
X3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFw
cGVuZCh1cmwpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotV1RGOjpTdHJpbmcgTmF2aWdhdGlv
bjo6bG9nZ2luZ1VSTCgpIGNvbnN0CitXVEY6OlN0cmluZyBOYXZpZ2F0aW9uOjpsb2dnaW5nU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtID8gbV9iYWNr
Rm9yd2FyZExpc3RJdGVtLT51cmwoKSA6IG1fcmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKKyAgICBy
ZXR1cm4gbWFrZVN0cmluZygiTW9zdCByZWNlbnQgVVJMOiAiLCBtX2N1cnJlbnRSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCAiIEJhY2svZm9yd2FyZCBsaXN0IGl0ZW0gVVJMOiAnIiwgbV9iYWNrRm9y
d2FyZExpc3RJdGVtID8gbV9iYWNrRm9yd2FyZExpc3RJdGVtLT51cmwoKSA6IFN0cmluZyB7IH0s
IFN0cmluZzo6Zm9ybWF0KCInICglcCkiLCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCkpKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24u
aAppbmRleCAwN2M0OGVlNDc4MTI5YTZhYjQ3ZjRkYWM5Njc0YWM3M2M4OWNlMThiLi45NDdmYjNj
ZmRlNjMyYmI0N2ExOGQyZDJjZDAzZDAyNDE3MjliMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKQEAgLTYyLDcgKzYzLDE0IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9CiAKLSAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7
IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1ZXN0OyB9CisgICAgdm9pZCBzZXRDdXJyZW50
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0OyB9CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsg
fQorCisgICAgdm9pZCBzZXRDdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoYm9vbCBpc1JlZGlyZWN0
KSB7IG1faXNSZWRpcmVjdCA9IGlzUmVkaXJlY3Q7IH0KKyAgICBib29sIGN1cnJlbnRSZXF1ZXN0
SXNSZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWRpcmVjdDsgfQorCiAgICAgV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBiYWNrRm9yd2FyZExpc3RJdGVtKCkgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZExpc3RJdGVtLmdldCgpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsgfQogCkBAIC04Miw3ICs5MCw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
PiYgb3BlbmVyKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuZXI7IH0KIAogI2lmICFMT0dfRElTQUJM
RUQKLSAgICBXVEY6OlN0cmluZyBsb2dnaW5nVVJMKCkgY29uc3Q7CisgICAgV1RGOjpTdHJpbmcg
bG9nZ2luZ1N0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC05MSwxMCArOTks
MTMgQEAgcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRl
JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6RnJhbWVMb2FkVHlw
ZSk7CiAKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKLSAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBtX2N1cnJl
bnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gbV9y
ZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9zaG91bGRGb3JjZURvd25sb2FkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSZWRp
cmVjdCB7IGZhbHNlIH07CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUxvYWRUeXBlPiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCmluZGV4IGVkNjY2MzI3
YjllMDc3MTJlNzRlNzBlMzI3Y2NkMDY1YTM5MjQ3YWIuLjQyZmI4NTg1NmViZGE3MzVmODYyNjFj
NWViOWEwZmFjMjI1ODEzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbi5tbQpAQCAtNDMsNyArNDMsNyBAQCAtICh2b2lkKWRlYWxsb2MK
IAogLSAoTlNVUkxSZXF1ZXN0ICopX3JlcXVlc3QKIHsKLSAgICByZXR1cm4gX25hdmlnYXRpb24t
PnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7Cisg
ICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMWJjNTM3YjQ4NjhmNjIxYTgxNjBmNTkwNWQ4ZTgxMWEzODJkZWIxNC4uYzE0
NzgxZDQ1ZmQ3MmE3N2I2NGI1NDQwZWJlOWU3ZTUxMTFhMWNiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMzUyLDggKzIzNTIsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJG
cmFtZVByb3h5JiBmcgogCiAgICAgICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpVc2Ug
JiYgbmF2aWdhdGlvbikgewogICAgICAgICAgICAgYXV0byBwcm9wb3NlZFByb2Nlc3MgPSBwcm9j
ZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRp
b24sIGFjdGlvbik7CisKICAgICAgICAgICAgIGlmIChwcm9wb3NlZFByb2Nlc3MucHRyKCkgIT0g
JnByb2Nlc3MoKSkgewotICAgICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiU3dpdGNoaW5nIHRv
IG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiIHRvIHVybCAnJXMnIChXZWJC
YWNrRm9yd2FyZExpc3RJdGVtICVwKSIsIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZp
Z2F0aW9uLT5sb2dnaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgbmF2aWdhdGlvbi0+YmFja0Zvcndh
cmRMaXN0SXRlbSgpKTsKKyAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3aXRjaGluZyBm
cm9tIHByb2Nlc3MgJWkgdG8gbmV3IHByb2Nlc3MgZm9yIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIg
JyVzJyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBu
YXZpZ2F0aW9uLT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFBy
b2Nlc3MgPSBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgp
LCBXVEZNb3ZlKHByb3Bvc2VkUHJvY2VzcykpOwpAQCAtMjM2Nyw4ICsyMzY4LDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
V2ViRnJhbWVQcm94eSYgZnIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcykKIHsKLSAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdh
dGlvbiAlIiBQUkl1NjQgIiB0byBVUkwgJXMgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0
aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdVUkwoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAn
JXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBBU1NFUlQobV9w
cm9jZXNzLnB0cigpICE9IHByb2Nlc3MucHRyKCkpOwogICAgIGF0dGFjaFRvUHJvY2Vzc0Zvck5h
dmlnYXRpb24oV1RGTW92ZShwcm9jZXNzKSk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmln
YXRpb24uYmFja0ZvcndhcmRMaXN0SXRlbSgpKSB7CkBAIC0yMzg0LDcgKzIzODYsMjAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFIKICAgICB9CiAKICAgICAvLyBGSVhNRTogV29yayBvdXQgdGlt
aW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwotICAg
IGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24obmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsg
bmF2aWdhdGlvbi5yZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIE5hdmlnYXRpb25Qb2xp
Y3lDaGVjazo6QnlwYXNzKTsKKyAgICBBU1NFUlQoIW5hdmlnYXRpb24uY3VycmVudFJlcXVlc3Qo
KS5pc0VtcHR5KCkpOworICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24obmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVz
LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OkJ5cGFzcyk7CisKKyAgICAvLyBOb3Jt
YWxseSwgbm90aWZpY2F0aW9uIG9mIGEgc2VydmVyIHJlZGlyZWN0IGNvbWVzIGZyb20gdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAvLyBJZiB3ZSBhcmUgcHJvY2VzcyBzd2FwcGluZyBpbiBy
ZXNwb25zZSB0byBhIHNlcnZlciByZWRpcmVjdCB0aGVuIHRoYXQgbm90aWZpY2F0aW9uIHdpbGwg
bm90IGNvbWUgZnJvbSB0aGUgbmV3IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAvLyBJbiB0aGlz
IGNhc2Ugd2UgaGF2ZSB0aGUgVUlQcm9jZXNzIHN5bnRoZXNpemUgdGhlIHJlZGlyZWN0IG5vdGlm
aWNhdGlvbiBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKyAgICBpZiAobmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdElzUmVkaXJlY3QoKSkgeworICAgICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsK
KyAgICAgICAgbV9tYWluRnJhbWVDcmVhdGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgcmVx
dWVzdCA9ICBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBBU1NFUlQobV9tYWluRnJhbWUpOworICAgICAgICAgICAgbV9tYWluRnJhbWUtPmZyYW1l
TG9hZFN0YXRlKCkuZGlkU3RhcnRQcm92aXNpb25hbExvYWQocmVxdWVzdC51cmwoKSk7CisgICAg
ICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgV1RG
TW92ZShyZXF1ZXN0KSwgeyB9KTsKKyAgICAgICAgfTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQpAQCAtMzE5Myw2ICszMjA4
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCiAg
ICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgbV9tYWluRnJhbWUuZ2V0KCkpOwor
CisgICAgaWYgKG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVyKSB7CisgICAgICAgIG1fbWFpbkZy
YW1lQ3JlYXRpb25IYW5kbGVyKCk7CisgICAgICAgIG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVy
ID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJm
cmFtZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzI2OSwxMCArMzI4OSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIAotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNh
Y3Rpb24oKTsKLQotICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJM
KHRyYW5zYWN0aW9uKTsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdF
X0NIRUNLX1VSTCh1cmwpOwpAQCAtMzI4Miw2ICszMjk4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAg
ICAgICAgbmF2aWdhdGlvbiA9ICZuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCk7CiAKKyAgICAvLyBJZiB0aGlzIHNlZW1pbmdseSBuZXcgbG9hZCBpcyBhY3R1YWxseSBj
b250aW51aW5nIGEgc2VydmVyIHJlZGlyZWN0IGZvciBhIHByZXZpb3VzIG5hdmlnYXRpb24gaW4g
YSBuZXcgcHJvY2VzcywKKyAgICAvLyB0aGVuIHdlIGlnbm9yZSB0aGlzIG5vdGlmaWNhdGlvbi4K
KyAgICBpZiAobmF2aWdhdGlvbiAmJiBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdElzUmVkaXJl
Y3QoKSkgeworICAgICAgICBhdXRvIG5hdmlnYXRpb25Qcm9jZXNzSWRlbnRpZmllciA9IG5hdmln
YXRpb24tPmN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKG5h
dmlnYXRpb25Qcm9jZXNzSWRlbnRpZmllciAmJiAqbmF2aWdhdGlvblByb2Nlc3NJZGVudGlmaWVy
ICE9IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklE
ICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKKworICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElS
ZXF1ZXN0VVJMKHRyYW5zYWN0aW9uKTsKKwogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBpZiAobV9wYWdlTG9hZFN0YXJ0KQogICAgICAgICAgICAgcmVwb3J0UGFnZUxv
YWRSZXN1bHQoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlv
biB9KTsKQEAgLTMzMDIsMjcgKzMzMzIsMjkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAg
ICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKnRo
aXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogeworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBm
cmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZy
YW1lSUQsIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAK
ICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsK
KyAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKIAogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJl
LCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRo
ZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247CiAg
ICAgaWYgKG5hdmlnYXRpb25JRCkgewogICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25T
dGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKLSAgICAgICAgbmF2aWdhdGlvbi0+YXBw
ZW5kUmVkaXJlY3Rpb25VUkwodXJsKTsKKyAgICAgICAgbmF2aWdhdGlvbi0+YXBwZW5kUmVkaXJl
Y3Rpb25VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgfQogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKHRyYW5zYWN0aW9uLCB1cmwpOworICAgICAgICBtX3BhZ2VMb2Fk
U3RhdGUuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHRyYW5zYWN0
aW9uLCByZXF1ZXN0LnVybCgpKTsKIAotICAgIGZyYW1lLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkpOwogCiAgICAgbV9wYWdlTG9h
ZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkBA
IC0zNDQzLDYgKzM0NzUsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIGlmIChmcmFt
ZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSAm
bmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCisgICAgbV9wcm9j
ZXNzLT5kaWRDb21taXRQcm92aXNpb25hbExvYWQoKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgbV9oYXNSZWNlaXZlZExheWVy
VHJlZVRyYW5zYWN0aW9uQWZ0ZXJEaWRDb21taXRMb2FkID0gZmFsc2U7CkBAIC0zNzkxLDcgKzM4
MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRf
dCBmcmFtZUlELCBib29sIHZhbHVlKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSAtIFRhcmdldCB1cmwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1
cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtMzgwNiwx
NSArMzg0MCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdpbmFsUmVxdWVz
dC51cmwoKSk7CiAgICAgCi0gICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklEIHsgMCB9OwotICAg
IFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklELCBQb2xpY3lMaXN0ZW5lclR5cGU6Ok5hdmln
YXRpb25BY3Rpb24pOwogICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZp
Z2F0aW9uSUQgPyBtYWtlUmVmKG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCkpIDogbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwogCi0gICAgbmV3TmF2aWdhdGlvbklEID0gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb24tPm9yaWdpbmFsUmVx
dWVzdCgpLnVybCgpID09IG9yaWdpbmFsUmVxdWVzdC51cmwoKSk7CisKKyAgICB1aW50NjRfdCBu
ZXdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKICAgICBuYXZpZ2F0
aW9uLT5zZXRXYXNVc2VySW5pdGlhdGVkKCEhbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1
cmVUb2tlbklkZW50aWZpZXIpOwogICAgIG5hdmlnYXRpb24tPnNldFNob3VsZEZvcmNlRG93bmxv
YWQoIW5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpKTsKKyAg
ICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCks
IG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIG5hdmlnYXRpb24tPnNl
dEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGlyZWN0
KTsKICAgICBuYXZpZ2F0aW9uLT5zZXRJc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24o
bmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKTsK
ICAgICBuYXZpZ2F0aW9uLT5zZXRPcGVuZXIobmF2aWdhdGlvbkFjdGlvbkRhdGEub3BlbmVyKTsK
KworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkobGlzdGVuZXJJRCwgUG9saWN5TGlzdGVuZXJUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uKSk7
CiAgICAgbGlzdGVuZXItPnNldE5hdmlnYXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uKSk7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01ODAzLDkgKzU4NDEsMTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uIHRlcm1pbmEKICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5jbGVhcigpOwogI2VuZGlm
CiAKLSAgICBQYWdlTG9hZFN0YXRlOjpUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiA9IG1fcGFnZUxv
YWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5yZXNldCh0cmFuc2Fj
dGlvbik7CisgICAgaWYgKHRlcm1pbmF0aW9uUmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6TmF2aWdhdGlvblN3YXApIHsKKyAgICAgICAgUGFnZUxvYWRTdGF0ZTo6VHJhbnNhY3Rp
b24gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKKyAgICAgICAg
bV9wYWdlTG9hZFN0YXRlLnJlc2V0KHRyYW5zYWN0aW9uKTsKKyAgICB9CiAKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzM4Njc2NjA0PiBJbiBjYXNlIG9mIHByb2Nlc3Mgc3dhcHMsIHRo
ZSBvbGQgcHJvY2VzcyBzaG91bGQgZ3JhY2VmdWxseSBzdXNwZW5kIGluc3RlYWQgb2YgdGVybWlu
YXRpbmcuCiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzVGVybWluYXRlZCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE2YWU5MmJiZDBiZWI5NGFlMDdlZDM3
MGUxYzMwOTZjYWI3NmUwMmUuLmNjMGMwZjllYTA0MDc0NWI5MzE4NDEyZWM5NjFjNjdhNWJjYjcx
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzM5LDcgKzEz
MzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJh
bWVJRCk7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29y
ZTo6VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmLCBjb25zdCBVc2Vy
RGF0YSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHVybCwgZG91YmxlIGRlbGF5KTsKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
Q29yZTo6VVJMJiYpOwpAQCAtMTc3Nyw2ICsxNzc3LDggQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgUmVmUHRyPFdlYkZyYW1l
UHJveHk+IG1fbWFpbkZyYW1lOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9tYWluRnJhbWVDcmVh
dGlvbkhhbmRsZXI7CisKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mb2N1c2VkRnJhbWU7
CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fZnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCAwYzM5MDgzOWZkY2FiYjk5YmFiNTEwZTc3ZmRiOWQ4NTdiMDA4NmViLi5hOTJjZDM3NWU3ZDA2
YjJiOTVjYTcyNDNmYWUyNzkxNDhhYzA0NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMTYsNyArMTE2LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRnJhbWUgbG9hZCBtZXNzYWdlcwogICAgIERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVV
UkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQorICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmws
IGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYzhiZWQwMDJkNjY3
YTllZDhlOGJjNDFkYTFkZTMwYTkyNGNkNzU1OS4uNDAxNjhhZDQ5ZDYyNTQ4YTJlY2ZhOTQ2Njc5
YTc0NmM3NzdjOTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTk4NSw2ICsxOTg1LDkgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY28KICAgICBp
ZiAoIW1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiBwYWdlLnByb2Nlc3MoKTsKIAorICAgIGlmICghcGFnZS5wcm9jZXNzKCkuaGFzQ29t
bWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKQorICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNz
KCk7CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgcHJvY2VzcyBzd2FwIHdoZW4g
YSB3aW5kb3cgaGFzIGFuIG9wZW5lci4KICAgICBpZiAobmF2aWdhdGlvbi5vcGVuZXIoKSkKICAg
ICAgICAgcmV0dXJuIHBhZ2UucHJvY2VzcygpOwpAQCAtMTk5NCw5ICsxOTk3LDkgQEAgUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY28KICAgICAgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0KIAotICAgIGF1dG8gdGFyZ2V0VVJMID0gbmF2
aWdhdGlvbi5yZXF1ZXN0KCkudXJsKCk7CisgICAgYXV0byB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9u
LmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB1cmwgPSBVUkwgeyBQYXJzZWRVUkxT
dHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgaWYgKCF1cmwuaXNWYWxp
ZCgpIHx8IHVybC5pc0JsYW5rVVJMKCkgfHwgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVy
bCwgdGFyZ2V0VVJMKSkKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzRW1wdHkoKSB8
fCB1cmwuaXNCbGFua1VSTCgpIHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIHRh
cmdldFVSTCkpCiAgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKIAogICAgIGFjdGlvbiA9
IFBvbGljeUFjdGlvbjo6U3VzcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IDg1ODM4YWE2YTY1MzhkODRmMjU3NTliNWUyNjVkMWFkNjU5M2M1MTcuLmY4
MjRmODUzNjNkNDEyYTJkMTIxZTBiZGQyMzQ0NmIzNjE3MDJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBEb3dubG9h
ZENsaWVudDsKIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQ2xp
ZW50OwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CitjbGFzcyBOYXZpZ2F0aW9u
OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggM2JhZDJlZWU0YTJiNWY4NmE1ZGU0OTM4ZDVjM2M1ZWVj
YTNmZmU3OS4uODBhYjhhNmI1OTY1N2UyZjg3ZWU3MTc2MjhkMDAwNTY3MTUxOTc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIwNSw2ICsyMDUsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7
CiAKKyAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCgpIHsgbV9oYXNDb21taXR0ZWRB
bnlQcm92aXNpb25hbExvYWRzID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzQ29tbWl0dGVkQW55UHJv
dmlzaW9uYWxMb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9u
YWxMb2FkczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFn
ZUlEKCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOwpAQCAtMzI5LDYgKzMzMiw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJDb3Jl
OjpNZXNzYWdlUG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzOwogICAgIEhh
c2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNoRGVsaXZlcnlD
b21wbGV0aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkp
Pj4gbV9sb2NhbFBvcnRBY3Rpdml0eUNvbXBsZXRpb25IYW5kbGVyczsKKworICAgIGJvb2wgbV9o
YXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggY2MxNmUw
MWRkY2I3ZWVmNzljOGM5ODY3MDFjN2E0ZjBjNmE0YWFmYy4uZmNiZGQ3NTdiMjFjNWYyNWNhMTll
NTk5Yzk0Nzc0NjgyNzA4N2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCkBAIC0zMDYsMTEgKzMwNywxMyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZCgpCiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nh
c3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YTsKIAorICAgIExPRyhMb2FkaW5nLCAiV2ViUHJvY2VzcyAlaSAtIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkIHRvIHJlcXVlc3QgdXJsICVzIiwg
Z2V0cGlkKCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgdXNlckRhdGEpOwog
CiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25J
RCgpLCBkb2N1bWVudExvYWRlci51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7Cisg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRv
Y3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXF1ZXN0KCksIFVz
ZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkKQEAgLTgxOCw2ICs4MjEsOCBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgTE9H
KExvYWRpbmcsICJXZWJQcm9jZXNzICVpIC0gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uIHRvIHJlcXVlc3QgdXJsICVzIiwgZ2V0cGlkKCksIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICBtX2lzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24gPSB0cnVlOwogICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAg
ICB3ZWJQYWdlLT5kaWRTdGFydE5hdmlnYXRpb25Qb2xpY3lDaGVjaygpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ4ZTNlMDg1ODY4YThmOGMy
ODYzNWVjMDA1NmVjYjMzNTc5ZGUyZTUuLjY1ZGRkZmZmN2E3OWU4ZTU2YjQxNTUxNzFiNjk2MWE5
ODllZWEzMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wNC0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9uIG5lZWRz
IHRvIGhhbmRsZSBzZXJ2ZXIgcmVkaXJlY3RzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2
OTA0NjU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZp
Z2F0aW9uOl0pOgorICAgICAgICAoLVtQU09OTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgYWRk
UmVkaXJlY3RGcm9tVVJMU3RyaW5nOnRvVVJMU3RyaW5nOl0pOgorICAgICAgICAoLVtQU09OU2No
ZW1lIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorCiAyMDE4LTA0LTAyICBBbGVqYW5k
cm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RL
IHBvcnQgZGVwZW5kZW5jaWVzIGZpeCBhZnRlciByMjMwMTUyLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW0KaW5kZXggMTczNGM3OTU3MTdlNzJiMmIwZWI1OTdkZDJkN2RjZDgyN2FjMWI4
NS4uNzFhOGFjM2E2YTU1NDFmYjgwZDgxMWE4ZDVlYzJmMDQ4YzA2M2VmMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvbkRlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2
YXRlLmg+CkBAIC00NCw2ICs0NSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZVBvbGlj
aWVzLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Cisj
aW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNTcs
NiArNTksOCBAQCBzdGF0aWMgaW50IG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHM7CiAKIHN0YXRp
YyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHJlY2VpdmVkTWVzc2FnZXMgPSBhZG9wdE5TKFtA
W10gbXV0YWJsZUNvcHldKTsKIHN0YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZTsKK3N0YXRpYyBi
b29sIHNlcnZlclJlZGlyZWN0ZWQ7CitzdGF0aWMgSGFzaFNldDxwaWRfdD4gc2VlblBJRHM7CiBA
aW50ZXJmYWNlIFBTT05NZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPgogQGVuZAogCkBAIC03NSwxNSArNzksMjMgQEAgQGltcGxlbWVudGF0aW9uIFBTT05O
YXZpZ2F0aW9uRGVsZWdhdGUKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKKyAgICBz
ZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiAgICAgZG9uZSA9
IHRydWU7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9u
QWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICArK251bWJlck9mRGVjaWRlUG9saWN5Q2FsbHM7Cisg
ICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwogICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiB9CiAKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAg
ICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgc2Vy
dmVyUmVkaXJlY3RlZCA9IHRydWU7Cit9CisKIEBlbmQKIAogc3RhdGljIFJldGFpblB0cjxXS1dl
YlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwpAQCAtMTE3LDggKzEyOSwxMCBAQCBAZW5kCiAKIEBpbnRl
cmZhY2UgUFNPTlNjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKICAgICBj
b25zdCBjaGFyKiBfYnl0ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX3JlZGlyZWN0
czsKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsK
Ky0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0
cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZzsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFBTT05TY2hlbWUKQEAgLTEzMCw5ICsxNDQsMjUgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoQnl0ZXM6KGNvbnN0IGNoYXIqKWJ5dGVzCiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKKy0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNv
dXJjZVVSTFN0cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmlu
ZworeworICAgIF9yZWRpcmVjdHMuc2V0KHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxT
dHJpbmcpOworfQorCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRV
UkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCiB7Ci0gICAgUmV0YWluUHRy
PE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVj
dGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgTlNVUkwgKmZp
bmFsVVJMID0gdGFzay5yZXF1ZXN0LlVSTDsKKyAgICBhdXRvIHRhcmdldCA9IF9yZWRpcmVjdHMu
Z2V0KHRhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgIGlmICghdGFyZ2V0Lmlz
RW1wdHkoKSkgeworICAgICAgICBhdXRvIHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpu
aWwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKworICAg
ICAgICBmaW5hbFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXRhcmdldF07
CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGlu
aXRXaXRoVVJMOmZpbmFsVVJMXSk7CisKKyAgICAgICAgWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2
YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246cmVkaXJlY3RSZXNwb25zZS5nZXQoKSBu
ZXdSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOworICAgIH0KKworICAgIFJldGFpblB0cjxOU1VSTFJl
c3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDpmaW5hbFVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OjEgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
cmVzcG9uc2UuZ2V0KCldOwogCiAgICAgaWYgKF9ieXRlcykgewpAQCAtNDQ0LDQgKzQ3NCwxMzcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpbldpbmRvd09wZW5Ob09wZW5lcikKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAorVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3RG
cm9tTmV3V2ViVmlldykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWluUHRyPFBTT05TY2hl
bWU+IGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFto
YW5kbGVyIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwi
IHRvVVJMU3RyaW5nOkAicHNvbnJlZGlyZWN0ZWQ6Ly9ob3N0L21haW4xLmh0bWwiXTsKKyAgICBb
d2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAInBzb24iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
c2VydmVyUmVkaXJlY3RlZCk7CisgICAgc2VydmVyUmVkaXJlY3RlZCA9IGZhbHNlOworCisgICAg
c2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBz
ZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICBFWFBF
Q1RfRkFMU0Uoc2VydmVyUmVkaXJlY3RlZCk7CisgICAgRVhQRUNUX0VRKDIsIG51bWJlck9mRGVj
aWRlUG9saWN5Q2FsbHMpOworICAgIEVYUEVDVF9FUSgxdSwgc2VlblBJRHMuc2l6ZSgpKTsKK30K
KworVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QpCit7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRO
UyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
d2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwor
ICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5kbGVyMSA9IGFkb3B0TlMoW1tQU09OU2NoZW1l
IGFsbG9jXSBpbml0XSk7CisgICAgW2hhbmRsZXIxIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpA
InBzb246Ly9ob3N0L21haW4xLmh0bWwiIHRvVVJMU3RyaW5nOkAicHNvbnJlZGlyZWN0ZWQ6Ly9o
b3N0L21haW4xLmh0bWwiXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpoYW5kbGVyMS5nZXQoKSBmb3JVUkxTY2hlbWU6QCJwc29uIl07CisgICAgUmV0YWlu
UHRyPFBTT05TY2hlbWU+IGhhbmRsZXIyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5k
bGVyMi5nZXQoKSBmb3JVUkxTY2hlbWU6QCJvcmlnaW5hbGxvYWQiXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAib3JpZ2luYWxsb2FkOi8vaG9z
dC9tYWluMS5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisK
KyAgICBhdXRvIHBpZEFmdGVyRmlyc3RMb2FkID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlm
aWVyXTsKKworICAgIEVYUEVDVF9FUSgxLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAg
ICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoKnNlZW5Q
SURzLmJlZ2luKCkgPT0gcGlkQWZ0ZXJGaXJzdExvYWQpOworCisgICAgcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vaG9z
dC9tYWluMS5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2ZXJSZWRpcmVjdGVkKTsKKyAgICBzZXJ2
ZXJSZWRpcmVjdGVkID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdKTsKKworICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJSZWRpcmVjdGVkKTsK
KyAgICBFWFBFQ1RfRVEoMywgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7CisgICAgRVhQRUNU
X0VRKDJ1LCBzZWVuUElEcy5zaXplKCkpOworfQorCitURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJS
ZWRpcmVjdDIpCit7CisgICAgLy8gVGhpcyB0ZXN0cyBhIGxvYWQgdGhhdCAqc3RhcnRzIG91dCog
dG8gdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBwcmV2aW91cyBsb2FkLCBidXQgdGhlbiByZWRpcmVj
dHMgdG8gYSBuZXcgb3JpZ2luLgorICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24g
PSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9u
IHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNj
aGVtZT4gaGFuZGxlcjEgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAg
IFtoYW5kbGVyMSBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMi5o
dG1sIiB0b1VSTFN0cmluZzpAInBzb25yZWRpcmVjdGVkOi8vaG9zdC9tYWluMS5odG1sIl07Cisg
ICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjEuZ2V0
KCkgZm9yVVJMU2NoZW1lOkAicHNvbiJdOworICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5k
bGVyMiA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdD
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAicHNvbnJlZGlyZWN0ZWQiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRBZnRlckZpcnN0TG9h
ZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBFWFBFQ1RfRkFMU0Uo
c2VydmVyUmVkaXJlY3RlZCk7CisgICAgRVhQRUNUX0VRKDEsIG51bWJlck9mRGVjaWRlUG9saWN5
Q2FsbHMpOworICAgIEVYUEVDVF9FUSgxdSwgc2VlblBJRHMuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRSgqc2VlblBJRHMuYmVnaW4oKSA9PSBwaWRBZnRlckZpcnN0TG9hZCk7CisKKyAgICByZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InBzb246Ly9ob3N0L21haW4yLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNlcnZlclJlZGlyZWN0ZWQp
OworICAgIHNlcnZlclJlZGlyZWN0ZWQgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgRVhQRUNUX0ZBTFNFKHNlcnZlclJl
ZGlyZWN0ZWQpOworICAgIEVYUEVDVF9FUSgzLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsK
KyAgICBFWFBFQ1RfRVEoMnUsIHNlZW5QSURzLnNpemUoKSk7Cit9CisKKwogI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337046</attachid>
            <date>2018-04-02 17:24:45 -0700</date>
            <delta_ts>2018-04-02 18:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184142-20180402172444.patch</filename>
            <type>text/plain</type>
            <size>37790</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZhMGFlNTIyNjI5NWVjYTk3
YmJjN2Q1NmM1MjQ5NWU3YzUzZTE2NDYuLjMwMDY1YzY2Yzk0YjNhYjgzNDdlMzhkZjZlYWI2M2Vk
ZmIyOWM1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDQtMDIgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb2Nlc3Mgc3dhcHBpbmcgb24g
bmF2aWdhdGlvbiBuZWVkcyB0byBoYW5kbGUgc2VydmVyIHJlZGlyZWN0cy4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM4NjkwNDY1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgVGhlIHNhbWUgcnVsZXMgd2UgYXBwbHkgdG8gcHJvY2VzcyBzd2FwcGluZyBm
b3IgYmFzaWMgbmF2aWdhdGlvbnMgbmVlZCB0byBhcHBseQorICAgICAgICB0byBzZXJ2ZXIgcmVk
aXJlY3RzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlcmUncyB0aHJlZSBpbnRlcmVzdGluZyBjYXNl
cyB3ZSBuZWVkIHRvIHN1cHBvcnQgdGhhdCBhcmUgY292ZXJlZCBieSBuZXcgQVBJIHRlc3RzOgor
ICAgICAgICAxIC0gVGhlIGluaXRpYWwgbG9hZCBpbiBhIFdLV2ViVmlldyByZWRpcmVjdHMgY3Jv
c3Mtb3JpZ2luLgorICAgICAgICAyIC0gQSBXS1dlYlZpZXcgaXMgc2hvd2luZyBjb250ZW50IGZy
b20gYS5jb20sIHdlIHN0YXJ0IGEgbG9hZCB0byBiLmNvbSwgYW5kIHRoYXQgcmVkaXJlY3RzIHRv
IGMuY29tCisgICAgICAgIDMgLSBBIFdLV2ViVmlldyBpcyBzaG93aW5nIGNvbnRlbnQgZnJvbSBh
LmNvbSwgd2Ugc3RhcnQgYSBsb2FkIHRvIGEuY29tLCB0aGF0IHRoYXQgcmVkaXJlY3RzIHRvIGIu
Y29tLgorCisgICAgICAgIFN1cHBvcnRpbmcgYWxsIDMgb2YgdGhlc2UgYnJvdWdodCB0aGVpciBv
d24gbGl0dGxlIGNoYWxsZW5nZXMuCisKKyAgICAgICAgQnkgdGVhY2hpbmcgTmF2aWdhdGlvbiBv
YmplY3RzIG1vcmUgYWJvdXQgcmVkaXJlY3RzIEkgd2FzIGFibGUgdG8gc3VwcG9ydCBhbGwgMyBj
YXNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb246Ok5hdmlnYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0
aW9uOjpzZXRDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bG9nZ2luZ1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmxvZ2dpbmdVUkwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpvcmlnaW5hbFJlcXVlc3QgY29uc3QpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uOjpjdXJyZW50UmVxdWVzdCBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb246OmN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpzZXRDdXJyZW50UmVxdWVzdElzUmVkaXJlY3QpOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpjdXJyZW50UmVxdWVzdElzUmVkaXJlY3QgY29uc3QpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpyZXF1ZXN0IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmln
YXRpb24gX3JlcXVlc3RdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2Vzcyk6IElmIHRoaXMgY29udGludWVkIG5hdmlnYXRpb24gaXMgY3VycmVudGx5IGluIGEg
c2VydmVyCisgICAgICAgICAgcmVkaXJlY3QsIHNhdmUgb2ZmIGEgbGFtYmRhIHRvIHN5bnRoZXNp
emUgYSAiZGlkIHJlY2VpdmUgc2VydmVyIHJlZGlyZWN0IiBjYWxsYmFjayBvbmNlIHRoZSBuZXcg
V2ViUHJvY2VzcyBpcyBydW5uaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IFBvc3NpYmx5IGlnbm9yZSB0aGlzIG5vdGlmaWNh
dGlvbiBpZiBpdCBpcyByZWFsbHkgYQorICAgICAgICAgIGNyb3NzLW9yaWdpbiByZWRpcmVjdCB0
aGF0IGlzIGp1c3Qgc3RhcnRpbmcgYmFjayB1cCBpbiBhIG5ldyBXZWJQcm9jZXNzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOiBEbyBub3QgY2xlYXIgcGFnZUxvYWRT
dGF0ZSBpZiB0aGUgcHJvY2VzcyBpcyBleGl0dGluZyBmb3IKKyAgICAgICAgICBhIG5hdmlnYXRp
b24gc3dhcCwgYXMgd2Ugd2lsbCBuZWVkIHRvIHBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYgd2hl
biB0aGUgbG9hZCBjb250aW51ZXMgaW4gYSBuZXcgV2ViUHJvY2Vzcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbik6IElm
IGEgcHJvY2VzcyBoYXMgbmV2ZXIgY29tbWl0dGVkIGFueSBwcm92aXNpb25hbCBsb2FkLCBpdCBj
YW4gYWx3YXlzCisgICAgICAgICAgYmUgdXNlZCB0byBjb250aW51ZSBhIG5hdmlnYXRpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIGNvbnN0KToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KwogMjAxOC0wNC0wMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwMTc0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCmluZGV4IGJlYTMzM2U5ZjQ0YmMxZGE5ZDgy
YTk0YjE1MTM4ZjUxZTI2ZjFmMzkuLmI5NTc1M2M2NzUwZGYxOWYyNzA5ZWIyY2Y4OWFmNGY5M2M4
NTJhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5j
cHAKQEAgLTQxLDEzICs0MSwxNiBAQCBOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRp
b25TdGF0ZSYgc3RhdGUpCiAKIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdhdGlvblN0
YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICA6IG1f
bmF2aWdhdGlvbklEKHN0YXRlLmdlbmVyYXRlTmF2aWdhdGlvbklEKCkpCi0gICAgLCBtX3JlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KFdURk1vdmUocmVx
dWVzdCkpCisgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KG1fb3JpZ2luYWxSZXF1ZXN0KQogewotICAg
IG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobV9yZXF1ZXN0LnVybCgpKTsKKyAgICBtX3JlZGlyZWN0
Q2hhaW4uYXBwZW5kKG1fb3JpZ2luYWxSZXF1ZXN0LnVybCgpKTsKIH0KIAogTmF2aWdhdGlvbjo6
TmF2aWdhdGlvbihXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkKICAgICA6
IG1fbmF2aWdhdGlvbklEKHN0YXRlLmdlbmVyYXRlTmF2aWdhdGlvbklEKCkpCisgICAgLCBtX29y
aWdpbmFsUmVxdWVzdChpdGVtLnVybCgpKQorICAgICwgbV9jdXJyZW50UmVxdWVzdChtX29yaWdp
bmFsUmVxdWVzdCkKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0SXRlbSgmaXRlbSkKICAgICAsIG1f
YmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSkKIHsKQEAg
LTU3LDE2ICs2MCwyMiBAQCBOYXZpZ2F0aW9uOjp+TmF2aWdhdGlvbigpCiB7CiB9CiAKLXZvaWQg
TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
Cit2b2lkIE5hdmlnYXRpb246OnNldEN1cnJlbnRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fY3Vy
cmVudFJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAgIG1fY3VycmVudFJlcXVlc3RQcm9j
ZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJZGVudGlmaWVyOworfQorCit2b2lkIE5hdmlnYXRpb246
OmFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChtX3JlZGly
ZWN0Q2hhaW4uaXNFbXB0eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5sYXN0KCkgIT0gdXJsKQogICAg
ICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHVybCk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVE
Ci1XVEY6OlN0cmluZyBOYXZpZ2F0aW9uOjpsb2dnaW5nVVJMKCkgY29uc3QKK1dURjo6U3RyaW5n
IE5hdmlnYXRpb246OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tG
b3J3YXJkTGlzdEl0ZW0gPyBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0tPnVybCgpIDogbV9yZXF1ZXN0
LnVybCgpLnN0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3N0IHJlY2VudCBVUkw6
ICIsIG1fY3VycmVudFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgQmFjay9mb3J3YXJkIGxpc3Qg
aXRlbSBVUkw6ICciLCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPyBtX2JhY2tGb3J3YXJkTGlzdEl0
ZW0tPnVybCgpIDogU3RyaW5nIHsgfSwgU3RyaW5nOjpmb3JtYXQoIicgKCVwKSIsIG1fYmFja0Zv
cndhcmRMaXN0SXRlbS5nZXQoKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCmluZGV4IDA3YzQ4ZWU0NzgxMjlhNmFiNDdmNGRhYzk2
NzRhYzczYzg5Y2UxOGIuLjk0N2ZiM2NmZGU2MzJiYjQ3YTE4ZDJkMmNkMDNkMDI0MTcyOWIxODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApAQCAtNjIsNyArNjMsMTQgQEAgcHVibGljOgog
CiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9u
SUQ7IH0KIAotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFJlcXVlc3Q7
IH0KKyAgICB2b2lkIHNldEN1cnJlbnRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFJlcXVl
c3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBjdXJy
ZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVx
dWVzdFByb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHNldEN1cnJlbnRSZXF1ZXN0SXNS
ZWRpcmVjdChib29sIGlzUmVkaXJlY3QpIHsgbV9pc1JlZGlyZWN0ID0gaXNSZWRpcmVjdDsgfQor
ICAgIGJvb2wgY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1Jl
ZGlyZWN0OyB9CisKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3
YXJkTGlzdEl0ZW0oKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0uZ2V0KCk7IH0KICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IGJhY2tGb3J3YXJkRnJhbWVM
b2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOyB9CiAK
QEAgLTgyLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+JiBvcGVuZXIoKSBjb25zdCB7IHJldHVybiBtX29wZW5l
cjsgfQogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIFdURjo6U3RyaW5nIGxvZ2dpbmdVUkwoKSBj
b25zdDsKKyAgICBXVEY6OlN0cmluZyBsb2dnaW5nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTkxLDEwICs5OSwxMyBAQCBwcml2YXRlOgogICAgIE5hdmlnYXRpb24oV2Vi
S2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
LCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsKIAogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklE
OwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJ
bml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93bmxvYWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fYmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IG1fYmFja0ZvcndhcmRGcmFtZUxv
YWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb24ubW0KaW5kZXggZWQ2NjYzMjdiOWUwNzcxMmU3NGU3MGUzMjdjY2QwNjVhMzkyNDdhYi4u
NDJmYjg1ODU2ZWJkYTczNWY4NjI2MWM1ZWI5YTBmYWMyMjU4MTM5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCkBAIC00Myw3ICs0
Myw3IEBACiAKIC0gKE5TVVJMUmVxdWVzdCAqKV9yZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIF9uYXZp
Z2F0aW9uLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90VXBkYXRlSFRUUEJv
ZHkpOworICAgIHJldHVybiBfbmF2aWdhdGlvbi0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1
ZXN0KFdlYkNvcmU6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCiAjcHJhZ21hIG1hcmsgV0tP
YmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDFiYzUzN2I0ODY4ZjYyMWE4MTYwZjU5MDVkOGU4MTFhMzgyZGVi
MTQuLmNmYWQ4NzNiY2Y3ZTBiOWFhODliZDQ0Y2I2ODJhZDFjNjBhNjQzMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjM1Miw4ICsyMzUyLDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlv
biwgV2ViRnJhbWVQcm94eSYgZnIKIAogICAgICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFjdGlv
bjo6VXNlICYmIG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gcHJvcG9zZWRQcm9jZXNz
ID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpu
YXZpZ2F0aW9uLCBhY3Rpb24pOworCiAgICAgICAgICAgICBpZiAocHJvcG9zZWRQcm9jZXNzLnB0
cigpICE9ICZwcm9jZXNzKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coTG9hZGluZywgIlN3aXRj
aGluZyB0byBuZXcgcHJvY2VzcyBmb3IgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiB0byB1cmwgJyVz
JyAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSAlcCkiLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSwgbmF2aWdhdGlvbi0+bG9nZ2luZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIG5hdmlnYXRpb24tPmJh
Y2tGb3J3YXJkTGlzdEl0ZW0oKSk7CisgICAgICAgICAgICAgICAgTE9HKExvYWRpbmcsICJTd2l0
Y2hpbmcgZnJvbSBwcm9jZXNzICVpIHRvIG5ldyBwcm9jZXNzIGZvciBuYXZpZ2F0aW9uICUiIFBS
SXU2NCAiICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSwgbmF2aWdhdGlvbi0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgcHJv
cG9zZWRQcm9jZXNzID0gV1RGTW92ZShwcm9wb3NlZFByb2Nlc3MpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MobmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZShwcm9wb3NlZFByb2Nlc3MpKTsKQEAgLTIzNjcsOCArMjM2OCw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBh
Y3Rpb24sIFdlYkZyYW1lUHJveHkmIGZyCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiB7Ci0gICAgTE9HKExvYWRpbmcsICJDb250aW51aW5n
IG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgdG8gVVJMICVzIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwg
bmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nVVJMKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJ
dTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklE
KCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgQVNT
RVJUKG1fcHJvY2Vzcy5wdHIoKSAhPSBwcm9jZXNzLnB0cigpKTsKICAgICBhdHRhY2hUb1Byb2Nl
c3NGb3JOYXZpZ2F0aW9uKFdURk1vdmUocHJvY2VzcykpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0g
PSBuYXZpZ2F0aW9uLmJhY2tGb3J3YXJkTGlzdEl0ZW0oKSkgewpAQCAtMjM4NCw3ICsyMzg2LDIw
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdvcmsg
b3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBl
dGMKLSAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5hdmlnYXRpb24sIFJlc291cmNlUmVx
dWVzdCB7IG5hdmlnYXRpb24ucmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRyLCBOYXZpZ2F0
aW9uUG9saWN5Q2hlY2s6OkJ5cGFzcyk7CisgICAgQVNTRVJUKCFuYXZpZ2F0aW9uLmN1cnJlbnRS
ZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFs
U2NoZW1lcywgbnVsbHB0ciwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworCisgICAg
Ly8gTm9ybWFsbHksIG5vdGlmaWNhdGlvbiBvZiBhIHNlcnZlciByZWRpcmVjdCBjb21lcyBmcm9t
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgLy8gSWYgd2UgYXJlIHByb2Nlc3Mgc3dhcHBp
bmcgaW4gcmVzcG9uc2UgdG8gYSBzZXJ2ZXIgcmVkaXJlY3QgdGhlbiB0aGF0IG5vdGlmaWNhdGlv
biB3aWxsIG5vdCBjb21lIGZyb20gdGhlIG5ldyBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgLy8g
SW4gdGhpcyBjYXNlIHdlIGhhdmUgdGhlIFVJUHJvY2VzcyBzeW50aGVzaXplIHRoZSByZWRpcmVj
dCBub3RpZmljYXRpb24gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCisgICAgaWYgKG5hdmlnYXRp
b24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX21haW5G
cmFtZSk7CisgICAgICAgIG1fbWFpbkZyYW1lQ3JlYXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlv
biksIHJlcXVlc3QgPSAgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1l
LT5mcmFtZUxvYWRTdGF0ZSgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHJlcXVlc3QudXJsKCkp
OworICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCksIFdURk1vdmUocmVxdWVzdCksIHsgfSk7CisgICAgICAgIH07CisgICAgfQogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKQEAgLTMxOTMs
NiArMzIwOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCiAKICAgICAvLyBBZGQgdGhlIGZyYW1lIHRvIHRoZSBwcm9jZXNzIHdpZGUg
bWFwLgogICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIG1fbWFpbkZyYW1lLmdl
dCgpKTsKKworICAgIGlmIChtX21haW5GcmFtZUNyZWF0aW9uSGFuZGxlcikgeworICAgICAgICBt
X21haW5GcmFtZUNyZWF0aW9uSGFuZGxlcigpOworICAgICAgICBtX21haW5GcmFtZUNyZWF0aW9u
SGFuZGxlciA9IG51bGxwdHI7CisgICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3Jl
YXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTMyNjksMTAgKzMyODksNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KG1fcGFnZUNsaWVudCk7CiAKLSAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7Ci0KLSAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVx
dWVzdFVSTCh0cmFuc2FjdGlvbik7Ci0KICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJv
Y2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAg
TUVTU0FHRV9DSEVDS19VUkwodXJsKTsKQEAgLTMyODIsNiArMzI5OCwyMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYQogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9u
SUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSAmbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihu
YXZpZ2F0aW9uSUQpOwogCisgICAgLy8gSWYgdGhpcyBzZWVtaW5nbHkgbmV3IGxvYWQgaXMgYWN0
dWFsbHkgY29udGludWluZyBhIHNlcnZlciByZWRpcmVjdCBmb3IgYSBwcmV2aW91cyBuYXZpZ2F0
aW9uIGluIGEgbmV3IHByb2Nlc3MsCisgICAgLy8gdGhlbiB3ZSBpZ25vcmUgdGhpcyBub3RpZmlj
YXRpb24uCisgICAgaWYgKG5hdmlnYXRpb24gJiYgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3RJ
c1JlZGlyZWN0KCkpIHsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uUHJvY2Vzc0lkZW50aWZpZXIg
PSBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgICAg
IGlmIChuYXZpZ2F0aW9uUHJvY2Vzc0lkZW50aWZpZXIgJiYgKm5hdmlnYXRpb25Qcm9jZXNzSWRl
bnRpZmllciAhPSBtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdl
TG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CisKKyAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5k
aW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbik7CisKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKICAgICAgICAgaWYgKG1fcGFnZUxvYWRTdGFydCkKICAgICAgICAgICAgIHJlcG9y
dFBhZ2VMb2FkUmVzdWx0KFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24gfSk7CkBAIC0zMzAyLDI3ICszMzMyLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpV
UkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKKyAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwg
JXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGll
bnQpOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJM
KHVybCk7CisgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51cmwoKSk7CiAKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIG1lc3NhZ2UgY2hlY2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHpl
cm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhy
b3VnaCB0aGUgcGFnZSBjYWNoZS4KICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0
aW9uOwogICAgIGlmIChuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgbmF2aWdhdGlvbiA9ICZuYXZp
Z2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7Ci0gICAgICAgIG5hdmlnYXRp
b24tPmFwcGVuZFJlZGlyZWN0aW9uVVJMKHVybCk7CisgICAgICAgIG5hdmlnYXRpb24tPmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIH0KIAogICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh0cmFuc2FjdGlvbiwgdXJsKTsKKyAgICAgICAgbV9w
YWdlTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh0
cmFuc2FjdGlvbiwgcmVxdWVzdC51cmwoKSk7CiAKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVybCk7CisgICAgZnJhbWUtPmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChyZXF1ZXN0LnVybCgpKTsKIAogICAgIG1f
cGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVu
dCkgewpAQCAtMzQ0Myw2ICszNDc1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0
aW9uID0gJm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAorICAg
IG1fcHJvY2Vzcy0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CisKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1faGFzUmVjZWl2
ZWRMYXllclRyZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCA9IGZhbHNlOwpAQCAtMzc5
MSw3ICszODI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQo
dWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgLSBUYXJnZXQgdXJsICVzIiwgb3JpZ2luYWxSZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJM
ICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAg
LTM4MDYsMTUgKzM4NDAsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKICAgICBNRVNTQUdF
X0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChvcmlnaW5h
bFJlcXVlc3QudXJsKCkpOwogICAgIAotICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCB7IDAg
fTsKLSAgICBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1l
LT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCwgUG9saWN5TGlzdGVuZXJUeXBl
OjpOYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9u
ID0gbmF2aWdhdGlvbklEID8gbWFrZVJlZihtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihu
YXZpZ2F0aW9uSUQpKSA6IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmln
YXRpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKIAotICAgIG5ld05hdmlnYXRpb25JRCA9
IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25J
RCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOwogICAgIG5hdmlnYXRpb24tPnNldFdhc1Vz
ZXJJbml0aWF0ZWQoISFuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRp
Zmllcik7CiAgICAgbmF2aWdhdGlvbi0+c2V0U2hvdWxkRm9yY2VEb3dubG9hZCghbmF2aWdhdGlv
bkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNOdWxsKCkpOworICAgIG5hdmlnYXRpb24t
PnNldEN1cnJlbnRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbV9wcm9jZXNzLT5j
b3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgbmF2aWdhdGlvbi0+c2V0Q3VycmVudFJlcXVl
c3RJc1JlZGlyZWN0KG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzUmVkaXJlY3QpOwogICAgIG5hdmln
YXRpb24tPnNldElzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbihuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5pc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24pOwogICAgIG5hdmlnYXRp
b24tPnNldE9wZW5lcihuYXZpZ2F0aW9uQWN0aW9uRGF0YS5vcGVuZXIpOworCisgICAgYXV0byBs
aXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5l
cklELCBQb2xpY3lMaXN0ZW5lclR5cGU6Ok5hdmlnYXRpb25BY3Rpb24pKTsKICAgICBsaXN0ZW5l
ci0+c2V0TmF2aWdhdGlvbihXVEZNb3ZlKG5hdmlnYXRpb24pKTsKIAogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKQEAgLTU4MDMsOSArNTgzOSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVy
bWluYQogICAgIG1fdG91Y2hFdmVudFF1ZXVlLmNsZWFyKCk7CiAjZW5kaWYKIAotICAgIFBhZ2VM
b2FkU3RhdGU6OlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5z
YWN0aW9uKCk7Ci0gICAgbV9wYWdlTG9hZFN0YXRlLnJlc2V0KHRyYW5zYWN0aW9uKTsKKyAgICBp
ZiAodGVybWluYXRpb25SZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0
aW9uU3dhcCkgeworICAgICAgICBQYWdlTG9hZFN0YXRlOjpUcmFuc2FjdGlvbiB0cmFuc2FjdGlv
biA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAgICAgICBtX3BhZ2VMb2FkU3Rh
dGUucmVzZXQodHJhbnNhY3Rpb24pOworICAgIH0KIAorICAgIC8vIEZJWE1FOiA8cmRhcjovL3By
b2JsZW0vMzg2NzY2MDQ+IEluIGNhc2Ugb2YgcHJvY2VzcyBzd2FwcywgdGhlIG9sZCBwcm9jZXNz
IHNob3VsZCBncmFjZWZ1bGx5IHN1c3BlbmQgaW5zdGVhZCBvZiB0ZXJtaW5hdGluZy4KICAgICBt
X3Byb2Nlc3MtPnByb2Nlc3NUZXJtaW5hdGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggYTZhZTkyYmJkMGJlYjk0YWUwN2VkMzcwZTFjMzA5NmNhYjc2
ZTAyZS4uY2MwYzBmOWVhMDQwNzQ1YjkzMTg0MTJlYzk2MWM2N2E1YmNiNzFkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzMzksNyArMTMzOSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpVUkwmJiB1bnJl
YWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIGNvbnN0IFVzZXJEYXRhJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3Vi
bGUgZGVsYXkpOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJik7
CkBAIC0xNzc3LDYgKzE3NzcsOCBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9tYWlu
RnJhbWU7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX21haW5GcmFtZUNyZWF0aW9uSGFuZGxlcjsK
KwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZvY3VzZWRGcmFtZTsKICAgICBSZWZQdHI8
V2ViRnJhbWVQcm94eT4gbV9mcmFtZVNldExhcmdlc3RGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDBjMzkwODM5ZmRj
YWJiOTliYWI1MTBlNzdmZGI5ZDg1N2IwMDg2ZWIuLmE5MmNkMzc1ZTdkMDZiMmI5NWNhNzI0M2Zh
ZTI3OTE0OGFjMDQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTExNiw3ICsxMTYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCiAgICAgRGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHVybCwgZG91YmxlIGRlbGF5
KQogICAgIERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkK
ICAgICBEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBjOGJlZDAwMmQ2NjdhOWVkOGU4YmM0MWRh
MWRlMzBhOTI0Y2Q3NTU5Li40MDE2OGFkNDlkNjI1NDhhMmVjZmE5NDY2NzlhNzQ2Yzc3N2M5M2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xOTg1
LDYgKzE5ODUsOSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjbwogICAgIGlmICghbV9jb25maWd1
cmF0aW9uLT5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuIHBhZ2Uu
cHJvY2VzcygpOwogCisgICAgaWYgKCFwYWdlLnByb2Nlc3MoKS5oYXNDb21taXR0ZWRBbnlQcm92
aXNpb25hbExvYWRzKCkpCisgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKKwogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBwcm9jZXNzIHN3YXAgd2hlbiBhIHdpbmRvdyBoYXMg
YW4gb3BlbmVyLgogICAgIGlmIChuYXZpZ2F0aW9uLm9wZW5lcigpKQogICAgICAgICByZXR1cm4g
cGFnZS5wcm9jZXNzKCk7CkBAIC0xOTk0LDkgKzE5OTcsOSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBjbwogICAgICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2VzcyhwYWdlLndlYnNpdGVEYXRh
U3RvcmUoKSk7CiAgICAgfQogCi0gICAgYXV0byB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLnJlcXVl
c3QoKS51cmwoKTsKKyAgICBhdXRvIHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJlcXVl
c3QoKS51cmwoKTsKICAgICBhdXRvIHVybCA9IFVSTCB7IFBhcnNlZFVSTFN0cmluZywgcGFnZS5w
YWdlTG9hZFN0YXRlKCkudXJsKCkgfTsKLSAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlz
QmxhbmtVUkwoKSB8fCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCB0YXJnZXRVUkwp
KQorICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCB1cmwuaXNFbXB0eSgpIHx8IHVybC5pc0JsYW5r
VVJMKCkgfHwgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgdGFyZ2V0VVJMKSkKICAg
ICAgICAgcmV0dXJuIHBhZ2UucHJvY2VzcygpOwogCiAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9u
OjpTdXNwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
ODU4MzhhYTZhNjUzOGQ4NGYyNTc1OWI1ZTI2NWQxYWQ2NTkzYzUxNy4uZjgyNGY4NTM2M2Q0MTJh
MmQxMjFlMGJkZDIzNDQ2YjM2MTcwMmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xh
c3MgSFRUUENvb2tpZVN0b3JlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiBjbGFzcyBM
ZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKK2NsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAppbmRleCAzYmFkMmVlZTRhMmI1Zjg2YTVkZTQ5MzhkNWMzYzVlZWNhM2ZmZTc5Li44MGFi
OGE2YjU5NjU3ZTJmODdlZTcxNzYyOGQwMDA1NjcxNTE5NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjA1LDYgKzIwNSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmKTsKIAorICAgIHZvaWQg
ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCkgeyBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFs
TG9hZHMgPSB0cnVlOyB9CisgICAgYm9vbCBoYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzOyB9CisK
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBX
ZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0z
MjksNiArMzMyLDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllcj4gbV9wcm9jZXNzRW50YW5nbGVkUG9ydHM7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgRnVuY3Rpb248dm9pZCgpPj4gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5k
bGVyczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+PiBtX2xvY2FsUG9y
dEFjdGl2aXR5Q29tcGxldGlvbkhhbmRsZXJzOworCisgICAgYm9vbCBtX2hhc0NvbW1pdHRlZEFu
eVByb3Zpc2lvbmFsTG9hZHMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBjYzE2ZTAxZGRjYjdlZWY3OWM4
Yzk4NjcwMWM3YTRmMGM2YTRhYWZjLi5mY2JkZDc1N2IyMWM1ZjI1Y2ExOWU1OTljOTQ3NzQ2ODI3
MDg3ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKQEAgLTMwNiwxMSArMzA3LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKICAgICBX
ZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVu
dExvYWRlciY+KCptX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpKTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCisgICAg
TE9HKExvYWRpbmcsICJXZWJQcm9jZXNzICVpIC0gZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQgdG8gcmVxdWVzdCB1cmwgJXMiLCBnZXRwaWQoKSwgZG9j
dW1lbnRMb2FkZXIucmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAg
ICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVu
ZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50
TG9hZGVyLnVybCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIu
bmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkwoKQpAQCAtODE4LDYgKzgyMSw4IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBMT0coTG9hZGluZywgIldl
YlByb2Nlc3MgJWkgLSBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gdG8g
cmVxdWVzdCB1cmwgJXMiLCBnZXRwaWQoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKwogICAgIG1faXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IHRy
dWU7CiAgICAgaWYgKG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHdlYlBhZ2UtPmRp
ZFN0YXJ0TmF2aWdhdGlvblBvbGljeUNoZWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTlhODFhMzg5YmYzYWNiYzJhNmRlMWM1OGRhYjcw
NmUyOGZkNjZiZS4uZjNmMjI1N2E1NTE2ZTcyYTQ4YzJmZjU5N2UwYzY3NTcyYjkyN2Q5MiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE4LTA0LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcm9jZXNzIHN3YXBwaW5nIG9uIG5hdmlnYXRpb24gbmVlZHMgdG8gaGFuZGxlIHNl
cnZlciByZWRpcmVjdHMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODY5MDQ2NT4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1b
UFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6Cisg
ICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUFNPTk5hdmln
YXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bUFNPTlNjaGVtZSBhZGRSZWRpcmVjdEZyb21V
UkxTdHJpbmc6dG9VUkxTdHJpbmc6XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpz
dGFydFVSTFNjaGVtZVRhc2s6XSk6CisKIDIwMTgtMDQtMDIgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSB0byByZWxheCBTU0wg
Zm9yIGFsbG93ZWQgaG9zdHMgaW4gRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDE3MzRjNzk1NzE3ZTcyYjJiMGVi
NTk3ZGQyZDdkY2Q4MjdhYzFiODUuLjcxYThhYzNhNmE1NTQxZmI4MGQ4MTFhOGQ1ZWMyZjA0OGMw
NjNlZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMjgsNiArMjgsNyBA
QAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBv
cnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLTmF2
aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgpAQCAtNDQsNiArNDUsNyBAQAogI2ltcG9ydCA8V2Vi
S2l0L19XS1dlYnNpdGVQb2xpY2llcy5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CiAjaW1wb3J0
IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KQEAgLTU3LDYgKzU5LDggQEAgc3RhdGljIGludCBudW1iZXJPZkRlY2lkZVBv
bGljeUNhbGxzOwogCiBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWNlaXZlZE1l
c3NhZ2VzID0gYWRvcHROUyhbQFtdIG11dGFibGVDb3B5XSk7CiBzdGF0aWMgYm9vbCByZWNlaXZl
ZE1lc3NhZ2U7CitzdGF0aWMgYm9vbCBzZXJ2ZXJSZWRpcmVjdGVkOworc3RhdGljIEhhc2hTZXQ8
cGlkX3Q+IHNlZW5QSURzOwogQGludGVyZmFjZSBQU09OTWVzc2FnZUhhbmRsZXIgOiBOU09iamVj
dCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQKIApAQCAtNzUsMTUgKzc5LDIzIEBAIHN0
YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZTsKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24K
IHsKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiAg
ICAgZG9uZSA9IHRydWU7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKilu
YXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICArK251bWJlck9mRGVjaWRlUG9saWN5
Q2FsbHM7CisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0p
OwogICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiB9
CiAKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRp
b24KK3sKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7
CisgICAgc2VydmVyUmVkaXJlY3RlZCA9IHRydWU7Cit9CisKIEBlbmQKIAogc3RhdGljIFJldGFp
blB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwpAQCAtMTE3LDggKzEyOSwxMCBAQCBzdGF0
aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gY3JlYXRlZFdlYlZpZXc7CiAKIEBpbnRlcmZhY2UgUFNP
TlNjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKICAgICBjb25zdCBjaGFy
KiBfYnl0ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX3JlZGlyZWN0czsKIH0KIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKKy0gKHZvaWQp
YWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VS
TFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZzsKIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFBTT05TY2hlbWUKQEAgLTEzMCw5ICsxNDQsMjUgQEAgc3RhdGljIFJldGFpblB0
cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogICAgIHJldHVybiBzZWxmOwogfQogCistICh2
b2lkKWFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VVUkxTdHJpbmcg
dG9VUkxTdHJpbmc6KE5TU3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmcKK3sKKyAgICBfcmVk
aXJlY3RzLnNldChzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKK30KKwog
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazoo
aWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzawogewotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNl
PiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5n
dGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgIE5TVVJMICpmaW5hbFVSTCA9IHRhc2su
cmVxdWVzdC5VUkw7CisgICAgYXV0byB0YXJnZXQgPSBfcmVkaXJlY3RzLmdldCh0YXNrLnJlcXVl
c3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBpZiAoIXRhcmdldC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYXV0byByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6bmlsIGV4cGVjdGVkQ29u
dGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisKKyAgICAgICAgZmluYWxVUkwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcgKil0YXJnZXRdOworICAgICAgICBhdXRv
IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpmaW5h
bFVSTF0pOworCisgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlk
UGVyZm9ybVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1
ZXN0LmdldCgpXTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9u
c2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6ZmluYWxVUkwg
TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSk7CiAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgp
XTsKIAogICAgIGlmIChfYnl0ZXMpIHsKQEAgLTQ0NCw0ICs0NzQsMTM3IEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIFNhbWVPcmlnaW5XaW5kb3dPcGVuTm9PcGVuZXIpCiAKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKK1RFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0RnJvbU5ld1dlYlZpZXcp
Cit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6
cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5kbGVyID0g
YWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBbaGFuZGxlciBhZGRSZWRp
cmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMS5odG1sIiB0b1VSTFN0cmluZzpA
InBzb25yZWRpcmVjdGVkOi8vaG9zdC9tYWluMS5odG1sIl07CisgICAgW3dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJw
c29uIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2Vi
Vmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNlcnZlclJlZGlyZWN0
ZWQpOworICAgIHNlcnZlclJlZGlyZWN0ZWQgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChb
d2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3
ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgRVhQRUNUX0ZBTFNFKHNlcnZl
clJlZGlyZWN0ZWQpOworICAgIEVYUEVDVF9FUSgyLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxz
KTsKKyAgICBFWFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7Cit9CisKK1RFU1QoUHJvY2Vz
c1N3YXAsIFNlcnZlclJlZGlyZWN0KQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBSZXRhaW5QdHI8
UFNPTlNjaGVtZT4gaGFuZGxlcjEgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0p
OworICAgIFtoYW5kbGVyMSBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vaG9zdC9t
YWluMS5odG1sIiB0b1VSTFN0cmluZzpAInBzb25yZWRpcmVjdGVkOi8vaG9zdC9tYWluMS5odG1s
Il07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
cjEuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicHNvbiJdOworICAgIFJldGFpblB0cjxQU09OU2NoZW1l
PiBoYW5kbGVyMiA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW3dl
YlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAib3JpZ2luYWxsb2FkIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwor
CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIm9yaWdpbmFsbG9hZDovL2hvc3QvbWFpbjEuaHRtbCJd
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWRB
ZnRlckZpcnN0TG9hZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBF
WFBFQ1RfRVEoMSwgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7CisgICAgRVhQRUNUX0VRKDF1
LCBzZWVuUElEcy5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKCpzZWVuUElEcy5iZWdpbigpID09
IHBpZEFmdGVyRmlyc3RMb2FkKTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjEuaHRtbCJd
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmc2VydmVyUmVkaXJlY3RlZCk7CisgICAgc2VydmVyUmVkaXJlY3RlZCA9
IGZhbHNlOworCisgICAgc2VlblBJRHMuYWRkKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmll
cl0pOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVy
XSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uoc2VydmVyUmVkaXJlY3RlZCk7CisgICAgRVhQRUNUX0VR
KDMsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworICAgIEVYUEVDVF9FUSgydSwgc2VlblBJ
RHMuc2l6ZSgpKTsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QyKQorewor
ICAgIC8vIFRoaXMgdGVzdHMgYSBsb2FkIHRoYXQgKnN0YXJ0cyBvdXQqIHRvIHRoZSBzYW1lIG9y
aWdpbiBhcyB0aGUgcHJldmlvdXMgbG9hZCwgYnV0IHRoZW4gcmVkaXJlY3RzIHRvIGEgbmV3IG9y
aWdpbi4KKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9v
bDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWluUHRyPFBTT05TY2hlbWU+IGhhbmRsZXIx
ID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBbaGFuZGxlcjEgYWRk
UmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL2hvc3QvbWFpbjIuaHRtbCIgdG9VUkxTdHJp
bmc6QCJwc29ucmVkaXJlY3RlZDovL2hvc3QvbWFpbjEuaHRtbCJdOworICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVSTFNjaGVt
ZTpAInBzb24iXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFuZGxlcjIgPSBhZG9wdE5T
KFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIyLmdldCgpIGZvclVSTFNjaGVtZTpAInBzb25yZWRp
cmVjdGVkIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAInBzb246Ly9ob3N0L21haW4xLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlkQWZ0ZXJGaXJzdExvYWQgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgRVhQRUNUX0ZBTFNFKHNlcnZlclJlZGlyZWN0
ZWQpOworICAgIEVYUEVDVF9FUSgxLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAgICBF
WFBFQ1RfRVEoMXUsIHNlZW5QSURzLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoKnNlZW5QSURz
LmJlZ2luKCkgPT0gcGlkQWZ0ZXJGaXJzdExvYWQpOworCisgICAgcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vaG9zdC9t
YWluMi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2ZXJSZWRpcmVjdGVkKTsKKyAgICBzZXJ2ZXJS
ZWRpcmVjdGVkID0gZmFsc2U7CisKKyAgICBzZWVuUElEcy5hZGQoW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHNlZW5QSURzLmFkZChbd2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdKTsKKworICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJSZWRpcmVjdGVkKTsKKyAg
ICBFWFBFQ1RfRVEoMywgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyk7CisgICAgRVhQRUNUX0VR
KDJ1LCBzZWVuUElEcy5zaXplKCkpOworfQorCisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>