<?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>183577</bug_id>
          
          <creation_ts>2018-03-12 13:41:47 -0700</creation_ts>
          <short_desc>Resource Load Statistics: Immediately forward cookie access at user interaction when there&apos;s an opener document</short_desc>
          <delta_ts>2018-03-13 17:38:08 -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=183578</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=183620</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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405871</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 13:41:47 -0700</bug_when>
    <thetext>We should shortcut forwarding of user interaction when there&apos;s an opener document instead of capturing the interaction as &quot;statistics.&quot; This will fix compatibility issues where popups talk to a cross-origin opener document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405872</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 13:42:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/38266987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405901</commentid>
    <comment_count>2</comment_count>
      <attachid>335639</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 14:19:45 -0700</bug_when>
    <thetext>Created attachment 335639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405914</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-12 14:50:03 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:776:73: error: no member named &apos;hasStorageAccess&apos; in &apos;WebCore::NetworkStorageSession&apos;
    bool hasStorageAccess = (frameID &amp;&amp; pageID) ? networkStorageSession.hasStorageAccess(url.string(), partition.string(), frameID.value(), pageID.value()) : false;
                                                  ~~~~~~~~~~~~~~~~~~~~~ ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405919</commentid>
    <comment_count>4</comment_count>
      <attachid>335639</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-12 14:52:30 -0700</bug_when>
    <thetext>Comment on attachment 335639
Patch

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

Looks like the patch is missing NetworkStorageSession changes!

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:371
&gt; +        parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::StorageAccessRequestResult(networkStorageSession-&gt;hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID), contextId), 0);

It looks like you are missing the change to NetworkStorageSession that renames &apos;hasStorageAccessForFrame&apos; -&gt; &apos;hasStorageAccess&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405955</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 16:03:59 -0700</bug_when>
    <thetext>:) I was in the Source/WebKit directory when I uploaded. Sorry about that. New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405957</commentid>
    <comment_count>6</comment_count>
      <attachid>335659</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 16:04:40 -0700</bug_when>
    <thetext>Created attachment 335659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405964</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 16:23:40 -0700</bug_when>
    <thetext>I&apos;ll put the opener check behind #if HAVE(CFNETWORK_STORAGE_PARTITIONING) to fix the GTK issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405965</commentid>
    <comment_count>8</comment_count>
      <attachid>335661</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 16:24:43 -0700</bug_when>
    <thetext>Created attachment 335661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405979</commentid>
    <comment_count>9</comment_count>
      <attachid>335661</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-12 16:45:35 -0700</bug_when>
    <thetext>Comment on attachment 335661
Patch

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

This looks good, but I&apos;m worried you have a mistake in iterator handling in NetworkStorageSession::grantStorageAccess. Can you please fix that before landing?

&gt; Source/WebCore/ChangeLog:12
&gt; +        in the popup.

I would mention that there are manual tests for this, just to make it clear that this is not untested code. :-)

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:324
&gt; +                if (std::optional&lt;uint64_t&gt; openerPageID = openerFrame-&gt;loader().client().pageID()) {

auto openerPageID = ...

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:319
&gt; +        auto it1 = m_pagesGrantedStorageAccess.find(pageID);

auto pagesGrantedIterator = ...

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:325
&gt; +            auto it2 = it1-&gt;value.find(firstPartyDomain);

What if it2 is it1-&gt;value.end()? Crash!

Should you ASSERT here (if it&apos;s unthinkable that will happen)? Or, just check we aren&apos;t past the end of the container before trying to set the value.

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:337
&gt; +        auto it2 = it1-&gt;value.find(frameID.value());

What if it2 is it1-&gt;value.end()? This will crash!

Ditto recommendations above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406019</commentid>
    <comment_count>10</comment_count>
      <attachid>335669</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 18:03:40 -0700</bug_when>
    <thetext>Created attachment 335669
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406020</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-03-12 18:04:49 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #9)
&gt; Comment on attachment 335661 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335661&amp;action=review
&gt; 
&gt; This looks good, but I&apos;m worried you have a mistake in iterator handling in
&gt; NetworkStorageSession::grantStorageAccess. Can you please fix that before
&gt; landing?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        in the popup.
&gt; 
&gt; I would mention that there are manual tests for this, just to make it clear
&gt; that this is not untested code. :-)

Fixed.
 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:324
&gt; &gt; +                if (std::optional&lt;uint64_t&gt; openerPageID = openerFrame-&gt;loader().client().pageID()) {
&gt; 
&gt; auto openerPageID = ...

Fixed.

&gt; &gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:319
&gt; &gt; +        auto it1 = m_pagesGrantedStorageAccess.find(pageID);
&gt; 
&gt; auto pagesGrantedIterator = ...

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:325
&gt; &gt; +            auto it2 = it1-&gt;value.find(firstPartyDomain);
&gt; 
&gt; What if it2 is it1-&gt;value.end()? Crash!
&gt; 
&gt; Should you ASSERT here (if it&apos;s unthinkable that will happen)? Or, just
&gt; check we aren&apos;t past the end of the container before trying to set the value.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:337
&gt; &gt; +        auto it2 = it1-&gt;value.find(frameID.value());
&gt; 
&gt; What if it2 is it1-&gt;value.end()? This will crash!
&gt; 
&gt; Ditto recommendations above.

Fixed.

Thanks, Brent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406036</commentid>
    <comment_count>12</comment_count>
      <attachid>335669</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 19:06:01 -0700</bug_when>
    <thetext>Comment on attachment 335669
Patch for landing

Clearing flags on attachment: 335669

Committed r229569: &lt;https://trac.webkit.org/changeset/229569&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406037</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 19:06:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335639</attachid>
            <date>2018-03-12 14:19:45 -0700</date>
            <delta_ts>2018-03-12 16:04:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183577-20180312141944.patch</filename>
            <type>text/plain</type>
            <size>27176</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjk1NDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE4LTAzLTEyICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljczogSW1tZWRpYXRlbHkgZm9yd2FyZCBjb29raWUgYWNjZXNzIGF0IHVzZXIgaW50ZXJhY3Rp
b24gd2hlbiB0aGVyZSdzIGFuIG9wZW5lciBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zODI2Njk4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6CisgICAgICAgICAg
ICBOb3cgYWxzbyBjaGVja3MgZm9yIGdlbmVyYWwgcGFnZSBhY2Nlc3MuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAgICAgUmVu
YW1lZCBmcm9tIGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lIHNpbmNlIHRoZSBmcmFtZUlEIG5v
dyBpcyBvcHRpb25hbC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgc2luY2Ug
dGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICAgICBSZW5hbWluZyBzaW5jZSB0aGUgZnJhbWVJRCBu
b3cgaXMgb3B0aW9uYWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICAgICBSZW5hbWluZyBzaW5jZSB0aGUgZnJhbWVJRCBub3cg
aXMgb3B0aW9uYWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29r
aWVJbmZvcm1hdGlvbik6CisgICAgICAgICAgICBDb25zZXF1ZW5jZSBvZiBmdW5jdGlvbiByZW5h
bWluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdl
QWNjZXNzRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1pbmcgc2luY2UgdGhl
IGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAg
ICAgUmVuYW1pbmcgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKToKKyAgICAgICAgICAgIEhhbmRsZXIgcmVuYW1pbmcgc2luY2UgdGhlIGZyYW1lSUQgbm93
IGlzIG9wdGlvbmFsLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgICAgIE5ldyBm
dW5jdGlvbiBmb3IgdGhhdCBncmFudHMgY29va2llIGFjY2VzcyB1bmRlciBhIHdob2xlIHBhZ2Uu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgor
ICAgICAgICAgICAgTWVtYmVyIHJlbmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRp
b25hbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgTmV3IG1lc3NhZ2UgcmVjZWl2ZWQgc3RyYWlnaHQg
ZnJvbSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlci4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpOgorICAgICAgICAgICAgUmVu
YW1lZCBhbmQgbWFkZSBmcmFtZUlEIG9wdGlvbmFsLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxi
YWNrKToKKyAgICAgICAgICAgIENvbnNlcXVlbmNlIG9mIHJlbmFtaW5nIGFuZCBtYWtpbmcgZnJh
bWVJRCBvcHRpb25hbC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFt
ZWQgYW5kIG1hZGUgZnJhbWVJRCBvcHRpb25hbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgICAgIE5v
dyBjYWxscyBzZXRHcmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKCkgb24gdGhl
IHNoYXJlZAorICAgICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuCisKIDIw
MTgtMDMtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjExNjQzKTogRGlzbWlzc2luZyBXS0FjdGlvblNoZWV0IHNob3VsZCBu
b3QgYWxzbyBkaXNtaXNzIGl0cyBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBpZiAo
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzUmVxdWVz
dFJlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSwgY29udGV4
dElkKSwgMCk7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSwgY29udGV4dElkKSwgMCk7CiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTM4MSwxMiArMzgxLDEyIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3MKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBj
b250ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVkID0gZmFsc2U7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCBmcmFtZUlELCBwYWdlSUQpOwotICAgICAgICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5oYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlE
b21haW4sIGZyYW1lSUQsIHBhZ2VJRCkpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmdyYW50U3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKTsKKyAgICAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFz
U3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwg
cGFnZUlEKSk7CiAgICAgICAgIGlzU3RvcmFnZUdyYW50ZWQgPSB0cnVlOwogICAgIH0gZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9u
Tm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwog
ICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgVXBkYXRlUHJldmFsZW50RG9t
YWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8U3RyaW5nPiBkb21haW5zVG9QYXJ0aXRpb24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNU
b0Jsb2NrLCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkKICAgICBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJz
dFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBHcmFudFN0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwg
U3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgY29udGV4dElkKQorICAgIEdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlE
b21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgY29udGV4dElkKQogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVyYWN0aW9uKTsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mCiAgICAgYXV0byBlc2NhcGVkRnJhbWVJRCA9IGVzY2FwZUlERm9ySlNPTihmcmFt
ZUlEKTsKICAgICBhdXRvIGVzY2FwZWRQYWdlSUQgPSBlc2NhcGVJREZvckpTT04ocGFnZUlEKTsK
ICAgICBhdXRvIGVzY2FwZWRJZGVudGlmaWVyID0gZXNjYXBlSURGb3JKU09OKGlkZW50aWZpZXIp
OwotICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lID0gKGZyYW1lSUQgJiYgcGFnZUlE
KSA/IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUodXJsLnN0
cmluZygpLCBwYXJ0aXRpb24uc3RyaW5nKCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVl
KCkpIDogZmFsc2U7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gKGZyYW1lSUQgJiYgcGFn
ZUlEKSA/IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzKHVybC5zdHJpbmco
KSwgcGFydGl0aW9uLnN0cmluZygpLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6
IGZhbHNlOwogCiAjZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJl
bC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAu
Li4pIFwKQEAgLTc4MSw3ICs3ODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mCiAKICAgICBMT0NBTF9MT0coUiIoeyAidXJsIjogIiV7cHVibGljfXMiLCkiLCBl
c2NhcGVkVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPQ0FMX0xPRyhSIiggICJwYXJ0aXRpb24i
OiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRQYXJ0aXRpb24udXRmOCgpLmRhdGEoKSk7Ci0gICAg
TE9DQUxfTE9HKFIiKCAgImhhc1N0b3JhZ2VBY2Nlc3MiOiAle3B1YmxpY31zLCkiLCBoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBMT0NBTF9MT0coUiIo
ICAiaGFzU3RvcmFnZUFjY2VzcyI6ICV7cHVibGljfXMsKSIsIGhhc1N0b3JhZ2VBY2Nlc3MgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKICAgICBMT0NBTF9MT0coUiIoICAicmVmZXJlciI6ICIle3B1Ymxp
Y31zIiwpIiwgZXNjYXBlZFJlZmVycmVyLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPQ0FMX0xPRyhS
IiggICJjb29raWVzIjogWykiKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lv
biAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTIgKzE1NCwxMiBAQCBzdGF0
aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdlT3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERh
dGVzOwogfQogCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBi
b29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJlbW92ZVByZXZhbGVudERv
bWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCitXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFu
dFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciwgUmVtb3Zl
UHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21haW5zSGFuZGxlcikKICAgICA6IG1f
c3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdv
cmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1fcGVyc2lzdGVudFN0b3JhZ2UoKnRoaXMs
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGlzRXBoZW1lcmFsID8gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpJc1JlYWRPbmx5OjpZZXMgOiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OklzUmVhZE9ubHk6Ok5vKQogICAgICwg
bV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIo
V1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hh
bmRsZXIpKQogICAgICwgbV9oYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKFdURk1vdmUo
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcikpCi0gICAgLCBtX2dyYW50U3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlcihXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcikpCisgICAgLCBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoV1RGTW92ZShncmFudFN0
b3JhZ2VBY2Nlc3NIYW5kbGVyKSkKICAgICAsIG1fcmVtb3ZlRG9tYWluc0hhbmRsZXIoV1RGTW92
ZShyZW1vdmVEb21haW5zSGFuZGxlcikpCiAgICAgLCBtX2RhaWx5VGFza3NUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1E
YWlseVRhc2tzKQogICAgICwgbV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURk1vdmUodGVz
dGluZ0NhbGxiYWNrKSkKQEAgLTM4MSwxMCArMzgxLDI4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXEKIAogICAgICAgICBzdWJGcmFtZVN0YXRpc3RpYy50aW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKys7CiAKLSAgICAgICAgbV9n
cmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoc3ViRnJhbWVQcmltYXJ5RG9tYWluLCB0
b3BGcmFtZVByaW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3ViRnJhbWVQcmltYXJ5RG9t
YWluLCB0b3BGcmFtZVByaW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIH0pOwogfQotICAgIAorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoU3RyaW5nJiYgZG9tYWluUmVj
ZWl2aW5nVXNlckludGVyYWN0aW9uLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFN0cmluZyYmIG9w
ZW5lckRvbWFpbikKK3sKKyAgICBBU1NFUlQoZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9u
ICE9IG9wZW5lckRvbWFpbik7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAg
ICBpZiAoZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uID09IG9wZW5lckRvbWFpbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9u
U3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihkb21h
aW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24pOworICAgIGlmICghc2hvdWxkUGFydGl0aW9uQ29v
a2llcyhkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb25TdGF0aXN0aWMpICYmICFzaG91bGRC
bG9ja0Nvb2tpZXMoZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uU3RhdGlzdGljKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKFdURk1vdmUo
ZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBz
dGQ6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgW10oYm9vbCkgeyB9KTsKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBSRUxFQVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dnaW5nRW5hYmxl
ZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiR3JhbnQgc3RvcmFnZSBhY2Nlc3MgZm9y
ICVzIHVuZGVyIG9wZW5lciAlcy4iLCBkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24udXRm
OCgpLmRhdGEoKSwgb3BlbmVyRG9tYWluLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCit9CisKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vi
c2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9u
IDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMSArNjMsMTEgQEAgY2xhc3MgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbgogcHVibGljOgogICAgIHVzaW5nIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpPjsK
ICAgICB1c2luZyBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKT47Ci0gICAgdXNpbmcgR3JhbnRT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3
YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+OworICAgIHVzaW5nIEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50
ZWQpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNpbmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRs
ZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0
YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0
IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
V1RGOjpWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBb
XShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJikgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURv
bWFpbnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCisgICAg
c3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29u
c3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9
IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIm
JiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVE
b21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0Nh
bGxiYWNrKSwgaXNFcGhlbWVyYWwsIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyKSwgV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIp
LCBXVEZNb3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBpc0VwaGVtZXJhbCwgV1RG
TW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRs
ZXIpLCBXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkp
OwogICAgIH0KIAogICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKQEAgLTg1
LDYgKzg1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYm
IHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2Fs
bGJhY2spOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVI
b3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7Cisg
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihTdHJpbmcmJiBkb21haW5SZWNl
aXZpbmdVc2VySW50ZXJhY3Rpb24sIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgU3RyaW5nJiYgb3Bl
bmVyRG9tYWluKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ2FsbGJhY2soYm9vbCB3
YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgdm9pZCBwcm9jZXNzV2lsbE9w
ZW5Db25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVjdGlvbiYpOwpAQCAtMTUw
LDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJp
bmcmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29u
c3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJh
Y2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciYmLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYs
IEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmLCBSZW1vdmVQcmV2YWxlbnREb21h
aW5zSGFuZGxlciYmKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3Qg
U3RyaW5nJiwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ss
IGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxv
Y2tDb29raWVzSGFuZGxlciYmLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIEdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXImJiwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIm
Jik7CiAKICAgICB2b2lkIHJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKQEAgLTIxMCw3ICsyMTEsNyBAQCBwcml2YXRlOgogCiAgICAgVXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyIG1fdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyOwogICAgIEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgbV9oYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVy
OwotICAgIEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciBtX2dyYW50U3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlcjsKKyAgICBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyIG1fZ3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcjsKICAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxl
ciBtX3JlbW92ZURvbWFpbnNIYW5kbGVyOwogCiAgICAgV2FsbFRpbWUgbV9lbmRPZkdyYW5kZmF0
aGVyaW5nVGltZXN0YW1wOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw1
ICsyMSw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSB7CisgICAgR3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoU3RyaW5n
IGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBT
dHJpbmcgb3BlbmVyRG9tYWluKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBvcmlnaW5zKQogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjAs
MTIgKzQyMCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2NlCiAg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQsIGNvbnRleHRJZCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdy
YW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGNvbnRleHRJZCA9IG5leHRS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
dG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R3JhbnRTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwg
ZnJhbWVJRCwgcGFnZUlELCBjb250ZXh0SWQpLCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6R3JhbnRTdG9yYWdlQWNjZXNzKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSwgMCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoYm9v
bCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNp
b24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogI2lm
IEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKLSAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0
eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKICNlbmRpZgogCiAg
ICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMDgsMTAgKzEyMDgsMTAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9y
YWdlQWNjZQogICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+Z2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMobV9zZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAot
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJv
Y2VzcygpLT5ncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShtX3Nlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+Z3JhbnRTdG9yYWdl
QWNjZXNzKG1fc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
cykKQEAgLTE0NDIsOCArMTQ0Miw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVz
b3VyY2VMb2EKICAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVp
dGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKICAgICB9LCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vz
cyk+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0gICAgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykgewotICAgICAg
ICBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0
UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0s
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spIHsKKyAgICAgICAgZ3JhbnRT
dG9yYWdlQWNjZXNzSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9S
ZW1vdmUpIHsKICAgICAgICAgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21haW5zVG9SZW1vdmUp
OwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2Nr
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
LCBTaG91bGRDbGVhckZpcnN0KTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQg
Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spOworICAg
IHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50
RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAgICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29s
KT4mJiBjYWxsYmFjayk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsMTAgQEAgV2ViUHJvY2Vzczo6
V2ViUHJvY2VzcygpCiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCisgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldEdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyQ2FsbGJhY2soW3RoaXNdIChjb25zdCBTdHJpbmcmIGRvbWFpblJlY2VpdmluZ1VzZXJJbnRl
cmFjdGlvbiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBTdHJpbmcmIG9wZW5lckRvbWFp
bikgeworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OkdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwgb3BlbmVyUGFnZUlELCBvcGVuZXJE
b21haW4pLCAwKTsKKyAgICB9KTsKKyAgICAKICAgICBHaWdhY2FnZTo6ZGlzYWJsZURpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335659</attachid>
            <date>2018-03-12 16:04:40 -0700</date>
            <delta_ts>2018-03-12 16:24:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183577-20180312160439.patch</filename>
            <type>text/plain</type>
            <size>41347</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTAzLTEyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogSW1tZWRpYXRlbHkgZm9yd2FyZCBjb29raWUgYWNjZXNzIGF0IHVzZXIgaW50ZXJh
Y3Rpb24gd2hlbiB0aGVyZSdzIGFuIG9wZW5lciBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zODI2Njk4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBXZWJLaXRUZXN0UnVubmVy
OgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTc4
CisgICAgICAgIFRoZSBldmVudCBzZW5kZXIgdHJpZ2dlcnMgZ2VzdHVyZXMgaW4gdGhlIG9wZW5l
ciByYXRoZXIgdGhhbgorICAgICAgICBpbiB0aGUgcG9wdXAuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKToK
KyAgICAgICAgICAgIENsZWFycyB0aGUgbmV3IG1fcHJpbWFyeURvbWFpbnNHcmFudGVkUGFnZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNHcmFu
dGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0SGFzR3JhbnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAgICAgQWRkZWQgbWVtYmVyIG1fcHJpbWFyeURvbWFpbnNH
cmFudGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2VzcworICAgICAgICAgICAgd2hlcmUgd2Ugc3Rv
cmUgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiBncmFudGVkIGFjY2Vzcy4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNldEdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlv
bldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24pOgorICAgICAgICAgICAgTm93IGNoZWNrcyBpZiB0
aGVyZSBpcyBhIGNyb3NzLW9yaWdpbiBvcGVuZXIgYW5kIGlmIHNvLCBpbW1lZGlhdGVseQorICAg
ICAgICAgICAgZ3JhbnRzIGNvb2tpZSBhY2Nlc3MgdG8gdGhlIHBvcHVwJ3MgZG9tYWluIGlmIGl0
IGlzIHBhcnRpdGlvbmVkIG9yCisgICAgICAgICAgICBibG9ja2VkLiAKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAgICAgQWRkZWQgbWVtYmVyIG1fcGFnZXNH
cmFudGVkU3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAg
ICAgICAgICAgUmVuYW1lZCBmcm9tIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSBzaW5jZSB0aGUg
ZnJhbWVJRCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBSZW5hbWVkIGZyb20g
Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlv
bmFsLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9y
YWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKToKKyAgICAgICAgICAgIE5vdyByZW1vdmVzIHRo
ZSBwYWdlSUQgZW50cnkgaW4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzaW5jZSB0aGUgZnJhbWVJRCBu
b3cgaXMgb3B0aW9uYWwuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFt
ZWQgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorCiAyMDE4LTAzLTEyICBEYW55
YW8gV2FuZyAgPGRhbnlhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgcXVlcnkgYW5k
IGZyYWdtZW50IGV4Y2VwdGlvbiB0byBoaXN0b3J5IEFQSSdzIHVuaXF1ZSBvcmlnaW4gcmVzdHJp
Y3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyOTQ3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw2
ICs2ODEsMTAgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAgICAKICAg
ICAgICAgbV9jc3NDYW52YXNFbGVtZW50cy5jbGVhcigpOwogICAgICAgICAKKyNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICAgICAgbV9wcmltYXJ5RG9tYWluc0dy
YW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CisjZW5kaWYKKwogICAgICAg
ICBjb21tb25UZWFyZG93bigpOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNzYyMiw2ICs3NjI2LDE3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWcKIHsKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyh2
YWx1ZSk7CiB9CisKK2Jvb2wgRG9jdW1lbnQ6Omhhc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKFN0cmluZyYgcHJpbWFyeURvbWFpbikKK3sKKyAgICByZXR1cm4gbV9wcmltYXJ5RG9t
YWluc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzLmNvbnRhaW5zKHByaW1hcnlEb21h
aW4pOworfQorCit2b2lkIERvY3VtZW50OjpzZXRIYXNHcmFudGVkUGFnZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcyhTdHJpbmcmIHByaW1hcnlEb21haW4pCit7CisgICAgbV9wcmltYXJ5RG9tYWluc0dy
YW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzLmFkZChwcmltYXJ5RG9tYWluKTsKK30KKwog
I2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiYmIGxpc3RlbmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJl
dmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDE3LDYgKzE0MTcsMTEgQEAgcHVibGljOgogCiAgICAgSlNDOjpUaHJlYWRM
b2NhbENhY2hlJiB0aHJlYWRMb2NhbENhY2hlKCk7CiAKKyNpZiBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykKKyAgICBib29sIGhhc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKFN0cmluZyYgcHJpbWFyeURvbWFpbik7CisgICAgdm9pZCBzZXRIYXNHcmFudGVkUGFn
ZVNwZWNpZmljU3RvcmFnZUFjY2VzcyhTdHJpbmcmIHByaW1hcnlEb21haW4pOworI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAx
LCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBj
b25zdHJ1Y3Rpb25GbGFncyA9IDApOwpAQCAtMTkwMyw2ICsxOTA4LDEwIEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIqPiBtX2FwcGxpY2F0aW9u
U3RhdGVDaGFuZ2VMaXN0ZW5lcnM7CiAgICAgCiAgICAgUmVmUHRyPEpTQzo6VGhyZWFkTG9jYWxD
YWNoZT4gbV90aHJlYWRMb2NhbENhY2hlOworCisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCisgICAgSGFzaFNldDxTdHJpbmc+IG1fcHJpbWFyeURvbWFpbnNHcmFudGVk
UGFnZVNwZWNpZmljU3RvcmFnZUFjY2VzczsKKyNlbmRpZgogfTsKIAogRWxlbWVudCogZXZlbnRU
YXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjI5NDc0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCwxMiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXROb3RpZmljYXRpCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZp
Y2F0aW9uQ2FsbGJhY2spOwogfQogCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBjb25zdCBTdHJpbmcmIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCit7CisgICAg
QVNTRVJUKCFtX2dyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOworICAgIG1f
Z3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OworfQorCiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAg
IDogbV9ub3RpZmljYXRpb25UaW1lcigqdGhpcywgJlJlc291cmNlTG9hZE9ic2VydmVyOjpub3Rp
ZnlPYnNlcnZlcikKIHsKQEAgLTMxMSw2ICszMTcsMjMgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nVXNlckludGVyYQogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBuZXdUaW1lOwog
ICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBuZXdUaW1lOwog
CisgICAgaWYgKGF1dG8qIG9wZW5lciA9IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLm9wZW5l
cigpKSB7CisgICAgICAgIGlmIChhdXRvKiBvcGVuZXJEb2N1bWVudCA9IG9wZW5lci0+ZG9jdW1l
bnQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckZyYW1lID0gb3BlbmVyRG9jdW1l
bnQtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gb3BlbmVyUGFnZUlEID0gb3BlbmVyRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQt
PnVybCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIG9wZW5lclByaW1hcnlEb21haW4gPSBw
cmltYXJ5RG9tYWluKG9wZW5lclVybCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21haW4g
IT0gb3BlbmVyUHJpbWFyeURvbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW9wZW5l
ckRvY3VtZW50LT5oYXNHcmFudGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyhkb21haW4pCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJV
cmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVu
ZXJEb2N1bWVudC0+c2V0SGFzR3JhbnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoZG9tYWlu
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXJDYWxsYmFjayhkb21haW4sIG9wZW5lclBhZ2VJRC52YWx1ZSgpLCBvcGVuZXJQcmltYXJ5RG9t
YWluKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3RvcCgp
OwogICAgIG5vdGlmeU9ic2VydmVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEs
NiArNjEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NG
b3JPcmlnaW4oY29uc3QgU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5v
dGlmaWNhdGlvbkNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdyYW50U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG5vdGlmeU9ic2VydmVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclN0
YXRlKCk7CkBAIC04Miw2ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1h
cDsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmKT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoU3Ry
aW5nLCB1aW50NjRfdCwgU3RyaW5nKT4gbV9ncmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNh
bGxiYWNrOwogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7CiAjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHVp
bnQ2NF90IG1fbG9nZ2luZ0NvdW50ZXIgeyAwIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlz
aW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw5ICsxMDQsOSBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvb2tpZVN0b3JhZ2VQYXJ0aXRpb24oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRp
b24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBjbGVhckZpcnN0
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9y
QWxsRnJhbWVzT25QYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAjZW5kaWYKQEAgLTE4Miw2ICsxODIs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3RvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zVG9QYXJ0aXRpb247CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrOwogICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hNYXA8
dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1f
ZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fcGFnZXNHcmFudGVkU3RvcmFn
ZUFjY2VzczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBTdHJpbmcgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVTdG9yCiAgICAgaWYgKGZpcnN0UGFydHlEb21haW4gPT0gcmVzb3VyY2VEb21h
aW4pCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgaWYgKGZyYW1lSUQgJiYg
cGFnZUlEICYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSkpCisgICAgaWYgKHBh
Z2VJRCAmJiBoYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWlu
LCBmcmFtZUlELCBwYWdlSUQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCiAgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW47CkBAIC0yODEsMTkgKzI4MSwyNSBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsCiAgICAgfQogfQogCi1ib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0
UGFydHlEb21haW4pOworICAgIGlmIChmcmFtZUlEKSB7CisgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CisgICAgICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0b3IgIT0gbV9mcmFtZXNHcmFudGVkU3Rv
cmFnZUFjY2Vzcy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBpdCA9IGZyYW1lc0dyYW50ZWRJ
dGVyYXRvci0+dmFsdWUuZmluZChmcmFtZUlELnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKGl0
ICE9IGZyYW1lc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJl
c291cmNlRG9tYWluKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQogCi0gICAgYXV0byBpdDEgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQo
cGFnZUlEKTsKLSAgICBpZiAoaXQxID09IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5k
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIHBhZ2VzR3JhbnRlZEl0ZXJhdG9y
ID0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKKyAgICBpZiAocGFn
ZXNHcmFudGVkSXRlcmF0b3IgIT0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKSB7
CisgICAgICAgIGF1dG8gaXQgPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmaXJz
dFBhcnR5RG9tYWluKTsKKyAgICAgICAgaWYgKGl0ICE9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52
YWx1ZS5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW4pCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBhdXRvIGl0MiA9IGl0MS0+dmFsdWUuZmluZChmcmFt
ZUlEKTsKLSAgICBpZiAoaXQyID09IGl0MS0+dmFsdWUuZW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICByZXR1cm4gaXQyLT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbjsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSBjb25zdApAQCAtMzA3LDE3ICszMTMsMjgg
QEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZQogICAgIHJldHVybiBl
bnRyaWVzOwogfQogICAgIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50U3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJp
bmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICBVTlVT
RURfUEFSQU0oZmlyc3RQYXJ0eURvbWFpbik7CisgICAgaWYgKCFmcmFtZUlEKSB7CisgICAgICAg
IGF1dG8gaXQxID0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKKyAg
ICAgICAgaWYgKGl0MSA9PSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKKyAg
ICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGVudHJ5OworICAgICAgICAgICAgZW50
cnkuYWRkKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKKyAgICAgICAgICAgIG1f
cGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5hZGQocGFnZUlELCBlbnRyeSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBhdXRvIGl0MiA9IGl0MS0+dmFsdWUuZmluZChmaXJzdFBhcnR5
RG9tYWluKTsKKyAgICAgICAgICAgIGl0Mi0+dmFsdWUgPSByZXNvdXJjZURvbWFpbjsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byBpdDEgPSBtX2ZyYW1lc0dy
YW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKICAgICBpZiAoaXQxID09IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKICAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwg
U3RyaW5nLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBlbnRyeTsKLSAgICAgICAgZW50cnkuYWRkKGZyYW1l
SUQsIHJlc291cmNlRG9tYWluKTsKKyAgICAgICAgZW50cnkuYWRkKGZyYW1lSUQudmFsdWUoKSwg
cmVzb3VyY2VEb21haW4pOwogICAgICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmFk
ZChwYWdlSUQsIGVudHJ5KTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGl0MiA9IGl0MS0+
dmFsdWUuZmluZChmcmFtZUlEKTsKKyAgICAgICAgYXV0byBpdDIgPSBpdDEtPnZhbHVlLmZpbmQo
ZnJhbWVJRC52YWx1ZSgpKTsKICAgICAgICAgaXQyLT52YWx1ZSA9IHJlc291cmNlRG9tYWluOwog
ICAgIH0KIH0KQEAgLTMzMyw2ICszNTAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdl
QWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHsKKyAgICBtX3BhZ2Vz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CiAgICAgbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyOTU0NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNTQgQEAKKzIwMTgtMDMtMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBJbW1lZGlhdGVseSBmb3J3
YXJkIGNvb2tpZSBhY2Nlc3MgYXQgdXNlciBpbnRlcmFjdGlvbiB3aGVuIHRoZXJlJ3MgYW4gb3Bl
bmVyIGRvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODM1NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4MjY2OTg3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAgICAgIE5vdyBhbHNvIGNoZWNrcyBmb3Ig
Z2VuZXJhbCBwYWdlIGFjY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omdy
YW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBSZW5hbWVkIGZyb20gZ3JhbnRTdG9yYWdl
QWNjZXNzRm9yRnJhbWUgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOiBE
ZWxldGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzaW5jZSB0aGUgZnJhbWVJRCBub3cgaXMgb3B0
aW9uYWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgICAgIFJlbmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAg
ICAgIFJlbmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKToKKyAgICAg
ICAgICAgIENvbnNlcXVlbmNlIG9mIGZ1bmN0aW9uIHJlbmFtaW5nLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgICAgICBSZW5hbWluZyBzaW5jZSB0aGUgZnJhbWVJRCBub3cgaXMgb3B0aW9u
YWwuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgICAgICBSZW5hbWluZyBzaW5jZSB0aGUg
ZnJhbWVJRCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAgICAgSGFu
ZGxlciByZW5hbWluZyBzaW5jZSB0aGUgZnJhbWVJRCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAgICAgTmV3IGZ1bmN0aW9uIGZvciB0aGF0IGdyYW50
cyBjb29raWUgYWNjZXNzIHVuZGVyIGEgd2hvbGUgcGFnZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICAgICBNZW1iZXIgcmVu
YW1pbmcgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW46CisgICAgICAg
ICAgICBOZXcgbWVzc2FnZSByZWNlaXZlZCBzdHJhaWdodCBmcm9tIFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9y
YWdlQWNjZXNzSGFuZGxlcik6CisgICAgICAgICAgICBSZW5hbWVkIGFuZCBtYWRlIGZyYW1lSUQg
b3B0aW9uYWwuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAgICAgQ29u
c2VxdWVuY2Ugb2YgcmVuYW1pbmcgYW5kIG1ha2luZyBmcmFtZUlEIG9wdGlvbmFsLgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1lZCBhbmQgbWFkZSBmcmFtZUlEIG9w
dGlvbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYlBy
b2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAgICAgTm93IGNhbGxzIHNldEdyYW50U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soKSBvbiB0aGUgc2hhcmVkCisgICAgICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlci4KKwogMjAxOC0wMy0xMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMTE2NDMp
OiBEaXNtaXNzaW5nIFdLQWN0aW9uU2hlZXQgc2hvdWxkIG5vdCBhbHNvIGRpc21pc3MgaXRzIHBy
ZXNlbnRpbmcgdmlldyBjb250cm9sbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnRE
b21hCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgY29udGV4dElkKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
Ci0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHJlc291cmNlRG9tYWluLCBmaXJzdFBh
cnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKKyAgICAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6U3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNT
dG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQpAQCAtMzgxLDEyICszODEsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0
QWxsU3RvcmFnZUFjY2VzcwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgY29udGV4dElkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBib29s
IGlzU3RvcmFnZUdyYW50ZWQgPSBmYWxzZTsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z3JhbnRTdG9yYWdlQWNjZXNzRm9y
RnJhbWUocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCk7
Ci0gICAgICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlE
KSk7CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z3JhbnRTdG9yYWdlQWNjZXNzKHJl
c291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpOworICAgICAg
ICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNl
RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpKTsKICAgICAgICAgaXNT
dG9yYWdlR3JhbnRlZCA9IHRydWU7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0
aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRD
bGVhckZpcnN0KTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxl
bnREb21haW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmUKICAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2Nr
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNU
b1BhcnRpdGlvbiwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxTdHJpbmc+
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0
KQogICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y29udGV4dElkKQotICAgIEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQp
CisgICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5n
IHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCiAg
ICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rv
cjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24pOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzczLDcgKzc3Myw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmYKICAgICBhdXRvIGVz
Y2FwZWRGcmFtZUlEID0gZXNjYXBlSURGb3JKU09OKGZyYW1lSUQpOwogICAgIGF1dG8gZXNjYXBl
ZFBhZ2VJRCA9IGVzY2FwZUlERm9ySlNPTihwYWdlSUQpOwogICAgIGF1dG8gZXNjYXBlZElkZW50
aWZpZXIgPSBlc2NhcGVJREZvckpTT04oaWRlbnRpZmllcik7Ci0gICAgYm9vbCBoYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWUgPSAoZnJhbWVJRCAmJiBwYWdlSUQpID8gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1cmwuc3RyaW5nKCksIHBhcnRpdGlvbi5zdHJp
bmcoKSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSkgOiBmYWxzZTsKKyAgICBib29s
IGhhc1N0b3JhZ2VBY2Nlc3MgPSAoZnJhbWVJRCAmJiBwYWdlSUQpID8gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmhhc1N0b3JhZ2VBY2Nlc3ModXJsLnN0cmluZygpLCBwYXJ0aXRpb24uc3RyaW5nKCks
IGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCkpIDogZmFsc2U7CiAKICNkZWZpbmUgTE9D
QUxfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gJXM6OiIgZm10LCBsb2dnZWRPYmplY3QsIGxhYmVsLnV0ZjgoKS5kYXRhKCksICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIExPQ0FMX0xPRyhzdHIsIC4uLikgXApAQCAtNzgxLDcgKzc4MSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmYKIAogICAgIExPQ0FM
X0xPRyhSIih7ICJ1cmwiOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRVUkwudXRmOCgpLmRhdGEo
KSk7CiAgICAgTE9DQUxfTE9HKFIiKCAgInBhcnRpdGlvbiI6ICIle3B1YmxpY31zIiwpIiwgZXNj
YXBlZFBhcnRpdGlvbi51dGY4KCkuZGF0YSgpKTsKLSAgICBMT0NBTF9MT0coUiIoICAiaGFzU3Rv
cmFnZUFjY2VzcyI6ICV7cHVibGljfXMsKSIsIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSA/ICJ0
cnVlIiA6ICJmYWxzZSIpOworICAgIExPQ0FMX0xPRyhSIiggICJoYXNTdG9yYWdlQWNjZXNzIjog
JXtwdWJsaWN9cywpIiwgaGFzU3RvcmFnZUFjY2VzcyA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAg
IExPQ0FMX0xPRyhSIiggICJyZWZlcmVyIjogIiV7cHVibGljfXMiLCkiLCBlc2NhcGVkUmVmZXJy
ZXIudXRmOCgpLmRhdGEoKSk7CiAgICAgTE9DQUxfTE9HKFIiKCAgImNvb2tpZXMiOiBbKSIpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1NCwxMiArMTU0LDEyIEBAIHN0YXRpYyBWZWN0b3I8T3BlcmF0aW5nRGF0
ZT4gbWVyZ2VPcGVyYXQKICAgICByZXR1cm4gbWVyZ2VkRGF0ZXM7CiB9CiAKLVdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciwgSGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXIsIEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGdyYW50U3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVE
b21haW5zSGFuZGxlcikKK1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJh
Y2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIm
JiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxl
ciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyKQogICAgIDogbV9zdGF0aXN0aWNzUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEg
UXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkp
KQogICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSwgaXNFcGhlbWVyYWwgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2U6OklzUmVhZE9ubHk6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZTo6SXNSZWFkT25seTo6Tm8pCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVudERvbWFp
bnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAgLCBtX2hhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyKSkKLSAgICAsIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKFdU
Rk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkKKyAgICAsIG1fZ3JhbnRT
dG9yYWdlQWNjZXNzSGFuZGxlcihXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpKQog
ICAgICwgbV9yZW1vdmVEb21haW5zSGFuZGxlcihXVEZNb3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVy
KSkKICAgICAsIG1fZGFpbHlUYXNrc1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpCiAgICAgLCBtX3N0
YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spKQpAQCAtMzgx
LDEwICszODEsMjggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcQog
CiAgICAgICAgIHN1YkZyYW1lU3RhdGlzdGljLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1N0b3JhZ2VBY2Nlc3NBUEkrKzsKIAotICAgICAgICBtX2dyYW50U3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihzdWJGcmFtZVByaW1hcnlEb21haW4sIHRvcEZyYW1lUHJpbWFyeURvbWFpbiwg
ZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIG1fZ3JhbnRTdG9y
YWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZVByaW1hcnlEb21haW4sIHRvcEZyYW1lUHJpbWFyeURv
bWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9Ci0g
ICAgCisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihTdHJpbmcmJiBkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24s
IHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgU3RyaW5nJiYgb3BlbmVyRG9tYWluKQoreworICAgIEFT
U0VSVChkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24gIT0gb3BlbmVyRG9tYWluKTsKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChkb21haW5SZWNlaXZpbmdV
c2VySW50ZXJhY3Rpb24gPT0gb3BlbmVyRG9tYWluKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb25TdGF0aXN0aWMgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFj
dGlvbik7CisgICAgaWYgKCFzaG91bGRQYXJ0aXRpb25Db29raWVzKGRvbWFpblJlY2VpdmluZ1Vz
ZXJJbnRlcmFjdGlvblN0YXRpc3RpYykgJiYgIXNob3VsZEJsb2NrQ29va2llcyhkb21haW5SZWNl
aXZpbmdVc2VySW50ZXJhY3Rpb25TdGF0aXN0aWMpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoV1RGTW92ZShkb21haW5SZWNlaXZpbmdVc2VySW50
ZXJhY3Rpb24pLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFn
ZUlELCBbXShib29sKSB7IH0pOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJFTEVB
U0VfTE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWcsICJHcmFudCBzdG9yYWdlIGFjY2VzcyBmb3IgJXMgdW5kZXIgb3BlbmVyICVzLiIs
IGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbi51dGY4KCkuZGF0YSgpLCBvcGVuZXJEb21h
aW4udXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDExICs2MywxMSBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgZmluCiBwdWJsaWM6CiAgICAgdXNpbmcgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk+OwogICAgIHVzaW5nIEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vz
cyk+JiYgY2FsbGJhY2spPjsKLSAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNr
KT47CisgICAgdXNpbmcgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spPjsKICAg
ICB1c2luZyBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47Ci0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdD
YWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+Jiwg
U2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYg
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
KSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGdyYW50U3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIFJlbW92
ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29u
c3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYpIHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGlu
Z0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0
aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0
aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4m
LCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIm
JiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciYmIGdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1v
dmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNv
bnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBpc0VwaGVtZXJhbCwg
V1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hh
bmRsZXIpLCBXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3Zl
KGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWlu
c0hhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3Zl
KHRlc3RpbmdDYWxsYmFjayksIGlzRXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxl
ciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgfldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcm
JiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1l
SG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKFN0cmluZyYmIGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwg
dWludDY0X3Qgb3BlbmVyUGFnZUlELCBTdHJpbmcmJiBvcGVuZXJEb21haW4pOwogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDYWxsYmFjayhib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAKICAgICB2b2lkIHByb2Nlc3NXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJik7CkBAIC0xNTAsNyArMTUxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwg
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYs
IEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOworICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBk
YXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxl
ciYmLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmKTsKIAogICAgIHZvaWQgcmVtb3Zl
RGF0YVJlY29yZHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIApAQCAtMjEwLDcgKzIx
MSw3IEBAIHByaXZhdGU6CiAKICAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llc0hhbmRsZXIgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llc0hhbmRsZXI7CiAgICAgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
ciBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXI7Ci0gICAgR3JhbnRTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyOwor
ICAgIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVy
OwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyIG1fcmVtb3ZlRG9tYWluc0hhbmRs
ZXI7CiAKICAgICBXYWxsVGltZSBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjk0NzQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDUgKzIxLDYgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHsKKyAgICBH
cmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihTdHJpbmcgZG9tYWluUmVjZWl2aW5nVXNlcklu
dGVyYWN0aW9uLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFN0cmluZyBvcGVuZXJEb21haW4pCiAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+IG9yaWdpbnMpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9u
IDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCwxMiArNDIwLDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2UKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSwgMCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogewogICAgIGF1dG8gY29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
dGV4dElkKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNh
bGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRl
eHRJZCksIDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3Jh
Z2VBY2Nlc3Moc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBjb250ZXh0SWQpLCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFH
RV9QQVJUSVRJT05JTkcpCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spOwogI2VuZGlmCiAKICAgICB2b2lkIHdyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShy
ZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwOCwxMCArMTIwOCwxMCBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2NlCiAgICAgICAgIHByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhtX3Nl
c3Npb25JRCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3Jh
bnRlZCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzc0hhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYm
IGNhbGxiYWNrKQogewogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPmdyYW50U3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKG1fc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFp
biwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHByb2Nlc3NQ
b29sLT5uZXR3b3JrUHJvY2VzcygpLT5ncmFudFN0b3JhZ2VBY2Nlc3MobV9zZXNzaW9uSUQsIHJl
c291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVQcmV2YWxlbnRE
b21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQpAQCAtMTQ0Miw4ICsxNDQyLDgg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogICAgICAgICB1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhkb21haW5zVG9QYXJ0
aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IHNob3VsZENsZWFyRmlyc3QpOwogICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykgewogICAg
ICAgICBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJz
dFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICB9
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKSB7Ci0gICAgICAgIGdyYW50U3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwg
cGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFu
dGVkKT4mJiBjYWxsYmFjaykgeworICAgICAgICBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHJl
c291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSkgewogICAgICAgICByZW1v
dmVQcmV2YWxlbnREb21haW5zKGRvbWFpbnNUb1JlbW92ZSk7CiAgICAgfSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpOwog
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
aGFzQWNjZXNzKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYp
OwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3NIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBj
YWxsYmFjayk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFj
ayk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3Qs
IFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyOTQ3NCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA2LDYgKzIwNiwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAgICAg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKHN0
YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7CiAKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKCkuc2V0R3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKGNv
bnN0IFN0cmluZyYgZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIGNvbnN0IFN0cmluZyYgb3BlbmVyRG9tYWluKSB7CisgICAgICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6R3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoZG9tYWluUmVjZWl2aW5nVXNl
ckludGVyYWN0aW9uLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOworICAgIH0pOwor
ICAgIAogICAgIEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNo
b3VsZEJlRW5hYmxlZCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335661</attachid>
            <date>2018-03-12 16:24:43 -0700</date>
            <delta_ts>2018-03-12 18:03:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183577-20180312162443.patch</filename>
            <type>text/plain</type>
            <size>41397</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTAzLTEyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogSW1tZWRpYXRlbHkgZm9yd2FyZCBjb29raWUgYWNjZXNzIGF0IHVzZXIgaW50ZXJh
Y3Rpb24gd2hlbiB0aGVyZSdzIGFuIG9wZW5lciBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zODI2Njk4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBXZWJLaXRUZXN0UnVubmVy
OgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTc4
CisgICAgICAgIFRoZSBldmVudCBzZW5kZXIgdHJpZ2dlcnMgZ2VzdHVyZXMgaW4gdGhlIG9wZW5l
ciByYXRoZXIgdGhhbgorICAgICAgICBpbiB0aGUgcG9wdXAuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKToK
KyAgICAgICAgICAgIENsZWFycyB0aGUgbmV3IG1fcHJpbWFyeURvbWFpbnNHcmFudGVkUGFnZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNHcmFu
dGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0SGFzR3JhbnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAgICAgQWRkZWQgbWVtYmVyIG1fcHJpbWFyeURvbWFpbnNH
cmFudGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2VzcworICAgICAgICAgICAgd2hlcmUgd2Ugc3Rv
cmUgZG9tYWlucyB0aGF0IGhhdmUgYmVlbiBncmFudGVkIGFjY2Vzcy4KKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNldEdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlv
bldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24pOgorICAgICAgICAgICAgTm93IGNoZWNrcyBpZiB0
aGVyZSBpcyBhIGNyb3NzLW9yaWdpbiBvcGVuZXIgYW5kIGlmIHNvLCBpbW1lZGlhdGVseQorICAg
ICAgICAgICAgZ3JhbnRzIGNvb2tpZSBhY2Nlc3MgdG8gdGhlIHBvcHVwJ3MgZG9tYWluIGlmIGl0
IGlzIHBhcnRpdGlvbmVkIG9yCisgICAgICAgICAgICBibG9ja2VkLiAKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAgICAgQWRkZWQgbWVtYmVyIG1fcGFnZXNH
cmFudGVkU3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZVBhcnRpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MgY29uc3QpOgorICAg
ICAgICAgICAgUmVuYW1lZCBmcm9tIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSBzaW5jZSB0aGUg
ZnJhbWVJRCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBSZW5hbWVkIGZyb20g
Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlv
bmFsLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9y
YWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKToKKyAgICAgICAgICAgIE5vdyByZW1vdmVzIHRo
ZSBwYWdlSUQgZW50cnkgaW4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzaW5jZSB0aGUgZnJhbWVJRCBu
b3cgaXMgb3B0aW9uYWwuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFt
ZWQgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorCiAyMDE4LTAzLTEyICBEYW55
YW8gV2FuZyAgPGRhbnlhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgcXVlcnkgYW5k
IGZyYWdtZW50IGV4Y2VwdGlvbiB0byBoaXN0b3J5IEFQSSdzIHVuaXF1ZSBvcmlnaW4gcmVzdHJp
Y3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyOTQ3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw2
ICs2ODEsMTAgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAgICAKICAg
ICAgICAgbV9jc3NDYW52YXNFbGVtZW50cy5jbGVhcigpOwogICAgICAgICAKKyNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICAgICAgbV9wcmltYXJ5RG9tYWluc0dy
YW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CisjZW5kaWYKKwogICAgICAg
ICBjb21tb25UZWFyZG93bigpOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNzYyMiw2ICs3NjI2LDE3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWcKIHsKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyh2
YWx1ZSk7CiB9CisKK2Jvb2wgRG9jdW1lbnQ6Omhhc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKFN0cmluZyYgcHJpbWFyeURvbWFpbikKK3sKKyAgICByZXR1cm4gbV9wcmltYXJ5RG9t
YWluc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzLmNvbnRhaW5zKHByaW1hcnlEb21h
aW4pOworfQorCit2b2lkIERvY3VtZW50OjpzZXRIYXNHcmFudGVkUGFnZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcyhTdHJpbmcmIHByaW1hcnlEb21haW4pCit7CisgICAgbV9wcmltYXJ5RG9tYWluc0dy
YW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzLmFkZChwcmltYXJ5RG9tYWluKTsKK30KKwog
I2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OnNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiYmIGxpc3RlbmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJl
dmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDE3LDYgKzE0MTcsMTEgQEAgcHVibGljOgogCiAgICAgSlNDOjpUaHJlYWRM
b2NhbENhY2hlJiB0aHJlYWRMb2NhbENhY2hlKCk7CiAKKyNpZiBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykKKyAgICBib29sIGhhc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKFN0cmluZyYgcHJpbWFyeURvbWFpbik7CisgICAgdm9pZCBzZXRIYXNHcmFudGVkUGFn
ZVNwZWNpZmljU3RvcmFnZUFjY2VzcyhTdHJpbmcmIHByaW1hcnlEb21haW4pOworI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAx
LCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBj
b25zdHJ1Y3Rpb25GbGFncyA9IDApOwpAQCAtMTkwMyw2ICsxOTA4LDEwIEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIqPiBtX2FwcGxpY2F0aW9u
U3RhdGVDaGFuZ2VMaXN0ZW5lcnM7CiAgICAgCiAgICAgUmVmUHRyPEpTQzo6VGhyZWFkTG9jYWxD
YWNoZT4gbV90aHJlYWRMb2NhbENhY2hlOworCisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCisgICAgSGFzaFNldDxTdHJpbmc+IG1fcHJpbWFyeURvbWFpbnNHcmFudGVk
UGFnZVNwZWNpZmljU3RvcmFnZUFjY2VzczsKKyNlbmRpZgogfTsKIAogRWxlbWVudCogZXZlbnRU
YXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjI5NDc0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCwxMiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXROb3RpZmljYXRpCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZp
Y2F0aW9uQ2FsbGJhY2spOwogfQogCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBjb25zdCBTdHJpbmcmIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCit7CisgICAg
QVNTRVJUKCFtX2dyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOworICAgIG1f
Z3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OworfQorCiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAg
IDogbV9ub3RpZmljYXRpb25UaW1lcigqdGhpcywgJlJlc291cmNlTG9hZE9ic2VydmVyOjpub3Rp
ZnlPYnNlcnZlcikKIHsKQEAgLTMxMSw2ICszMTcsMjUgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nVXNlckludGVyYQogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBuZXdUaW1lOwog
ICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBuZXdUaW1lOwog
CisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisgICAgaWYgKGF1dG8q
IG9wZW5lciA9IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLm9wZW5lcigpKSB7CisgICAgICAg
IGlmIChhdXRvKiBvcGVuZXJEb2N1bWVudCA9IG9wZW5lci0+ZG9jdW1lbnQoKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIG9wZW5lckZyYW1lID0gb3BlbmVyRG9jdW1lbnQtPmZyYW1lKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gb3BlbmVyUGFnZUlE
ID0gb3BlbmVyRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQtPnVybCgpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIG9wZW5lclByaW1hcnlEb21haW4gPSBwcmltYXJ5RG9tYWluKG9w
ZW5lclVybCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21haW4gIT0gb3BlbmVyUHJpbWFy
eURvbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW9wZW5lckRvY3VtZW50LT5oYXNH
cmFudGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzcyhkb21haW4pCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5nKCksIGJs
YW5rVVJMKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXJEb2N1bWVudC0+c2V0
SGFzR3JhbnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoZG9tYWluKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhkb21h
aW4sIG9wZW5lclBhZ2VJRC52YWx1ZSgpLCBvcGVuZXJQcmltYXJ5RG9tYWluKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyNlbmRpZgorCiAgICAgbV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7CiAgICAg
bm90aWZ5T2JzZXJ2ZXIoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmgJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhdGlzdGljc0Zvck9yaWdp
bihjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Tm90aWZpY2F0
aW9uQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4mJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhbnRTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwg
dWludDY0X3QsIGNvbnN0IFN0cmluZyYpPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5T2JzZXJ2ZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyU3RhdGUoKTsK
QEAgLTgyLDYgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwogICAg
IFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiBt
X25vdGlmaWNhdGlvbkNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248dm9pZChTdHJpbmcsIHVp
bnQ2NF90LCBTdHJpbmcpPiBtX2dyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7
CiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKICNpZiBIQVZFKENGTkVUV09SS19TVE9S
QUdFX1BBUlRJVElPTklORykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdWludDY0X3Qg
bV9sb2dnaW5nQ291bnRlciB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjI5
NDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw5IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29va2llU3RvcmFnZVBhcnRpdGlvbihjb25zdCBVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIGNsZWFyRmlyc3QpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFt
ZXNPblBhZ2UodWludDY0X3QgcGFnZUlEKTsKICNlbmRpZgpAQCAtMTgyLDYgKzE4Miw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bnNUb1BhcnRpdGlvbjsKICAgICBIYXNoU2V0PFN0cmluZz4gbV90b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1RvQmxvY2s7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50NjRf
dCwgU3RyaW5nLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9mcmFtZXNH
cmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNz
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk2LDcgKzE5Niw3IEBAIFN0cmluZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3IKICAgICBpZiAoZmlyc3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBpZiAoZnJhbWVJRCAmJiBwYWdlSUQg
JiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSkKKyAgICBpZiAocGFnZUlEICYm
IGhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAg
ICByZXR1cm4gZmlyc3RQYXJ0eURvbWFpbjsKQEAgLTI4MSwxOSArMjgxLDI1IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWwKICAgICB9CiB9CiAKLWJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKIHsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eURv
bWFpbik7CisgICAgaWYgKGZyYW1lSUQpIHsKKyAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRl
cmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKKyAgICAg
ICAgaWYgKGZyYW1lc0dyYW50ZWRJdGVyYXRvciAhPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGl0ID0gZnJhbWVzR3JhbnRlZEl0ZXJhdG9y
LT52YWx1ZS5maW5kKGZyYW1lSUQudmFsdWUoKSk7CisgICAgICAgICAgICBpZiAoaXQgIT0gZnJh
bWVzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VE
b21haW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiAK
LSAgICBhdXRvIGl0MSA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQp
OwotICAgIGlmIChpdDEgPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gcGFnZXNHcmFudGVkSXRlcmF0b3IgPSBtX3Bh
Z2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgIGlmIChwYWdlc0dyYW50
ZWRJdGVyYXRvciAhPSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKKyAgICAg
ICAgYXV0byBpdCA9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5maW5kKGZpcnN0UGFydHlE
b21haW4pOworICAgICAgICBpZiAoaXQgIT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVu
ZCgpICYmIGl0LT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KIAotICAgIGF1dG8gaXQyID0gaXQxLT52YWx1ZS5maW5kKGZyYW1lSUQpOwot
ICAgIGlmIChpdDIgPT0gaXQxLT52YWx1ZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIHJldHVybiBpdDItPnZhbHVlID09IHJlc291cmNlRG9tYWluOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CkBAIC0zMDcsMTcgKzMxMywyOCBAQCBWZWN0
b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdlCiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQogewotICAgIFVOVVNFRF9QQVJB
TShmaXJzdFBhcnR5RG9tYWluKTsKKyAgICBpZiAoIWZyYW1lSUQpIHsKKyAgICAgICAgYXV0byBp
dDEgPSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgICAgICBp
ZiAoaXQxID09IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkgeworICAgICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZW50cnk7CisgICAgICAgICAgICBlbnRyeS5hZGQo
Zmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOworICAgICAgICAgICAgbV9wYWdlc0dy
YW50ZWRTdG9yYWdlQWNjZXNzLmFkZChwYWdlSUQsIGVudHJ5KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGF1dG8gaXQyID0gaXQxLT52YWx1ZS5maW5kKGZpcnN0UGFydHlEb21haW4p
OworICAgICAgICAgICAgaXQyLT52YWx1ZSA9IHJlc291cmNlRG9tYWluOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIGl0MSA9IG1fZnJhbWVzR3JhbnRlZFN0
b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOwogICAgIGlmIChpdDEgPT0gbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5lbmQoKSkgewogICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmcs
IERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1aW50NjRfdD4+IGVudHJ5OwotICAgICAgICBlbnRyeS5hZGQoZnJhbWVJRCwgcmVz
b3VyY2VEb21haW4pOworICAgICAgICBlbnRyeS5hZGQoZnJhbWVJRC52YWx1ZSgpLCByZXNvdXJj
ZURvbWFpbik7CiAgICAgICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuYWRkKHBhZ2VJ
RCwgZW50cnkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gaXQyID0gaXQxLT52YWx1ZS5m
aW5kKGZyYW1lSUQpOworICAgICAgICBhdXRvIGl0MiA9IGl0MS0+dmFsdWUuZmluZChmcmFtZUlE
LnZhbHVlKCkpOwogICAgICAgICBpdDItPnZhbHVlID0gcmVzb3VyY2VEb21haW47CiAgICAgfQog
fQpAQCAtMzMzLDYgKzM1MCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVT
dG9yYWcKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NG
b3JBbGxGcmFtZXNPblBhZ2UodWludDY0X3QgcGFnZUlEKQogeworICAgIG1fcGFnZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdl
QWNjZXNzLnJlbW92ZShwYWdlSUQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI5NTQ1
KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
NCBAQAorMjAxOC0wMy0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEltbWVkaWF0ZWx5IGZvcndhcmQgY29v
a2llIGFjY2VzcyBhdCB1c2VyIGludGVyYWN0aW9uIHdoZW4gdGhlcmUncyBhbiBvcGVuZXIgZG9j
dW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzU3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgyNjY5ODc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAgICAgTm93IGFsc28gY2hlY2tzIGZvciBnZW5lcmFs
IHBhZ2UgYWNjZXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9y
YWdlQWNjZXNzKToKKyAgICAgICAgICAgIFJlbmFtZWQgZnJvbSBncmFudFN0b3JhZ2VBY2Nlc3NG
b3JGcmFtZSBzaW5jZSB0aGUgZnJhbWVJRCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICAgICBSZW5hbWVkIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAgICAg
UmVuYW1pbmcgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgUmVu
YW1pbmcgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAgICAg
Q29uc2VxdWVuY2Ugb2YgZnVuY3Rpb24gcmVuYW1pbmcuCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgICAgIFJlbmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgICAgIFJlbmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlE
IG5vdyBpcyBvcHRpb25hbC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBIYW5kbGVyIHJl
bmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcik6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gZm9yIHRoYXQgZ3JhbnRzIGNvb2tp
ZSBhY2Nlc3MgdW5kZXIgYSB3aG9sZSBwYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgICAgIE1lbWJlciByZW5hbWluZyBz
aW5jZSB0aGUgZnJhbWVJRCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgICAgIE5l
dyBtZXNzYWdlIHJlY2VpdmVkIHN0cmFpZ2h0IGZyb20gV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3NIYW5kbGVyKToKKyAgICAgICAgICAgIFJlbmFtZWQgYW5kIG1hZGUgZnJhbWVJRCBvcHRpb25h
bC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayk6CisgICAgICAgICAgICBDb25zZXF1ZW5j
ZSBvZiByZW5hbWluZyBhbmQgbWFraW5nIGZyYW1lSUQgb3B0aW9uYWwuCisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcik6
IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIGFuZCBtYWRlIGZyYW1lSUQgb3B0aW9uYWwu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViUHJvY2Vzczo6
V2ViUHJvY2Vzcyk6CisgICAgICAgICAgICBOb3cgY2FsbHMgc2V0R3JhbnRTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjaygpIG9uIHRoZSBzaGFyZWQKKyAgICAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyLgorCiAyMDE4LTAzLTEyICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIxMTY0Myk6IERpc21p
c3NpbmcgV0tBY3Rpb25TaGVldCBzaG91bGQgbm90IGFsc28gZGlzbWlzcyBpdHMgcHJlc2VudGlu
ZyB2aWV3IGNvbnRyb2xsZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4
LDcgKzM2OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWEKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6U3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQobmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5oYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOworICAgICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9y
YWdlQWNjZXNzUmVxdWVzdFJlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VB
Y2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCks
IGNvbnRleHRJZCksIDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CkBAIC0zODEsMTIgKzM4MSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9y
YWdlQWNjZXNzCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBj
b250ZXh0SWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNTdG9y
YWdlR3JhbnRlZCA9IGZhbHNlOwogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsKLSAgICAg
ICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpKTsKKyAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VE
b21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgICAgIEFTU0VS
VChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCkpOwogICAgICAgICBpc1N0b3JhZ2VH
cmFudGVkID0gdHJ1ZTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmly
c3QpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFp
bnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVj
ZWl2ZQogICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvUGFydGl0
aW9uLCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QpCiAgICAg
SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5n
IHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgR2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0
SWQpCi0gICAgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBH
cmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3Vy
Y2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZW1v
dmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmlu
Zz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNyArNzczLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZgogICAgIGF1dG8gZXNjYXBlZEZy
YW1lSUQgPSBlc2NhcGVJREZvckpTT04oZnJhbWVJRCk7CiAgICAgYXV0byBlc2NhcGVkUGFnZUlE
ID0gZXNjYXBlSURGb3JKU09OKHBhZ2VJRCk7CiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9
IGVzY2FwZUlERm9ySlNPTihpZGVudGlmaWVyKTsKLSAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZSA9IChmcmFtZUlEICYmIHBhZ2VJRCkgPyBuZXR3b3JrU3RvcmFnZVNlc3Npb24uaGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVybC5zdHJpbmcoKSwgcGFydGl0aW9uLnN0cmluZygpLCBm
cmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6IGZhbHNlOworICAgIGJvb2wgaGFzU3Rv
cmFnZUFjY2VzcyA9IChmcmFtZUlEICYmIHBhZ2VJRCkgPyBuZXR3b3JrU3RvcmFnZVNlc3Npb24u
aGFzU3RvcmFnZUFjY2Vzcyh1cmwuc3RyaW5nKCksIHBhcnRpdGlvbi5zdHJpbmcoKSwgZnJhbWVJ
RC52YWx1ZSgpLCBwYWdlSUQudmFsdWUoKSkgOiBmYWxzZTsKIAogI2RlZmluZSBMT0NBTF9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAl
czo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1Nf
XykKICNkZWZpbmUgTE9DQUxfTE9HKHN0ciwgLi4uKSBcCkBAIC03ODEsNyArNzgxLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZgogCiAgICAgTE9DQUxfTE9HKFIi
KHsgInVybCI6ICIle3B1YmxpY31zIiwpIiwgZXNjYXBlZFVSTC51dGY4KCkuZGF0YSgpKTsKICAg
ICBMT0NBTF9MT0coUiIoICAicGFydGl0aW9uIjogIiV7cHVibGljfXMiLCkiLCBlc2NhcGVkUGFy
dGl0aW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgIExPQ0FMX0xPRyhSIiggICJoYXNTdG9yYWdlQWNj
ZXNzIjogJXtwdWJsaWN9cywpIiwgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lID8gInRydWUiIDog
ImZhbHNlIik7CisgICAgTE9DQUxfTE9HKFIiKCAgImhhc1N0b3JhZ2VBY2Nlc3MiOiAle3B1Ymxp
Y31zLCkiLCBoYXNTdG9yYWdlQWNjZXNzID8gInRydWUiIDogImZhbHNlIik7CiAgICAgTE9DQUxf
TE9HKFIiKCAgInJlZmVyZXIiOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRSZWZlcnJlci51dGY4
KCkuZGF0YSgpKTsKICAgICBMT0NBTF9MT0coUiIoICAiY29va2llcyI6IFspIik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU0LDEyICsxNTQsMTIgQEAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJn
ZU9wZXJhdAogICAgIHJldHVybiBtZXJnZWREYXRlczsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5n
JiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyLCBIYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciwgR3Jh
bnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNI
YW5kbGVyKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9v
bCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNIYW5kbGVyLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciYmIGdyYW50
U3RvcmFnZUFjY2Vzc0hhbmRsZXIsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVt
b3ZlRG9tYWluc0hhbmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNy
ZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIs
IFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiAgICAg
LCBtX3BlcnNpc3RlbnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBpc0VwaGVtZXJhbCA/IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZTo6SXNSZWFkT25seTo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlOjpJc1JlYWRPbmx5OjpObykKICAgICAsIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSkKICAgICAsIG1faGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlcihXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXIpKQotICAgICwgbV9ncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShn
cmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpKQorICAgICwgbV9ncmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcikpCiAgICAgLCBt
X3JlbW92ZURvbWFpbnNIYW5kbGVyKFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKQogICAg
ICwgbV9kYWlseVRhc2tzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcykKICAgICAsIG1fc3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjayhXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjaykpCkBAIC0zODEsMTAgKzM4
MSwyOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxCiAKICAgICAg
ICAgc3ViRnJhbWVTdGF0aXN0aWMudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFn
ZUFjY2Vzc0FQSSsrOwogCi0gICAgICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKHN1YkZyYW1lUHJpbWFyeURvbWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlE
LCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nl
c3NIYW5kbGVyKHN1YkZyYW1lUHJpbWFyeURvbWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBm
cmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KLSAgICAKKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFN0cmluZyYmIGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwgdWludDY0
X3Qgb3BlbmVyUGFnZUlELCBTdHJpbmcmJiBvcGVuZXJEb21haW4pCit7CisgICAgQVNTRVJUKGRv
bWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiAhPSBvcGVuZXJEb21haW4pOworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRl
cmFjdGlvbiA9PSBvcGVuZXJEb21haW4pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGRv
bWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvblN0YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uKTsK
KyAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNvb2tpZXMoZG9tYWluUmVjZWl2aW5nVXNlckludGVy
YWN0aW9uU3RhdGlzdGljKSAmJiAhc2hvdWxkQmxvY2tDb29raWVzKGRvbWFpblJlY2VpdmluZ1Vz
ZXJJbnRlcmFjdGlvblN0YXRpc3RpYykpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3JhbnRT
dG9yYWdlQWNjZXNzSGFuZGxlcihXVEZNb3ZlKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlv
biksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgc3RkOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFtd
KGJvb2wpIHsgfSk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUkVMRUFTRV9MT0df
SU5GT19JRihtX2RlYnVnTG9nZ2luZ0VuYWJsZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1
ZywgIkdyYW50IHN0b3JhZ2UgYWNjZXNzIGZvciAlcyB1bmRlciBvcGVuZXIgJXMuIiwgZG9tYWlu
UmVjZWl2aW5nVXNlckludGVyYWN0aW9uLnV0ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi51dGY4
KCkuZGF0YSgpKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsMTEgKzYzLDExIEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBm
aW4KIHB1YmxpYzoKICAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBTaG91bGRDbGVhckZpcnN0KT47CiAgICAgdXNpbmcgSGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBj
YWxsYmFjayk+OwotICAgIHVzaW5nIEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spPjsKKyAg
ICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+OwogICAgIHVzaW5n
IFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpPjsKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNr
LCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
V1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRD
bGVhckZpcnN0KSB7IH0sIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwg
R3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3Qs
IHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlUHJldmFs
ZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6
OlZlY3RvcjxTdHJpbmc+JikgeyB9KQorICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJh
Y2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIFNob3Vs
ZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9
LCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9
IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIFJlbW92ZVByZXZh
bGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgV1RG
OjpWZWN0b3I8U3RyaW5nPiYpIHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIGlzRXBoZW1lcmFsLCBXVEZNb3Zl
KHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciks
IFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUoZ3JhbnRT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxl
cikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGlu
Z0NhbGxiYWNrKSwgaXNFcGhlbWVyYWwsIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwgV1RG
TW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKCk7CkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoU3RyaW5nJiYgZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uLCB1aW50NjRf
dCBvcGVuZXJQYWdlSUQsIFN0cmluZyYmIG9wZW5lckRvbWFpbik7CiAgICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NhbGxiYWNrKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElk
KTsKIAogICAgIHZvaWQgcHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkm
LCBJUEM6OkNvbm5lY3Rpb24mKTsKQEAgLTE1MCw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiwgSGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXImJiwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiwgSGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmLCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYsIFJl
bW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVj
b3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCkBAIC0yMTAsNyArMjExLDcgQEAg
cHJpdmF0ZToKIAogICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlciBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcjsKICAgICBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyIG1faGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcjsKLSAgICBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZUhhbmRsZXIgbV9ncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXI7CisgICAgR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlciBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXI7CiAgICAg
UmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgbV9yZW1vdmVEb21haW5zSGFuZGxlcjsKIAog
ICAgIFdhbGxUaW1lIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsNSArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworICAgIEdyYW50U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFN0cmluZyBkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rp
b24sIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgU3RyaW5nIG9wZW5lckRvbWFpbikKICAgICBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gb3JpZ2lucykKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjI5NDc0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDEyICs0MjAsMTIgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZQogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwg
Zmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBjb250ZXh0SWQpLCAwKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7
CiAgICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQo
KTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tN
YXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwgcmVzb3Vy
Y2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSwg
MCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2Vz
cyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQsIGNvbnRleHRJZCksIDApOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJ
VElPTklORykKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3Jh
bnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKIAogICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9u
IDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA4LDEwICsxMjA4LDEwIEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2UKICAgICAgICAgcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCktPmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1fc2Vzc2lvbklE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4m
JiBjYWxsYmFjaykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSGFu
ZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAg
ICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+Z3JhbnRTdG9yYWdlQWNjZXNzRm9y
RnJhbWUobV9zZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFt
ZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCktPmdyYW50U3RvcmFnZUFjY2VzcyhtX3Nlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZVByZXZhbGVudERvbWFpbnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCkBAIC0xNDQyLDggKzE0NDIsOCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hCiAgICAgICAgIHVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwg
ZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxk
Q2xlYXJGaXJzdCk7CiAgICAgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlE
b21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIH0sIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3Jh
bnRlZCk+JiYgY2FsbGJhY2spIHsKLSAgICAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYm
IGNhbGxiYWNrKSB7CisgICAgICAgIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIocmVzb3VyY2VE
b21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwogICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlKSB7CiAgICAgICAgIHJlbW92ZVByZXZh
bGVudERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJ
KHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nl
c3MpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdh
c0dyYW50ZWQpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNr
KTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnMpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhv
c3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5n
JiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDYsNiArMjA2LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGlj
cykpLCAwKTsKICAgICB9KTsKIAorICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5z
ZXRHcmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoY29uc3QgU3Ry
aW5nJiBkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24sIHVpbnQ2NF90IG9wZW5lclBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBvcGVuZXJEb21haW4pIHsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpHcmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21haW5SZWNlaXZpbmdVc2VySW50ZXJh
Y3Rpb24sIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CisgICAgfSk7CisgICAgCiAg
ICAgR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVF
bmFibGVkKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335669</attachid>
            <date>2018-03-12 18:03:40 -0700</date>
            <delta_ts>2018-03-12 19:06:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183577-20180312180340.patch</filename>
            <type>text/plain</type>
            <size>41775</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTEyICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogSW1tZWRpYXRlbHkgZm9yd2FyZCBjb29raWUgYWNjZXNzIGF0IHVzZXIgaW50ZXJh
Y3Rpb24gd2hlbiB0aGVyZSdzIGFuIG9wZW5lciBkb2N1bWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zODI2Njk4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisg
ICAgICAgIFRlc3RlZCBtYW51YWxseSBvbiBsaXZlIHdlYnNpdGVzLgorICAgICAgICBObyBuZXcg
YXV0b21hdGVkIHRlc3RzIGJlY2F1c2Ugb2YgYSBidWcgaW4gV2ViS2l0VGVzdFJ1bm5lcjoKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzU3OAorICAg
ICAgICBUaGUgZXZlbnQgc2VuZGVyIHRyaWdnZXJzIGdlc3R1cmVzIGluIHRoZSBvcGVuZXIgcmF0
aGVyIHRoYW4KKyAgICAgICAgaW4gdGhlIHBvcHVwLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZik6CisgICAg
ICAgICAgICBDbGVhcnMgdGhlIG5ldyBtX3ByaW1hcnlEb21haW5zR3JhbnRlZFBhZ2VTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzR3JhbnRlZFBh
Z2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dEhhc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgICAgIEFkZGVkIG1lbWJlciBtX3ByaW1hcnlEb21haW5zR3JhbnRl
ZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MKKyAgICAgICAgICAgIHdoZXJlIHdlIHN0b3JlIGRv
bWFpbnMgdGhhdCBoYXZlIGJlZW4gZ3JhbnRlZCBhY2Nlc3MuCisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpzZXRHcmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRo
UmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgICAgIE5vdyBjaGVja3MgaWYgdGhlcmUg
aXMgYSBjcm9zcy1vcmlnaW4gb3BlbmVyIGFuZCBpZiBzbywgaW1tZWRpYXRlbHkKKyAgICAgICAg
ICAgIGdyYW50cyBjb29raWUgYWNjZXNzIHRvIHRoZSBwb3B1cCdzIGRvbWFpbiBpZiBpdCBpcyBw
YXJ0aXRpb25lZCBvcgorICAgICAgICAgICAgYmxvY2tlZC4gCisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgICAgIEFkZGVkIG1lbWJlciBtX3BhZ2VzR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3MuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZVN0b3JhZ2VQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
ICAgIFJlbmFtZWQgZnJvbSBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUgc2luY2UgdGhlIGZyYW1l
SUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAgICAgUmVuYW1lZCBmcm9tIGdyYW50
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckFsbEZyYW1lc09uUGFnZSk6CisgICAgICAgICAgICBOb3cgcmVtb3ZlcyB0aGUgcGFn
ZUlEIGVudHJ5IGluIG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlz
IG9wdGlvbmFsLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFu
dFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIHNp
bmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBvcHRpb25hbC4KKwogMjAxOC0wMy0xMiAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBJZ25vcmUgc29tZSBkZXByZWNhdGlvbiB3
YXJuaW5ncyBlbmNvdW50ZXJlZCB3aGVuIGNvbXBpbGluZyB3aXRoIG5ld2VyIHZlcnNpb25zIG9m
IElDVQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIyLDYg
Kzc2MjIsMTcgQEAgdm9pZCBEb2N1bWVudDo6c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZwogewog
ICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKHZhbHVlKTsKIH0KKworYm9vbCBEb2N1bWVudDo6aGFzR3JhbnRlZFBhZ2VTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiBwcmltYXJ5RG9tYWluKQoreworICAgIHJldHVybiBtX3By
aW1hcnlEb21haW5HcmFudGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2VzcyA9PSBwcmltYXJ5RG9t
YWluOworfQorCit2b2lkIERvY3VtZW50OjpzZXRIYXNHcmFudGVkUGFnZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcyhTdHJpbmcmIHByaW1hcnlEb21haW4pCit7CisgICAgbV9wcmltYXJ5RG9tYWluR3Jh
bnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MgPSBwcmltYXJ5RG9tYWluOworfQorCiAjZW5k
aWYKIAogdm9pZCBEb2N1bWVudDo6c2V0Q29uc29sZU1lc3NhZ2VMaXN0ZW5lcihSZWZQdHI8U3Ry
aW5nQ2FsbGJhY2s+JiYgbGlzdGVuZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMjI5NDc0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MTcsNiArMTQxNywxMSBAQCBwdWJsaWM6CiAKICAgICBKU0M6OlRocmVhZExvY2Fs
Q2FjaGUmIHRocmVhZExvY2FsQ2FjaGUoKTsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQorICAgIGJvb2wgaGFzR3JhbnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiBwcmltYXJ5RG9tYWluKTsKKyAgICB2b2lkIHNldEhhc0dyYW50ZWRQYWdlU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKFN0cmluZyYgcHJpbWFyeURvbWFpbik7CisjZW5kaWYKKwogcHJv
dGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5v
blJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAgICBEb2N1bWVudChGcmFtZSosIGNv
bnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0
cnVjdGlvbkZsYWdzID0gMCk7CkBAIC0xOTAzLDYgKzE5MDgsMTAgQEAgcHJpdmF0ZToKICAgICBI
YXNoU2V0PEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcio+IG1fYXBwbGljYXRpb25TdGF0
ZUNoYW5nZUxpc3RlbmVyczsKICAgICAKICAgICBSZWZQdHI8SlNDOjpUaHJlYWRMb2NhbENhY2hl
PiBtX3RocmVhZExvY2FsQ2FjaGU7CisKKyNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJ
VElPTklORykKKyAgICBTdHJpbmcgbV9wcmltYXJ5RG9tYWluR3JhbnRlZFBhZ2VTcGVjaWZpY1N0
b3JhZ2VBY2Nlc3MgeyB9OworI2VuZGlmCiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1l
bnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNiArMTA4LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldE5vdGlmaWNh
dGkKICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGTW92ZShub3RpZmljYXRpb25DYWxs
YmFjayk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldEdyYW50U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYg
ZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIGNv
bnN0IFN0cmluZyYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoIW1f
Z3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayk7CisgICAgbV9ncmFudFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cit9CisKIFJl
c291cmNlTG9hZE9ic2VydmVyOjpSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiAgICAgOiBtX25vdGlm
aWNhdGlvblRpbWVyKCp0aGlzLCAmUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Om5vdGlmeU9ic2VydmVy
KQogewpAQCAtMzExLDYgKzMxNywyNSBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dV
c2VySW50ZXJhCiAgICAgc3RhdGlzdGljcy5sYXN0U2VlbiA9IG5ld1RpbWU7CiAgICAgc3RhdGlz
dGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IG5ld1RpbWU7CiAKKyNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICBpZiAoYXV0byogb3BlbmVyID0g
ZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkub3BlbmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IG9wZW5lckRvY3VtZW50ID0gb3BlbmVyLT5kb2N1bWVudCgpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogb3BlbmVyRnJhbWUgPSBvcGVuZXJEb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvIG9wZW5lclBhZ2VJRCA9IG9wZW5lckZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5wYWdlSUQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIG9wZW5lclVybCA9IG9w
ZW5lckRvY3VtZW50LT51cmwoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBvcGVuZXJQcmlt
YXJ5RG9tYWluID0gcHJpbWFyeURvbWFpbihvcGVuZXJVcmwpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZG9tYWluICE9IG9wZW5lclByaW1hcnlEb21haW4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICYmICFvcGVuZXJEb2N1bWVudC0+aGFzR3JhbnRlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nl
c3MoZG9tYWluKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdBU0NJ
SUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBibGFua1VSTCgpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgb3BlbmVyRG9jdW1lbnQtPnNldEhhc0dyYW50ZWRQYWdlU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKGRvbWFpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYW50U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soZG9tYWluLCBvcGVuZXJQYWdlSUQudmFsdWUoKSwgb3Bl
bmVyUHJpbWFyeURvbWFpbik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG1fbm90
aWZpY2F0aW9uVGltZXIuc3RvcCgpOwogICAgIG5vdGlmeU9ic2VydmVyKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZpc2lvbiAy
Mjk0NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4oY29uc3QgU3RyaW5nJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE5vdGlmaWNhdGlvbkNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9p
ZCAoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKT4mJik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeU9ic2VydmVyKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhclN0YXRlKCk7CkBAIC04Miw2ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBv
cnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsKKyAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoU3RyaW5nLCB1aW50NjRfdCwgU3RyaW5nKT4gbV9ncmFudFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uVGlt
ZXI7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgIHVpbnQ2NF90IG1fbG9nZ2luZ0NvdW50ZXIgeyAwIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCw5ICsxMDQsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvb2tpZVN0
b3JhZ2VQYXJ0aXRpb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJM
JiByZXNvdXJjZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9C
bG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JC
bG9jaywgYm9vbCBjbGVhckZpcnN0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWlu
LCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAj
ZW5kaWYKQEAgLTE4Miw2ICsxODIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9QYXJ0aXRpb247CiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0
X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4s
IERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIERlZmF1bHRIYXNoPHVpbnQ2
NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjI5
NDc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBTdHJp
bmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yCiAgICAgaWYgKGZpcnN0UGFydHlE
b21haW4gPT0gcmVzb3VyY2VEb21haW4pCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
Ci0gICAgaWYgKGZyYW1lSUQgJiYgcGFnZUlEICYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQu
dmFsdWUoKSkpCisgICAgaWYgKHBhZ2VJRCAmJiBoYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9t
YWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW47CkBA
IC0yODEsMTkgKzI4MSwyNSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJl
dmFsCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0CiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlEb21haW4pOworICAgIGlmIChmcmFtZUlEKSB7Cisg
ICAgICAgIGF1dG8gZnJhbWVzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFn
ZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CisgICAgICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0b3Ig
IT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkgeworICAgICAgICAgICAgYXV0
byBpdCA9IGZyYW1lc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmcmFtZUlELnZhbHVlKCkp
OworICAgICAgICAgICAgaWYgKGl0ICE9IGZyYW1lc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZW5k
KCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQogCi0gICAgYXV0byBpdDEgPSBtX2ZyYW1lc0dyYW50
ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKLSAgICBpZiAoaXQxID09IG1fZnJhbWVzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRv
IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yID0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQo
cGFnZUlEKTsKKyAgICBpZiAocGFnZXNHcmFudGVkSXRlcmF0b3IgIT0gbV9wYWdlc0dyYW50ZWRT
dG9yYWdlQWNjZXNzLmVuZCgpKSB7CisgICAgICAgIGF1dG8gaXQgPSBwYWdlc0dyYW50ZWRJdGVy
YXRvci0+dmFsdWUuZmluZChmaXJzdFBhcnR5RG9tYWluKTsKKyAgICAgICAgaWYgKGl0ICE9IHBh
Z2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VE
b21haW4pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBhdXRvIGl0MiA9
IGl0MS0+dmFsdWUuZmluZChmcmFtZUlEKTsKLSAgICBpZiAoaXQyID09IGl0MS0+dmFsdWUuZW5k
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gaXQyLT52YWx1ZSA9
PSByZXNvdXJjZURvbWFpbjsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFZlY3RvcjxTdHJpbmc+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSBjb25z
dApAQCAtMzA3LDE4ICszMTMsMzUgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZQogICAgIHJldHVybiBlbnRyaWVzOwogfQogICAgIAotdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eURvbWFpbik7CisgICAgaWYg
KCFmcmFtZUlEKSB7CisgICAgICAgIGF1dG8gcGFnZXNHcmFudGVkSXRlcmF0b3IgPSBtX3BhZ2Vz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgICAgICBpZiAocGFnZXNHcmFu
dGVkSXRlcmF0b3IgPT0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKSB7CisgICAg
ICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBlbnRyeTsKKyAgICAgICAgICAgIGVudHJ5
LmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7CisgICAgICAgICAgICBtX3Bh
Z2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuYWRkKHBhZ2VJRCwgZW50cnkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgYXV0byBmaXJzdFBhcnR5RG9tYWluSXRlcmF0b3IgPSBwYWdlc0dy
YW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmaXJzdFBhcnR5RG9tYWluKTsKKyAgICAgICAgICAg
IGlmIChmaXJzdFBhcnR5RG9tYWluSXRlcmF0b3IgPT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZh
bHVlLmVuZCgpKQorICAgICAgICAgICAgICAgIHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5h
ZGQoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZpcnN0UGFydHlEb21haW5JdGVyYXRvci0+dmFsdWUgPSByZXNvdXJj
ZURvbWFpbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBp
dDEgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKLSAgICBpZiAo
aXQxID09IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKKyAgICBhdXRvIHBh
Z2VzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBh
Z2VJRCk7CisgICAgaWYgKHBhZ2VzR3JhbnRlZEl0ZXJhdG9yID09IG1fZnJhbWVzR3JhbnRlZFN0
b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKICAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nLCBE
ZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dWludDY0X3Q+PiBlbnRyeTsKLSAgICAgICAgZW50cnkuYWRkKGZyYW1lSUQsIHJlc291
cmNlRG9tYWluKTsKKyAgICAgICAgZW50cnkuYWRkKGZyYW1lSUQudmFsdWUoKSwgcmVzb3VyY2VE
b21haW4pOwogICAgICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmFkZChwYWdlSUQs
IGVudHJ5KTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGl0MiA9IGl0MS0+dmFsdWUuZmlu
ZChmcmFtZUlEKTsKLSAgICAgICAgaXQyLT52YWx1ZSA9IHJlc291cmNlRG9tYWluOworICAgICAg
ICBhdXRvIGZyYW1lc0dyYW50ZWRJdGVyYXRvciA9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1
ZS5maW5kKGZyYW1lSUQudmFsdWUoKSk7CisgICAgICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0
b3IgPT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQorICAgICAgICAgICAgcGFn
ZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmFkZChmcmFtZUlELnZhbHVlKCksIHJlc291cmNlRG9t
YWluKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJhbWVzR3JhbnRlZEl0ZXJhdG9yLT52
YWx1ZSA9IHJlc291cmNlRG9tYWluOwogICAgIH0KIH0KIApAQCAtMzMzLDYgKzM1Niw3IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWcKIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UodWludDY0
X3QgcGFnZUlEKQogeworICAgIG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFn
ZUlEKTsKICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI5NTY0KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAxOC0wMy0xMiAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0
YXRpc3RpY3M6IEltbWVkaWF0ZWx5IGZvcndhcmQgY29va2llIGFjY2VzcyBhdCB1c2VyIGludGVy
YWN0aW9uIHdoZW4gdGhlcmUncyBhbiBvcGVuZXIgZG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzU3NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzgyNjY5ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6CisgICAgICAg
ICAgICBOb3cgYWxzbyBjaGVja3MgZm9yIGdlbmVyYWwgcGFnZSBhY2Nlc3MuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAgICAg
UmVuYW1lZCBmcm9tIGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lIHNpbmNlIHRoZSBmcmFtZUlE
IG5vdyBpcyBvcHRpb25hbC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgc2lu
Y2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICAgICBSZW5hbWluZyBzaW5jZSB0aGUgZnJhbWVJ
RCBub3cgaXMgb3B0aW9uYWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICAgICBSZW5hbWluZyBzaW5jZSB0aGUgZnJhbWVJRCBu
b3cgaXMgb3B0aW9uYWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbik6CisgICAgICAgICAgICBDb25zZXF1ZW5jZSBvZiBmdW5jdGlvbiBy
ZW5hbWluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9y
YWdlQWNjZXNzRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAgICAgUmVuYW1pbmcgc2luY2Ug
dGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAg
ICAgICAgUmVuYW1pbmcgc2luY2UgdGhlIGZyYW1lSUQgbm93IGlzIG9wdGlvbmFsLgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKToKKyAgICAgICAgICAgIEhhbmRsZXIgcmVuYW1pbmcgc2luY2UgdGhlIGZyYW1lSUQg
bm93IGlzIG9wdGlvbmFsLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgICAgIE5l
dyBmdW5jdGlvbiBmb3IgdGhhdCBncmFudHMgY29va2llIGFjY2VzcyB1bmRlciBhIHdob2xlIHBh
Z2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
OgorICAgICAgICAgICAgTWVtYmVyIHJlbmFtaW5nIHNpbmNlIHRoZSBmcmFtZUlEIG5vdyBpcyBv
cHRpb25hbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgTmV3IG1lc3NhZ2UgcmVjZWl2ZWQgc3RyYWln
aHQgZnJvbSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlci4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpOgorICAgICAgICAgICAg
UmVuYW1lZCBhbmQgbWFkZSBmcmFtZUlEIG9wdGlvbmFsLgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0Nh
bGxiYWNrKToKKyAgICAgICAgICAgIENvbnNlcXVlbmNlIG9mIHJlbmFtaW5nIGFuZCBtYWtpbmcg
ZnJhbWVJRCBvcHRpb25hbC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z3Jh
bnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJl
bmFtZWQgYW5kIG1hZGUgZnJhbWVJRCBvcHRpb25hbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgICAg
IE5vdyBjYWxscyBzZXRHcmFudFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKCkgb24g
dGhlIHNoYXJlZAorICAgICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuCisK
IDIwMTgtMDMtMTIgIFlvYXYgV2Vpc3MgIDx5b2F2QHlvYXYud3M+CiAKICAgICAgICAgUnVudGlt
ZSBmbGFnIGZvciBsaW5rIHByZWZldGNoIGFuZCByZW1vdmUgbGluayBzdWJyZXNvdXJjZS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CShyZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWEKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vz
c1JlcXVlc3RSZXN1bHQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCks
IGNvbnRleHRJZCksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3Vs
dChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOwogICAg
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0zODEsMTIgKzM4MSwx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKTsKLSAgICAgICAgQVNTRVJUKG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHJlc291cmNlRG9tYWluLCBmaXJz
dFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpKTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZy
YW1lSUQsIHBhZ2VJRCkpOwogICAgICAgICBpc1N0b3JhZ2VHcmFudGVkID0gdHJ1ZTsKICAgICB9
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjk0NzQpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBh
cnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QpOwogICAgIHZvaWQgaGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwot
ICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpOwor
ICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4
dElkKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvUGFydGl0aW9uLCBWZWN0b3I8U3RyaW5nPiBk
b21haW5zVG9CbG9jaywgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5v
ckJsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QpCiAgICAgSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJp
bmcgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjb250ZXh0SWQpCiAgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgR3JhbnRTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VE
b21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJz
dFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFj
dGlvbik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmxvZ0Nvb2tpZUluZgogICAgIGF1dG8gZXNjYXBlZEZyYW1lSUQgPSBlc2NhcGVJREZvckpT
T04oZnJhbWVJRCk7CiAgICAgYXV0byBlc2NhcGVkUGFnZUlEID0gZXNjYXBlSURGb3JKU09OKHBh
Z2VJRCk7CiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2FwZUlERm9ySlNPTihpZGVu
dGlmaWVyKTsKLSAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSA9IChmcmFtZUlEICYm
IHBhZ2VJRCkgPyBuZXR3b3JrU3RvcmFnZVNlc3Npb24uaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KHVybC5zdHJpbmcoKSwgcGFydGl0aW9uLnN0cmluZygpLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJ
RC52YWx1ZSgpKSA6IGZhbHNlOworICAgIGJvb2wgaGFzU3RvcmFnZUFjY2VzcyA9IChmcmFtZUlE
ICYmIHBhZ2VJRCkgPyBuZXR3b3JrU3RvcmFnZVNlc3Npb24uaGFzU3RvcmFnZUFjY2Vzcyh1cmwu
c3RyaW5nKCksIHBhcnRpdGlvbi5zdHJpbmcoKSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFs
dWUoKSkgOiBmYWxzZTsKIAogI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVj
dCwgbGFiZWwudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgTE9DQUxfTE9H
KHN0ciwgLi4uKSBcCkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmxvZ0Nvb2tpZUluZgogCiAgICAgTE9DQUxfTE9HKFIiKHsgInVybCI6ICIle3B1YmxpY31z
IiwpIiwgZXNjYXBlZFVSTC51dGY4KCkuZGF0YSgpKTsKICAgICBMT0NBTF9MT0coUiIoICAicGFy
dGl0aW9uIjogIiV7cHVibGljfXMiLCkiLCBlc2NhcGVkUGFydGl0aW9uLnV0ZjgoKS5kYXRhKCkp
OwotICAgIExPQ0FMX0xPRyhSIiggICJoYXNTdG9yYWdlQWNjZXNzIjogJXtwdWJsaWN9cywpIiwg
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lID8gInRydWUiIDogImZhbHNlIik7CisgICAgTE9DQUxf
TE9HKFIiKCAgImhhc1N0b3JhZ2VBY2Nlc3MiOiAle3B1YmxpY31zLCkiLCBoYXNTdG9yYWdlQWNj
ZXNzID8gInRydWUiIDogImZhbHNlIik7CiAgICAgTE9DQUxfTE9HKFIiKCAgInJlZmVyZXIiOiAi
JXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRSZWZlcnJlci51dGY4KCkuZGF0YSgpKTsKICAgICBMT0NB
TF9MT0coUiIoICAiY29va2llcyI6IFspIik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAko
cmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEyICsxNTQsMTIg
QEAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZU9wZXJhdAogICAgIHJldHVybiBt
ZXJnZWREYXRlczsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxs
YmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNIYW5kbGVyLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYg
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBSZW1vdmVQcmV2
YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyKQorV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyLCBIYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
ciwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciYmIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIs
IFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCiAg
ICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2Vy
aWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdl
KCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBpc0VwaGVtZXJhbCA/IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6SXNSZWFkT25seTo6WWVzIDog
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpJc1JlYWRPbmx5OjpObykK
ICAgICAsIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNI
YW5kbGVyKFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNIYW5kbGVyKSkKICAgICAsIG1faGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihX
VEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpKQotICAgICwgbV9ncmFudFN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZUhhbmRsZXIpKQorICAgICwgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKFdURk1vdmUo
Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcikpCiAgICAgLCBtX3JlbW92ZURvbWFpbnNIYW5kbGVy
KFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKQogICAgICwgbV9kYWlseVRhc2tzVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpw
ZXJmb3JtRGFpbHlUYXNrcykKICAgICAsIG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEZN
b3ZlKHRlc3RpbmdDYWxsYmFjaykpCkBAIC0zODEsMTAgKzM4MSwyOCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxCiAKICAgICAgICAgc3ViRnJhbWVTdGF0aXN0aWMu
dGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSsrOwogCi0gICAg
ICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKHN1YkZyYW1lUHJpbWFyeURv
bWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lUHJp
bWFyeURvbWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KLSAgICAKKwordm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFN0cmluZyYmIGRv
bWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBTdHJp
bmcmJiBvcGVuZXJEb21haW4pCit7CisgICAgQVNTRVJUKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRl
cmFjdGlvbiAhPSBvcGVuZXJEb21haW4pOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgaWYgKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiA9PSBvcGVuZXJEb21h
aW4pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGRvbWFpblJlY2VpdmluZ1VzZXJJbnRl
cmFjdGlvblN0YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4oZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uKTsKKyAgICBpZiAoIXNob3VsZFBhcnRp
dGlvbkNvb2tpZXMoZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uU3RhdGlzdGljKSAmJiAh
c2hvdWxkQmxvY2tDb29raWVzKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvblN0YXRpc3Rp
YykpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihX
VEZNb3ZlKGRvbWFpblJlY2VpdmluZ1VzZXJJbnRlcmFjdGlvbiksIFdURk1vdmUob3BlbmVyRG9t
YWluKSwgc3RkOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFtdKGJvb2wpIHsgfSk7CisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgUkVMRUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2lu
Z0VuYWJsZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIkdyYW50IHN0b3JhZ2UgYWNj
ZXNzIGZvciAlcyB1bmRlciBvcGVuZXIgJXMuIiwgZG9tYWluUmVjZWl2aW5nVXNlckludGVyYWN0
aW9uLnV0ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgor
fQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlz
dGluZ1dlYnNpdGVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShy
ZXZpc2lvbiAyMjk0NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTEgKzYzLDExIEBAIGNs
YXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW4KIHB1YmxpYzoKICAgICB1c2lu
ZyBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRp
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZp
cnN0KT47CiAgICAgdXNpbmcgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjayk+OwotICAgIHVzaW5n
IEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spPjsKKyAgICB1c2luZyBHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3
YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERvbWFp
bnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsK
LSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBV
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBb
XShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gW10oY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiBy
ZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JikgeyB9
KQorICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWws
IFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYm
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9
IFtdKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0
X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+LCB1aW50NjRfdCwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYg
cmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYpIHsg
fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRl
c3RpbmdDYWxsYmFjayksIGlzRXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgaXNFcGhlbWVy
YWwsIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RG
TW92ZShncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFu
ZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7
CkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wp
PiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoU3RyaW5nJiYgZG9t
YWluUmVjZWl2aW5nVXNlckludGVyYWN0aW9uLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFN0cmlu
ZyYmIG9wZW5lckRvbWFpbik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NhbGxiYWNr
KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKIAogICAgIHZvaWQgcHJvY2Vz
c1dpbGxPcGVuQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
QEAgLTE1MCw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGlu
Z0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0
aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlciYmLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiwgUmVtb3ZlUHJldmFs
ZW50RG9tYWluc0hhbmRsZXImJik7CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0Nh
bGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXImJiwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
ciYmLCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERvbWFpbnNI
YW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCkBAIC0yMTAsNyArMjExLDcgQEAgcHJpdmF0ZToKIAogICAgIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciBtX3VwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcjsKICAgICBI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyIG1faGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcjsKLSAgICBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgbV9ncmFudFN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXI7CisgICAgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxl
ciBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXI7CiAgICAgUmVtb3ZlUHJldmFsZW50RG9tYWlu
c0hhbmRsZXIgbV9yZW1vdmVEb21haW5zSGFuZGxlcjsKIAogICAgIFdhbGxUaW1lIG1fZW5kT2ZH
cmFuZGZhdGhlcmluZ1RpbWVzdGFtcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjEsNSArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworICAgIEdyYW50U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KFN0cmluZyBkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24sIHVpbnQ2NF90IG9wZW5lclBh
Z2VJRCwgU3RyaW5nIG9wZW5lckRvbWFpbikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lucykKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIwLDEyICs0MjAsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdl
QWNjZQogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBjb250ZXh0SWQpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBjb250ZXh0SWQg
PSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RG
TW92ZShjYWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlE
b21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSwgMCk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNl
RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDAp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVz
dWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1Ymxp
YzoKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7
Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAjZW5k
aWYKIAogICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyOTQ3NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjA4LDEwICsxMjA4LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QWxsU3RvcmFnZUFjY2UKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPmdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1fc2Vzc2lvbklELCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spCiB7CiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKS0+Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUobV9zZXNzaW9uSUQsIHJl
c291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPmdyYW50
U3RvcmFnZUFjY2VzcyhtX3Nlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnMpCkBAIC0xNDQyLDggKzE0NDIsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVu
YWJsZVJlc291cmNlTG9hCiAgICAgICAgIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlv
bk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFp
bnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgfSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBo
YXNBY2Nlc3MpPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spIHsK
LSAgICAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKHJlc291cmNlRG9tYWlu
LCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKSB7CisgICAgICAg
IGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0sIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlKSB7CiAgICAgICAgIHJlbW92ZVByZXZhbGVudERvbWFpbnMoZG9tYWluc1Rv
UmVtb3ZlKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIyOTQ3NCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25O
b3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNr
KTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1l
SG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCAoYm9vbCk+JiYgY2FsbGJhY2spOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMjI5NDc0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDEwIEBAIFdlYlBy
b2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9KTsKIAor
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRHcmFudFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoY29uc3QgU3RyaW5nJiBkb21haW5SZWNlaXZpbmdV
c2VySW50ZXJhY3Rpb24sIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgY29uc3QgU3RyaW5nJiBvcGVu
ZXJEb21haW4pIHsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpHcmFudFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcihkb21haW5SZWNlaXZpbmdVc2VySW50ZXJhY3Rpb24sIG9wZW5lclBhZ2VJRCwg
b3BlbmVyRG9tYWluKSwgMCk7CisgICAgfSk7CisgICAgCiAgICAgR2lnYWNhZ2U6OmRpc2FibGVE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>